BeRoot para Windows – Proyecto de escalamiento de privilegios
|====================================================================|
| |
| Windows Privilege Escalation |
| |
| ! BANG BANG ! |
| |
|====================================================================|
usage: beRoot.exe [-h] [-l] [-w] [-c CMD]
Windows Privilege Escalation
optional arguments:
-h, --help show this help message and exit
-l, --list list all softwares installed (not run by default)
-w, --write write output
-c CMD, --cmd CMD cmd to execute for the webclient check (default: whoami)
Todos los métodos de detección se describen en el siguiente documento.
Ruta que contiene espacio sin comillas
Considere la siguiente ruta de archivo:
C:\Program Files\Some Test\binary.exe
Si la ruta contiene espacios y sin comillas, Windows trataría de localizar y ejecutar programas en el siguiente orden:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\binary.exe
Siguiendo este ejemplo, si la carpeta » C: \ » es escribible, sería posible crear un binario ejecutable malicioso llamado » Program.exe«. Si se ejecuta » binary.exe » con alto privilegio, podría ser una buena forma de escalar nuestro privilegio.
Nota: BeRoot realizó estas comprobaciones en cada ruta de servicio, tareas programadas y claves de inicio ubicadas en HKLM.
Cómo explotar :
la ruta vulnerable se ejecuta como:
- un servicio : crear un servicio malicioso (o compilar la plantilla de servicio)
- un ejecutable clásico : crea tu propio ejecutable.
Considere la siguiente ruta de archivo:
C:\Program Files\Some Test\binary.exe
Si el directorio raíz de » binary.exe » es escribible ( «C: \ Program Files \ Some Test» ) y se ejecuta con alto privilegio, podría usarse para elevar nuestros privilegios.
Nota : BeRoot realizó estas comprobaciones en cada ruta de servicio, tareas programadas y claves de inicio ubicadas en HKLM.
Cómo explotar :
- El servicio no se está ejecutando:
- Reemplace el servicio legítimo por uno propio, reinícielo o verifique cómo se desencadena (al reiniciar, cuando se inicia otro proceso, etc.).
- El servicio se está ejecutando y no se pudo detener:
- La mayor parte de la explotación será así, comprueba el secuestro de dll e intenta reiniciar el servicio utilizando técnicas anteriores.
Esta técnica afecta la siguiente versión de Windows:
6.0 => Windows Vista / Windows Server 2008
6.1 => Windows 7 / Windows Server 2008 R2
6.2 => Windows 8 / Windows Server 2012
En una instalación clásica de Windows, cuando las DLL son cargadas por un binario, Windows intentaría ubicarlo usando los siguientes pasos:
- Directory where the binary is located
- C:\Windows\System32
- C:\Windows\System
- C:\Windows\
- Current directory where the binary has been launched
- Directory present in %PATH% environment variable
Si un directorio en la variable% PATH% es escribible, sería posible realizar ataques de secuestro de DLL. Entonces, el objetivo sería encontrar un servicio que cargue una DLL no presente en cada una de estas rutas. Este es el caso del servicio predeterminado » IKEEXT » que carga el inexistente » wlbsctrl.dll «.
Cómo explotar : cree una DLL maliciosa llamada » wlbsctrl.dll » (use la plantilla DLL ) y agréguela a la ruta de escritura listada en la variable% PATH%. Inicie el servicio » IKEEXT «. Para iniciar el servicio IKEEXT sin privilegios altos, una técnica descrita en la revista francesa MISC 90 explica el siguiente método:
Cree un archivo de la siguiente manera:
C:\Users\bob\Desktop>type test.txt
[IKEEXTPOC]
MEDIA=rastapi
Port=VPN2-0
Device=Wan Miniport (IKEv2)
DEVICE=vpn
PhoneNumber=127.0.0.1
Utilice el binario » rasdial » para iniciar el servicio IKEEXT. Incluso si la conexión falla, el servicio debería haberse iniciado.
C:\Users\bob\Desktop>rasdial IKEEXTPOC test test /PHONEBOOK:test.txt
MS16-075
Para el usuario francés, recomiendo el artículo escrito en el MISC 90 que explica en detalle cómo funciona.
Esta vulnerabilidad ha sido corregida por Microsoft con MS16-075, sin embargo, muchos servidores aún son vulnerables a este tipo de ataque. Me he inspirado del C ++ POC disponible aquí
Aquí hay algunas explicaciones (no en detalles):
- Inicie el servicio Webclient (utilizado para conectarse a algunas participaciones) usando algunos trucos de magia (usando su UUID)
- Comience un servidor HTTP localmente
- Encuentre un servicio que se utilizará para desencadenar un hash SYSTEM NTLM .
- Habilite el seguimiento de archivos en este servicio modificando su clave de registro para que apunte a nuestro servidor web ( \\ 127.0.0.1@port \ tracing )
- Comience este servicio
- Nuestro servidor HTTP inicia una negociación para obtener el hash SYSTEM NTLM
- El uso de este hash con SMB para ejecutar nuestra carga personalizada ( SMBrelayx se ha modificado para realizar esta acción)
- Limpie todo (pare el servicio, limpie el regritry, etc.).
Cómo explotar : BeRoot se da cuenta de esta explotación, cambia la opción » -c » para ejecutar un comando personalizado en el host vulnerable.
beRoot.exe -c "net user Zapata LaLuchaSigue /add"
beRoot.exe -c "net localgroup Administrators Zapata /add"
La clave de registro AlwaysInstallElevated
AlwaysInstallElevated es una configuración que permite a los usuarios sin privilegios la capacidad de ejecutar Microsoft Windows Installer Package Files ( MSI ) conpermisoselevados ( SYSTEM ). Para permitirlo, dos entradas de registro deben establecerse en 1 :
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
Cómo explotar : crea un binario msi malicioso y ejecútalo.
Archivos de instalación desatendida
Este archivo contiene todas las configuraciones configuradas durante el proceso de instalación, algunas de las cuales pueden incluir la configuración de cuentas locales, incluidas las cuentas de administrador. Estos archivos están disponibles en la siguiente ruta:
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\System32\Sysprep\unattend.xml
C:\Windows\System32\Sysprep\Panther\unattend.xml
Cómo explotar : abra el archivo unattend.xml para verificar si hay contraseñas presentes en él. Debería verse así:
<UserAccounts>
<LocalAccounts>
<LocalAccount>
<Password>
<Value>RmFrZVBhc3N3MHJk</Value>
<PlainText>false</PlainText>
</Password>
<Description>Local Administrator</Description>
<DisplayName>Administrator</DisplayName>
<Group>Administrators</Group>
<Name>Administrator</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
Otras posibles configuraciones erróneas
Se realizan otras pruebas para verificar si es posible:
- Modificar un servicio existente
- Crea un nuevo servicio
- Modificar una clave de inicio (en HKLM)
- Modificar el directorio donde están almacenadas todas las tareas programadas: » C: \ Windows \ system32 \ Tasks «
Fuente: Kitploit.com