Metasploit: idle scanning y el IPID

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.
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
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 -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 -ya os digo que no he probado con ningún IDS activo- deberíamos estar protegidos contra los detectores de escaneos. Aún sabiendo que la curiosidad mató al gato... hacía tiempo que no me divertía tanto.
}:)
Referencias
- http://www.darkoperator.com/installing-metasploit-in-ubunt/
- http://www.offensive-security.com/metasploit-unleashed/
- http://nmap.org/book/idlescan.html
- http://www.variablenotfound.com/2007/02/escaneo-con-idle-scan.html