BeRoot para Windows – Proyecto de escalamiento de privilegios

BeRoot (s) es una herramienta de post-explotación para verificar las configuraciones erróneas comunes de Windows para encontrar una manera de escalar nuestros privilegios.
Se agregará al proyecto pupy como un módulo de post explotación (para que se ejecute en la memoria sin tocar el disco).

Excepto un método, esta herramienta solo se usa para detectar y no explotar. Si se encuentra algo, las plantillas podrían usarse para explotarlo. Para usarlo, simplemente cree un archivo test.bat ubicado al lado del servicio / DLL utilizado. Debería ejecutarlo una vez llamado. Dependiendo de los paquetes redistribuibles instalados en el host de destino, estos binarios pueden no funcionar.
Ejecutarlo

|====================================================================|
|                                                                    |
|                    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.
Directorio de escritura

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.
Directorio de escritura en% PATH%

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):

  1. Inicie el servicio Webclient (utilizado para conectarse a algunas participaciones) usando algunos trucos de magia (usando su UUID)
  2. Comience un servidor HTTP localmente
  3. Encuentre un servicio que se utilizará para desencadenar un hash SYSTEM NTLM .
  4. 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 )
  5. Comience este servicio
  6. Nuestro servidor HTTP inicia una negociación para obtener el hash SYSTEM NTLM
  7. El uso de este hash con SMB para ejecutar nuestra carga personalizada ( SMBrelayx se ha modificado para realizar esta acción)
  8. 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

Compartir