xchg2pwn

xchg2pwn


Entusiasta del reversing y desarrollo de exploits



Exploit Development

Setup Enviroment


En el presente post se llevara a cabo la configuración de un entorno que se utilizará en explotaciones posteriores en el kernel de windows, además como demostración para proximas explotaciones donde se omita la instalación de otros drivers se instalara un driver cargandolo como servicio usando OsrLoader en lugar de instalar la aplicación.


Virtual Machines


A diferencia de la explotación en modo usuario, para modo kernel ya que una máquina depura el kernel de la otra necesitaremos 2 máquinas virtuales:

• Debugger: Esta máquina será un Windows 10 x64 por defecto que se utilizará para depurar el kernel de la máquina depurada y así desarrollar el exploit.

• Debuggee: Esta máquina también será un Windows 10 x64 por defecto que se utilizará para depurar y explotar las vulnerabilidades en el driver.

Luego de instalar ambos windows deberiamos tener 2 máquinas, en este caso estan conectadas mediante un adaptador NAT y sus ips son:

• Debugger: 192.168.100.5

• Debuggee: 192.168.100.92


Debugger


Iniciemos con la máquina debugger, esta tendra instalado de primeras WinDbgX que se puede instalar desde la Microsoft Store sin problemas, como herramientas adicionales podriamos incluiir IDA Free para reversear el driver y Visual Studio para desarrollar el exploit, sin embargo lo que mas nos interesa es el debugger

En la máquina que se va a depurar habilitaremos el modo debug y en los ajustes haremos que se conecte al debugger por el puerto 50000 con la key 1.1.1.1

C:\Windows\system32> bcdedit /debug on  
La operación se completó correctamente.

C:\Windows\system32> bcdedit /dbgsettings net hostip:192.168.100.5 port:50000 key:1.1.1.1  
Key=1.1.1.1

C:\Windows\system32>

En la máquina debugger ejecutaremos WinDbg y en la pestaña Attach to kernel, añadimos el puerto y la key que especificamos antes en la máquina a depurar

Finalmente solo necesitamos reiniciar la máquina a depurar y automáticamente se conectara al debugger, podemos ejecutar g para dejar que arranque con normalidad

Connected to target 192.168.100.5 on port 50000 on local IP 192.168.100.5.
You can get the target MAC address by running .kdtargetmac command.
Connected to Windows 10 19041 x64 target
Kernel Debugger connection established.

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       SRV*c:\symbols*http://msdl.microsoft.com/download/symbols  
Symbol search path is: SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
Windows 10 Kernel Version 19041 MP (1 procs) Free x64
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406
Kernel base = 0xfffff806`55800000 PsLoadedModuleList = 0xfffff806`5642a790
nt!DebugService2+0x5:
fffff806`55c07445 cc              int     3

kd> g


Driver


Para finalizar solo nos queda instalar el driver, para ello usaremos OsrLoader, que se encuentra en la ruta kit\WNET\AMD64\FRE\ y una vez ahi seleccionamos el driver driver.sys que vayamos a explotar, basta con hacer clic en los botones Register Service y Start Service para instalarlo creando un servicio del mismo nombre

Ahora solo verificamos que el driver se haya instalado conrrectamente y configuramos el servicio driver para que inicie automaticamente con el sistema al encender

C:\Windows\system32> driverquery | findstr driver
driver         driver                   Kernel        02/07/2019 14:18:56  

C:\Windows\system32> sc config driver start=system
[SC] ChangeServiceConfig CORRECTO

C:\Windows\system32>

Con esta configuración tendriamos listo el entorno con ambas máquinas para explotar el driver, pero eso será en el siguiente post donde lo analizaremos poco a poco