Banner 1

Metasploit: idle scanning y el IPID

Hoy intentaremos saltarnos un sistema de detección de intrusos (IDS), al menos en teoría, porque no tengo ninguna maqueta montada para probarlo realmente. A la hora de usar nmap para comprobar la disponibilidad de algunos puertos de una Red es muy posible que cualquier IDS detecte los escaneos y emprenda algún tipo de acción.

El idle scanning se sirve del IPID para echarle el muerto del escaneo a otro ordenador zombie con lo que para hacerlo efectivo debemos -antes de nada- encontrar ese ordenador adecuado al que culpar.

Explicación del proceso

Para detectar si un puerto está abierto o cerrado, es necesario primero observar el IPID del zombie, enviar paquetes a la víctima haciéndole ver que realmente se los está enviando éste y, posteriormente, observar de nuevo el IPID utilizado por el intermediario. En función de los valores iniciales y finales obtenidos, se puede averiguar el estado del puerto destino.
  • El primer paso es enviar al zombie un paquete SYN+ACK, con objeto de que éste nos devuelva el paquete RST correspondiente, del cual tomaremos el IPID.
  • Acto seguido, se realiza una solicitud de conexión a la víctima, previa manipulación del paquete para que sea el zombie el que figure como origen del mismo. Al recibirlo, dado que estamos asumiendo que el puerto está abierto, la víctima envía de vuelta la confirmación de la conexión al que cree que es el solicitante, el zombie. Si el puerto estuviera cerrado la víctima devuelve al aparente emisor un paquete RST indicándole que no será posible establecer la conexión solicitada. El zombie recibe el paquete RST y lo ignora.
  • En caso de correcta conexión, el zombie recibe la confirmación de la conexión, pero como no es él el que la ha generado, responde a la víctima con una señal de reseteo (RST), incrementando su IPID.
  • De nuevo, pasado unos segundos, desde el atacante se vuelve a obtener el IPID del zombie de la misma forma que al comienzo, comprobando que ha sido incrementado en 2 unidades. De esta forma, se determina que el puerto destino del escaneo estaba abierto.
Teóricamente puede parecer algo lioso, aunque si se entiende el proceso el juego se vuelve mucho más divertido. Por suerte -o desgracia- todos estos pasos los podemos automatizar con Metasploit.

Encontrar un zombie

Pasando a la práctica, si queremos encontrar un zombie y utilizamos Metasploit es tan sencillo como usar el scanner que trae para ello:
msf auxiliary(writable) > use scanner/ip/ipidseq
msf auxiliary(ipidseq) > show options

Module options:

Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipidseq) > set THREADS 50
THREADS => 50
msf auxiliary(ipidseq) > run

[*] 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.2's IPID sequence class: Incremental!
[*] 192.168.1.10's IPID sequence class: Incremental!
[*] 192.168.1.104's IPID sequence class: Randomized
[*] 192.168.1.109's IPID sequence class: Incremental!
[*] 192.168.1.111's IPID sequence class: Incremental!
[*] 192.168.1.114's IPID sequence class: Incremental!
[*] 192.168.1.116's IPID sequence class: All zeros
[*] 192.168.1.124's IPID sequence class: Incremental!
[*] 192.168.1.123's IPID sequence class: Incremental!
[*] 192.168.1.137's IPID sequence class: All zeros
[*] 192.168.1.150's IPID sequence class: All zeros
[*] 192.168.1.151's IPID sequence class: Incremental!
[*] Auxiliary module execution completed
Dentro de esa red local que hemos escaneado todas las máquinas etiquetadas como Incremental! son ordenadores zombie que podremos utilizar para hacer el escaneo silencioso.

Escaneo silencioso o invisible

Ya hemos hecho lo más complicado, seleccionar la máquina que cargará con nuestras culpas, el resto es cosa de nmap, tan solo hemos de utilizar cualquier ordenador de los etiquetados como Incremental! anteriormente como argumento -sI de nmap:
# nmap -P0 -p- -sI 192.168.1.2 192.168.1.150
Starting Nmap 5.00 ( http://nmap.org ) at 2009-11-05 01:51 CET
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Interesting ports on 192.168.1.150:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-term-serv
MAC Address: 00:0C:29:41:F2:E8 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 5.56 seconds
La opción -P0 previene que nmap envíe un ping incial a la máquina destino. Esto disminuye la velocidad del escaneo (hay menos información disponible sobre los tiempos), pero asegura que ningún paquete sea enviado al destino desde nuestra verdadera dirección de IP.

La opción -p- se usa para escanear todos los puertos, no solo los "conocidos", pero el escaneo será más lento. El -sI es obvio, para usar el zombie en las peticiones.

Y teóricamente - deberíamos estar protegidos contra los detectores de escaneos.

FUENTE:
http://www.userlinux.net/metasploit-idle-scanning-y-el-ipid.html
http://www.metasploit.com/redmine/projects/framework/repository/revisions/8026/entry/modules/auxiliary/scanner/ip/ipidseq.rb
http://nmap.org/idlescan-es.html

4 comentarios:

d5ck dijo...

Que buen post pero tengo una preguta, hasta que punto existe la posibilidad de ser detectada nuestra maquina, como autora origianl del escaneo?? o no hay ninguna forma??

Anónimo dijo...

¿Realmente te estas saltando un ids, o estas haciendo que la "venganza" del ids recaiga sobre otro? Por que al fin y al cabo, lo único útil que le puedo ver a esto, es un tipo de ddos...

Yo -> ataco IDS
IDS -> responde zombie
Yo -> Ataco IDS
IDS -> Crea regla firewall bloqueo zombie

Y si tuviese algún tipo de dependencia uno de otro, gracias a la regla estarían bloqueados, más allá creo que no podríamos llegar. Si bien creo que esto podría ser funcional sin ids y solo con firewall debido a que si, sacamos que puertos nos permiten conectar..

Bueno, quizá me equivoco, por lo que si me podrías sacar de dudas sobre lo que dije te lo agradecería.

Unknown dijo...

Bueno en realidad si estoy en anonimato porque debe tener en cuenta las lineas de paquetes y flags.

Como sabemos el ids y firewall no detecta la linea donde se mandara el paquete syn!ack el detectara un simple zombie intentando detectar un ipid.

Tambien debe tener en cuenta , nosotros con este escaneo solo buscamos detectar maquinas y servicios en la red no atacar directamente el ids es solo engañarlo para que no detecte el escaneo.

Ejemplo

si mando un syn : el ids detecta el paquete de sincronizacion y pone en marcha su estudio xD.

En cambio sin mando un ipid con un syn no me lo detectara y seguira "anonimo" el flag por eso hablamos de lineas :D

Espero que haya quedado entendido , cualquier cosa me avisa.

saludos

Unknown dijo...

d5ck

Hay que partir de varias cosas y es la falsificacion y suplantacion de direccion ip origen y escaneos "ocultos".

Normalmente seria indectable , pero con una correcta administracion y configuracion de un firewall y ids podemos evitar que se presenten estos ataques.

Me paresio escuchar que los IPS ya vienen con este tipo de deteccion, pero no estoy seguro asi que no lo confirmo.

En conclusion:

Si la configuracion no es adecuada podremos realizar el ataque y lograr nuestro objetivo(anonimato).

Pero si nos encontramos con un administrador "piloso" ya no podremos ejecutarlo xD.

saludos

Powered by Bad Robot
Helped by Blackubay