Windows Local Privilege Escalation
Mejor herramienta para buscar vectores de escalación de privilegios locales en Windows: WinPEAS
Teoría Inicial de Windows
Tokens de Acceso
Si no sabes qué son los Tokens de Acceso de Windows, lee la siguiente página antes de continuar:
Access TokensACLs - DACLs/SACLs/ACEs
Consulta la siguiente página para más información sobre ACLs - DACLs/SACLs/ACEs:
ACLs - DACLs/SACLs/ACEsNiveles de Integridad
Si no sabes qué son los niveles de integridad en Windows, deberías leer la siguiente página antes de continuar:
Integrity LevelsControles de Seguridad de Windows
Hay diferentes cosas en Windows que podrían impedirte enumerar el sistema, ejecutar ejecutables o incluso detectar tus actividades. Deberías leer la siguiente página y enumerar todos estos mecanismos de defensa antes de comenzar la enumeración de escalación de privilegios:
Windows Security ControlsInformación del Sistema
Enumeración de información de versión
Verifica si la versión de Windows tiene alguna vulnerabilidad conocida (verifica también los parches aplicados).
Version Exploits
Este sitio es útil para buscar información detallada sobre vulnerabilidades de seguridad de Microsoft. Esta base de datos tiene más de 4,700 vulnerabilidades de seguridad, mostrando la superficie de ataque masiva que presenta un entorno de Windows.
En el sistema
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas tiene watson integrado)
Localmente con información del sistema
Repositorios de Github de exploits:
Environment
¿Alguna credencial/información jugosa guardada en las variables de entorno?
Historial de PowerShell
Archivos de transcripción de PowerShell
Puedes aprender cómo activar esto en https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
PowerShell Module Logging
Los detalles de las ejecuciones de la tubería de PowerShell se registran, abarcando comandos ejecutados, invocaciones de comandos y partes de scripts. Sin embargo, los detalles completos de la ejecución y los resultados de salida pueden no ser capturados.
Para habilitar esto, sigue las instrucciones en la sección "Archivos de transcripción" de la documentación, eligiendo "Module Logging" en lugar de "Powershell Transcription".
Para ver los últimos 15 eventos de los registros de PowersShell, puedes ejecutar:
PowerShell Script Block Logging
Se captura un registro completo de la actividad y el contenido total de la ejecución del script, asegurando que cada bloque de código esté documentado a medida que se ejecuta. Este proceso preserva un rastro de auditoría integral de cada actividad, valioso para la forensía y el análisis de comportamientos maliciosos. Al documentar toda la actividad en el momento de la ejecución, se proporcionan información detallada sobre el proceso.
Los eventos de registro para el Script Block se pueden encontrar en el Visor de Eventos de Windows en la ruta: Application and Services Logs > Microsoft > Windows > PowerShell > Operational. Para ver los últimos 20 eventos, puedes usar:
Configuración de Internet
Unidades
WSUS
Puedes comprometer el sistema si las actualizaciones no se solicitan usando httpS sino http.
Comienzas verificando si la red utiliza una actualización WSUS no SSL ejecutando lo siguiente:
Si recibes una respuesta como:
Y si HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
es igual a 1
.
Entonces, es explotable. Si el último registro es igual a 0, entonces, la entrada de WSUS será ignorada.
Para explotar estas vulnerabilidades, puedes usar herramientas como: Wsuxploit, pyWSUS - Estos son scripts de exploits armados MiTM para inyectar actualizaciones 'falsas' en el tráfico WSUS no SSL.
Lee la investigación aquí:
WSUS CVE-2020-1013
Lee el informe completo aquí. Básicamente, esta es la falla que explota este bug:
Si tenemos el poder de modificar nuestro proxy de usuario local, y Windows Updates utiliza el proxy configurado en la configuración de Internet Explorer, por lo tanto, tenemos el poder de ejecutar PyWSUS localmente para interceptar nuestro propio tráfico y ejecutar código como un usuario elevado en nuestro activo.
Además, dado que el servicio WSUS utiliza la configuración del usuario actual, también usará su almacén de certificados. Si generamos un certificado autofirmado para el nombre de host de WSUS y agregamos este certificado al almacén de certificados del usuario actual, podremos interceptar tanto el tráfico WSUS HTTP como HTTPS. WSUS no utiliza mecanismos similares a HSTS para implementar una validación de tipo confianza en el primer uso en el certificado. Si el certificado presentado es confiable para el usuario y tiene el nombre de host correcto, será aceptado por el servicio.
Puedes explotar esta vulnerabilidad usando la herramienta WSUSpicious (una vez que esté liberada).
KrbRelayUp
Una vulnerabilidad de escalación de privilegios local existe en entornos de dominio de Windows bajo condiciones específicas. Estas condiciones incluyen entornos donde la firma LDAP no se aplica, los usuarios poseen derechos propios que les permiten configurar Delegación Constrainida Basada en Recursos (RBCD), y la capacidad de los usuarios para crear computadoras dentro del dominio. Es importante notar que estos requisitos se cumplen utilizando configuraciones predeterminadas.
Encuentra el exploit en https://github.com/Dec0ne/KrbRelayUp
Para más información sobre el flujo del ataque, consulta https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Si estos 2 registros están habilitados (el valor es 0x1), entonces los usuarios de cualquier privilegio pueden instalar (ejecutar) archivos *.msi
como NT AUTHORITY\SYSTEM.
Cargas útiles de Metasploit
Si tienes una sesión de meterpreter, puedes automatizar esta técnica utilizando el módulo exploit/windows/local/always_install_elevated
PowerUP
Usa el comando Write-UserAddMSI
de power-up para crear dentro del directorio actual un binario MSI de Windows para escalar privilegios. Este script genera un instalador MSI precompilado que solicita la adición de un usuario/grupo (por lo que necesitarás acceso GUI):
Solo ejecuta el binario creado para escalar privilegios.
MSI Wrapper
Lee este tutorial para aprender a crear un envoltorio MSI usando estas herramientas. Ten en cuenta que puedes envolver un ".bat" si solo quieres ejecutar líneas de comando.
MSI WrapperCrear MSI con WIX
Create MSI with WIXCrear MSI con Visual Studio
Genera con Cobalt Strike o Metasploit un nuevo payload TCP EXE de Windows en
C:\privesc\beacon.exe
Abre Visual Studio, selecciona Crear un nuevo proyecto y escribe "installer" en el cuadro de búsqueda. Selecciona el proyecto Setup Wizard y haz clic en Siguiente.
Dale un nombre al proyecto, como AlwaysPrivesc, usa
C:\privesc
para la ubicación, selecciona colocar solución y proyecto en el mismo directorio, y haz clic en Crear.Sigue haciendo clic en Siguiente hasta que llegues al paso 3 de 4 (elegir archivos para incluir). Haz clic en Agregar y selecciona el payload Beacon que acabas de generar. Luego haz clic en Finalizar.
Resalta el proyecto AlwaysPrivesc en el Explorador de Soluciones y en las Propiedades, cambia TargetPlatform de x86 a x64.
Hay otras propiedades que puedes cambiar, como el Autor y el Fabricante, que pueden hacer que la aplicación instalada parezca más legítima.
Haz clic derecho en el proyecto y selecciona Ver > Acciones Personalizadas.
Haz clic derecho en Instalar y selecciona Agregar Acción Personalizada.
Haz doble clic en Carpeta de Aplicación, selecciona tu archivo beacon.exe y haz clic en Aceptar. Esto asegurará que el payload beacon se ejecute tan pronto como se ejecute el instalador.
En las Propiedades de Acción Personalizada, cambia Run64Bit a True.
Finalmente, compílalo.
Si aparece la advertencia
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
, asegúrate de establecer la plataforma en x64.
Instalación de MSI
Para ejecutar la instalación del archivo .msi
malicioso en segundo plano:
Para explotar esta vulnerabilidad puedes usar: exploit/windows/local/always_install_elevated
Antivirus y Detectores
Configuraciones de Auditoría
Estas configuraciones deciden qué se está registrando, así que debes prestar atención.
WEF
Windows Event Forwarding, es interesante saber a dónde se envían los registros.
LAPS
LAPS está diseñado para la gestión de contraseñas de Administrador local, asegurando que cada contraseña sea única, aleatoria y actualizada regularmente en computadoras unidas a un dominio. Estas contraseñas se almacenan de forma segura en Active Directory y solo pueden ser accedidas por usuarios que han recibido permisos suficientes a través de ACLs, permitiéndoles ver las contraseñas de administrador local si están autorizados.
LAPSWDigest
Si está activo, las contraseñas en texto plano se almacenan en LSASS (Servicio de Subsistema de Autoridad de Seguridad Local). Más información sobre WDigest en esta página.
Protección LSA
A partir de Windows 8.1, Microsoft introdujo una protección mejorada para la Autoridad de Seguridad Local (LSA) para bloquear intentos de procesos no confiables de leer su memoria o inyectar código, asegurando aún más el sistema. Más información sobre la Protección LSA aquí.
Credentials Guard
Credential Guard se introdujo en Windows 10. Su propósito es proteger las credenciales almacenadas en un dispositivo contra amenazas como ataques de pass-the-hash.| Más información sobre Credentials Guard aquí.
Credenciales en caché
Las credenciales de dominio son autenticadas por la Autoridad de Seguridad Local (LSA) y utilizadas por los componentes del sistema operativo. Cuando los datos de inicio de sesión de un usuario son autenticados por un paquete de seguridad registrado, las credenciales de dominio para el usuario se establecen típicamente. Más información sobre Credenciales en caché aquí.
Usuarios y Grupos
Enumerar Usuarios y Grupos
Deberías verificar si alguno de los grupos a los que perteneces tiene permisos interesantes.
Grupos privilegiados
Si perteneces a algún grupo privilegiado, es posible que puedas escalar privilegios. Aprende sobre grupos privilegiados y cómo abusar de ellos para escalar privilegios aquí:
Privileged GroupsManipulación de tokens
Aprende más sobre qué es un token en esta página: Tokens de Windows. Consulta la siguiente página para aprender sobre tokens interesantes y cómo abusar de ellos:
Abusing TokensUsuarios registrados / Sesiones
Carpetas de inicio
Política de Contraseñas
Obtener el contenido del portapapeles
Procesos en Ejecución
Permisos de Archivos y Carpetas
Primero que nada, listar los procesos verifica si hay contraseñas dentro de la línea de comando del proceso. Verifica si puedes sobrescribir algún binario en ejecución o si tienes permisos de escritura en la carpeta del binario para explotar posibles ataques de DLL Hijacking:
Siempre verifica si hay posibles depuradores de electron/cef/chromium en ejecución, podrías abusar de ellos para escalar privilegios.
Verificando los permisos de los binarios de los procesos
Verificando los permisos de las carpetas de los binarios de los procesos (DLL Hijacking)
Minería de contraseñas en memoria
Puedes crear un volcado de memoria de un proceso en ejecución utilizando procdump de sysinternals. Servicios como FTP tienen las credenciales en texto claro en memoria, intenta volcar la memoria y leer las credenciales.
Aplicaciones GUI inseguras
Las aplicaciones que se ejecutan como SYSTEM pueden permitir a un usuario abrir un CMD o navegar por directorios.
Ejemplo: "Ayuda y soporte de Windows" (Windows + F1), buscar "símbolo del sistema", hacer clic en "Haga clic para abrir el símbolo del sistema"
Servicios
Obtenga una lista de servicios:
Permisos
Puedes usar sc para obtener información de un servicio
Se recomienda tener el binario accesschk de Sysinternals para verificar el nivel de privilegio requerido para cada servicio.
Se recomienda verificar si "Usuarios autenticados" pueden modificar algún servicio:
Puedes descargar accesschk.exe para XP aquí
Habilitar servicio
Si tienes este error (por ejemplo con SSDPSRV):
Error del sistema 1058 ha ocurrido. El servicio no puede ser iniciado, ya sea porque está deshabilitado o porque no tiene dispositivos habilitados asociados con él.
Puedes habilitarlo usando
Tenga en cuenta que el servicio upnphost depende de SSDPSRV para funcionar (para XP SP1)
Otra solución alternativa a este problema es ejecutar:
Modificar la ruta del binario del servicio
En el escenario donde el grupo de "Usuarios autenticados" posee SERVICE_ALL_ACCESS en un servicio, es posible modificar el binario ejecutable del servicio. Para modificar y ejecutar sc:
Reiniciar servicio
Los privilegios pueden ser escalados a través de varios permisos:
SERVICE_CHANGE_CONFIG: Permite la reconfiguración del binario del servicio.
WRITE_DAC: Habilita la reconfiguración de permisos, lo que lleva a la capacidad de cambiar configuraciones de servicio.
WRITE_OWNER: Permite la adquisición de propiedad y la reconfiguración de permisos.
GENERIC_WRITE: Hereda la capacidad de cambiar configuraciones de servicio.
GENERIC_ALL: También hereda la capacidad de cambiar configuraciones de servicio.
Para la detección y explotación de esta vulnerabilidad, se puede utilizar el exploit/windows/local/service_permissions.
Permisos débiles de los binarios de servicios
Verifica si puedes modificar el binario que es ejecutado por un servicio o si tienes permisos de escritura en la carpeta donde se encuentra el binario (DLL Hijacking). Puedes obtener cada binario que es ejecutado por un servicio usando wmic (no en system32) y verificar tus permisos usando icacls:
También puedes usar sc e icacls:
Modificar permisos del registro de servicios
Deberías verificar si puedes modificar algún registro de servicio. Puedes verificar tus permisos sobre un registro de servicio haciendo:
Se debe verificar si Authenticated Users o NT AUTHORITY\INTERACTIVE poseen permisos de FullControl
. Si es así, el binario ejecutado por el servicio puede ser alterado.
Para cambiar la ruta del binario ejecutado:
Permisos AppendData/AddSubdirectory del registro de servicios
Si tienes este permiso sobre un registro, esto significa que puedes crear subregistros a partir de este. En el caso de los servicios de Windows, esto es suficiente para ejecutar código arbitrario:
AppendData/AddSubdirectory permission over service registryRutas de servicio no entrecomilladas
Si la ruta a un ejecutable no está entre comillas, Windows intentará ejecutar cada final antes de un espacio.
Por ejemplo, para la ruta C:\Program Files\Some Folder\Service.exe, Windows intentará ejecutar:
Lista todos los caminos de servicio no entrecomillados, excluyendo aquellos que pertenecen a servicios integrados de Windows:
Puedes detectar y explotar esta vulnerabilidad con metasploit: exploit/windows/local/trusted\_service\_path
Puedes crear manualmente un binario de servicio con metasploit:
Acciones de Recuperación
Windows permite a los usuarios especificar acciones a tomar si un servicio falla. Esta función se puede configurar para apuntar a un binario. Si este binario es reemplazable, podría ser posible la escalada de privilegios. Más detalles se pueden encontrar en la documentación oficial.
Aplicaciones
Aplicaciones Instaladas
Verifique los permisos de los binarios (quizás pueda sobrescribir uno y escalar privilegios) y de las carpetas (DLL Hijacking).
Permisos de Escritura
Verifica si puedes modificar algún archivo de configuración para leer algún archivo especial o si puedes modificar algún binario que va a ser ejecutado por una cuenta de Administrador (schedtasks).
Una forma de encontrar permisos débiles en carpetas/archivos en el sistema es haciendo:
Ejecutar al inicio
Verifica si puedes sobrescribir algún registro o binario que va a ser ejecutado por un usuario diferente. Lee la siguiente página para aprender más sobre ubicaciones de autorun interesantes para escalar privilegios:
Privilege Escalation with AutorunsControladores
Busca posibles controladores raros/vulnerables de terceros.
PATH DLL Hijacking
Si tienes permisos de escritura dentro de una carpeta presente en PATH podrías ser capaz de secuestrar un DLL cargado por un proceso y escalar privilegios.
Verifica los permisos de todas las carpetas dentro de PATH:
Para más información sobre cómo abusar de esta verificación:
Writable Sys Path +Dll Hijacking PrivescRed
Recursos compartidos
hosts file
Verifique si hay otras computadoras conocidas codificadas en el archivo hosts.
Interfaces de Red y DNS
Puertos Abiertos
Verifique los servicios restringidos desde el exterior
Tabla de Enrutamiento
Tabla ARP
Reglas del Firewall
Consulta esta página para comandos relacionados con el Firewall (listar reglas, crear reglas, desactivar, desactivar...)
Más comandos para enumeración de red aquí