jump to navigation

Técnicas de escaneo de puertos con nmap y hping Febrero 24, 2008

Posted by Root Secure in Programas.
Tags: , , , , , ,
2 comments

Buenas.

Había dejado el blog abandonado por ciertos motivos y por eso no lo he actualizado. Ahora que estoy con ganas publico este manual de sondeo de puertos que traduje hace unas semanas para New Bytes

El autor original no soy yo, yo solo lo traduje del inglés al español. :D

Si no quieres leerlo en el blog, aquí tienes la versión descargable:

http://www.badongo.com/file/7533134 —> en .doc

http://www.megaupload.com/es/?d=AMIA231C —> en .pdf

——————————————————————————————————————————–

TÉCNICAS DE ESCANEO DE PUERTOS

 

 

By Kris Katterjohn

 

Traducción by Ther0x (iniciada el 28/01/08 – concluida el 29/01/08)

 

**Nota del traductor: Los nombres de los tipos de escaneo los considero nombres propios, así que no están traducidos. **

 

03/08/07

Contenido

0.0 Este Paper

1.0 Tipos de escaneo de puertos

1.1 TCP Connect() Scan

1.2 TCP SYN Scan

1.3 TCP FIN Scan

1.4 TCP XMAS Scan

1.5 TCP NULL Scan

1.6 TCP Window Scan

1.7 UDP Scan

2.0 Otros tipos de escaneo

2.1 TCP ACK Scan

2.2 IP Protocol Scan

0.0 ESTE PAPER

 

Escribí este paper para explicar, y para ser una referencia general, de varios puertos populares.

 

Técnicas de escaneo.

He puesto pequeños esquemas para ayudar a enseñar lo que está pasando en la mayoría de las secciones. También he puesto ejemplos usando el Nmap Security Scanner y el Hping3. Las 2 son herramientas extremadamente poderosas, y me han enseñado mucho.

 

Nmap: http://insecure.org/nmap

Hping: http://hping.org

 

 

Este paper asume que tienes conocimientos básicos del entorno TCP/IP (como están relacionados TCP y UDP, como usan IP, que direcciones IP y números de puertos hay, y algún conocimiento de los diferentes indicadores TCP).

Si quieres una lectura en profundidad y bien escrita del entorno TCP/IP te sugiero los volúmenes de TPC/IP Illustrated de Richard Stevens.

 

 

1.0 TIPOS DE ESCANEO DE PUERTOS

1.1 TCP CONNECT() SCAN

Esto usa la llamada del sistema connect()para dejar al sistema operativo establecer la conexión TCP. Esto suele ser más lento que escanear usando paquetes directos (raw) porque tiene que pasar a través de la negociación en 3 pasos para abrir puertos.

Esto significa que se usan más tiempo y más paquetes para conseguir la misma información que el TCP SYN Scan. Además, este scan tiene muchas más posibilidades de ser logeado por el host remoto.

 

 

 

 

 

 

************************************************************

Nota del Traductor: No traduciré los resultados del nmap ya que estos son originalmente en inglés y me parecen demasiado obvios como para tener que traducirlo. Además soy un vago y no me apetece traducir tanto. :P

************************************************************

 

$ nmap -sT 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 08:49 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1702 closed ports

PORT STATE SERVICE

80/tcp open http

5190/tcp open aol

Nmap finished: 1 IP address (1 host up) scanned in 1.459 seconds

 

1.2 TCP SYN SCAN

Esto envía paquetes SYN directos a un host remoto y espera una respuesta.

Un puerto abierto responderá con un paquete SYN/ACK, mientras que uno cerrado responderá con un RST. Si la respuesta no vuelve, lo más probable es que esté filtrado (probablemente habrá un firewall en algún lugar del camino).

 

*****************************************************************

Nota del traductor: Los esquemas los he puesto en color verde para diferenciarlos un poco del resto del texto.

*****************************************************************

 

Abierto:

192.168.10.5 -> 192.168.10.1 SYN

192.168.10.5 <- 192.168.10.1 SYN/ACK

Cerrado:

192.168.10.5 -> 192.168.10.1 SYN

192.168.10.5 <- 192.168.10.1 RST/ACK

Filtrado:

192.168.10.5 -> 192.168.10.1 SYN

<sin respuesta>

 

# nmap -sS 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 08:50 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1702 closed ports

PORT STATE SERVICE

80/tcp open http

5190/tcp open aol

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 1.616 seconds

 

 

# hping3 -c 1 –syn -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=5840 rtt=1.8 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 1.7/1.7/1.7 ms

 

 

# hping3 -c 1 –syn -p 81 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): S set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=81 flags=RA seq=0 win=0 rtt=1.8 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 1.7/1.7/1.7 ms

 

 

1.3 TCP FIN SCAN

Este scan puede decirnos si un puerto está cerrado, pero no puede distinguir entre puertos abiertos y filtrados porque no debería recibir una respuesta de cualquier modo.

La idea es enviar un paquete FIN y si recibimos un RST sabremos que el puerto está cerrado.

Si no está cerrado el host remoto no debería responder, así que está abierto o cerrado.

Este scan puede saltarse varios firewalls “non-stateful”.

 

************************************************************

Nota del Traductor: “non-stateful”. No sé bien como traducir eso. :S

 

Mejor la explicación:

 

Un firewall “stateful” registra el estado de todas las conexiones y distingue paquetes legítimos para diferentes tipos de conexiones. Si los paquetes no concuerdan con un estado de conexión conocido serán rechazados.

Uno “non-stateful” simplemente no lo hace. :D

 

*************************************************************

 

El problema es que algunos sistemas no siguen el RFC y envían RST incluso si está abierto.

 

Abierto o filtrado:

192.168.10.5 -> 192.168.10.1 FIN

<Sin respuesta>

Closed:

192.168.10.5 -> 192.168.10.1 FIN

192.168.10.5 <- 192.168.10.1 RST/ACK

 

 

# nmap -sF 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 08:51 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1702 closed ports

PORT STATE SERVICE

80/tcp open|filtered http

5190/tcp open|filtered aol

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 2.812 seconds

# hping3 -c 1 –fin -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): F set, 40 headers + 0 data bytes

— 192.168.10.1 hping statistic —

1 packets tramitted, 0 packets received, 100% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

# hping3 -c 1 –fin -p 81 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): F set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=81 flags=RA seq=0 win=0 rtt=1.6 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 1.6/1.6/1.6 ms

 

 

1.4 TCP XMAS SCAN

Este es lo mismo que el FIN Scan, a excepción de que usa FIN, URG y PHG en vez de solo FIN.

 

Abierto o filtrado:

192.168.10.5 -> 192.168.10.1 FIN/URG/PSH

<Sin respuesta>

Cerrado:

192.168.10.5 -> 192.168.10.1 FIN/URG/PSH

192.168.10.5 <- 192.168.10.1 RST/ACK

 

 

# nmap -sX 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 08:54 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1702 closed ports

PORT STATE SERVICE

80/tcp open|filtered http

5190/tcp open|filtered aol

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 2.491 seconds

 

 

# hping3 -c 1 –fin –push –urg -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): FPU set, 40 headers + 0 data bytes

— 192.168.10.1 hping statistic —

1 packets tramitted, 0 packets received, 100% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

# hping3 -c 1 –fin –push –urg -p 81 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): FPU set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=81 flags=RA seq=0 win=0 rtt=2.2 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 1.7/1.7/1.7 ms

 

 

 

 

 

 

 

 

 

 

 

1.5 TCP NULL SCAN

Esto es como el FIN Scan y el XMAS Scan, excepto porque no enciende ningún indicador para nada.

 

Abierto o filtrado:

192.168.10.5 -> 192.168.10.1 (NONE)

<Sin respuesta>

Cerrado:

192.168.10.5 -> 192.168.10.1 (NONE)

192.168.10.5 <- 192.168.10.1 RST/ACK

 

 

# nmap -sN 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 08:57 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1702 closed ports

PORT STATE SERVICE

80/tcp open|filtered http

5190/tcp open|filtered aol

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 2.673 seconds

 

 

# hping3 -c 1 -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): NO FLAGS are set, 40 headers + 0 data bytes

— 192.168.10.1 hping statistic —

1 packets tramitted, 0 packets received, 100% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

# hping3 -c 1 -p 81 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): NO FLAGS are set, 40 headers + 0 data bytes

len=40 ip=192.168.10.1 ttl=64 DF id=0 sport=80 flags=RA seq=0 win=0 rtt=0.1 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 0.1/0.1/0.1 ms

 

 

1.6 TCP WINDOW SCAN

Esto es lo mismo que el TCP ACK Scan (mira la sección 3.1), excepto porque intenta diferenciar entre puertos abiertos y cerrados. Esto se hace examinando el campo Window de la cabecera TCP del paquete RST recibido. Algunos sistemas usan un valor Window positivo para los puertos abiertos, y 0 para los cerrados.

Menos sistemas hacen exactamente lo opuesto. Si escaneas y obtienes toneladas de puertos abiertos y solo unos pocos cerrados, es posible que sea lo contrario.

Y algunos sistemas tampoco lo hacen (como el que estoy escaneando debajo), así que no puedes creértelo siempre.

 

*************************************************************

 

Nota del Traductor: No tengo muy claro cuál es el sentido de la última frase. Espero que se entienda bien lo que ha querido decir. ;)

 

*************************************************************

 

 

Abierto:

192.168.10.5 -> 192.168.10.1 ACK

192.168.10.5 <- 192.168.10.1 RST [Window size > 0]

Cerrado:

192.168.10.5 -> 192.168.10.1 ACK

192.168.10.5 <- 192.168.10.1 RST [Window size == 0]

Filtrado:

192.168.10.5 -> 192.168.10.1 ACK

<Sin respuesta>

 

 

# nmap -sW 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 11:02 CST

All 1704 scanned ports on 192.168.10.1 (192.168.10.1) are closed

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 1.500 seconds

 

 

# hping3 -c 1 –ack -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): A set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=80 flags=R seq=0 win=0 rtt=1.7 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 5.2/5.2/5.2 ms

 

 

1.7 UDP SCAN

TCP puede ser un protocolo extremadamente popular, pero UDP también lo comparte. (**N. del T: que también es popular.)

 

Servicios como DNS y DHCP lo usan.

La idea es enviar un paquete UDP y esperar una respuesta. Si recibimos un ICMP Port Unrecheable significa que el puerto está cerrado. Si recibimos otro ICMP Unrecheables, lo más probable es que esté filtrado.

 

Si realmente recibimos una respuesta UDP, está abierto. De otro modo, también está abierto (y no responde) o filtrado.

 

Abierto:

192.168.10.5 -> 192.168.10.1 [UDP]

192.168.10.5 <- 192.168.10.1 [UDP]

Abierto o filtrado:

192.168.10.5 -> 192.168.10.1 [UDP]

<Sin respuesta>

Cerrado:

192.168.10.5 -> 192.168.10.1 [UDP]

192.168.10.5 <- 192.168.10.1 [ICMP Port Unreachable]

Filtrado:

192.168.10.5 -> 192.168.10.1 [UDP]

192.168.10.5 <- 192.168.10.1 [Misc. ICMP Unreachable]

 

 

# nmap -sU 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 09:18 CST

Interesting ports on 192.168.10.1 (192.168.10.1):

Not shown: 1485 closed ports

PORT STATE SERVICE

53/udp open|filtered domain

67/udp open|filtered dhcps

2049/udp open|filtered nfs

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 1489.293 seconds

 

 

# hping3 -c 1 –udp -p 53 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): udp mode set, 28 headers + 0 data bytes

— 192.168.10.1 hping statistic —

1 packets tramitted, 0 packets received, 100% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

# hping3 -c 1 –udp -p 54 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): udp mode set, 28 headers + 0 data bytes

ICMP Port Unreachable from ip=192.168.10.1 name=192.168.10.1

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

2.0 OTROS TIPOS DE ESCANEO

Esta sección es para scans que no comprueban los puertos abiertos o cerrados, pero son similares y todavía muy útiles.

 

2.1 TCP ACK SCAN

Los firewall son un dolor cuando intentamos escanear puertos. Si estamos usando el SYN scan en un host bajo firewall, probablemente no recibiremos el SYN/ACK o RST, así que no sabremos que está pasando.

Ahí es donde entra el ACK Scan.

No nos dice si un puerto está abierto o cerrado, pero intenta decirnos si el firewall es “stateful” (** otra vez esa put* palabra xD ) (guarda logs de las conexiones) o no (probablemente solo rechaza los paquetes SYN entrantes).

Si el firewall es non-stateful y solo tira paquetes SYN, un ACK entrará porque parece una respuesta a algo desde el otro lado.

Si un puerto abierto o cerrado recibe un ACK inesperado, debe enviar un RST.

Así que si recibimos un RST significa que el firewall es non-stateful (o que no hay ninguno). Si no recibimos una respuesta, o algún ICMP unrecheable es enviado, está probablemente filtrado.

 

No filtrado (obtenido a través de firewall):

192.168.10.5 -> 192.168.10.1 ACK

192.168.10.5 <- 192.168.10.1 RST

Filtrado:

192.168.10.5 -> 192.168.10.1 ACK

192.168.10.5 <- 192.168.10.1 [Misc. ICMP Unreachable]

OR

<Sin respuesta>

 

 

# nmap -sA 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 09:03 CST

All 1704 scanned ports on 192.168.10.1 (192.168.10.1) are UNfiltered

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 2.468 seconds

 

 

# hping3 -c 1 –ack -p 80 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): A set, 40 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 DF id=0 sport=80 flags=R seq=0 win=0 rtt=1.7 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 5.2/5.2/5.2 ms

 

 

 

 

2.2 IP PROTOCOL SCAN

Este es un scan “guay” que busca protocolos IP soportados más que puertos abiertos.

Es muy parecido al UDP Scan, pero envía paquetes IP directos (raw) con valores diferentes en el campo del protocolo en la cabecera.

Y en vez de buscar el ICMP Port Unreachables, busca el ICMP Protocol Unreachable para decir si está cerrado (o no soportado). Si recibimos una respuesta en el mismo protocolo, está abierto (o soportado).

Si obtenemos diferentes ICMP Unreachables, probablemente está filtrado. Si no obtenemos nada está tanto abierto (y no responde) o filtrado.

 

Soportado:

192.168.10.5 -> 192.168.10.1 [Some IP protocol]

192.168.10.5 <- 192.168.10.1 [Same IP protocol]

Soportado o filtrado:

192.168.10.5 -> 192.168.10.1 [Some IP protocol]

192.168.10.5 <- 192.168.10.1 [Misc. ICMP Unreachable]

OR

<Sin respuesta>

No soportado:

192.168.10.5 -> 192.168.10.1 [Some IP protocol]

192.168.10.5 <- 192.168.10.1 [ICMP Protocol Unreachable]

 

 

# nmap -sO 192.168.10.1

Starting Nmap 4.21ALPHA2 ( http://insecure.org ) at 2007-03-07 09:03 CST

Interesting protocols on 192.168.10.1 (192.168.10.1):

Not shown: 252 open|filtered protocols

PROTOCOL STATE SERVICE

1 open icmp

2 closed igmp

6 open tcp

17 open udp

MAC Address: 00:0C:E5:4F:0F:AF (Motorola BCS)

Nmap finished: 1 IP address (1 host up) scanned in 5.781 seconds

 

 

# hping3 -c 1 –rawip –ipproto 0 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): raw IP mode set, 20 headers + 0 data bytes

— 192.168.10.1 hping statistic —

1 packets tramitted, 0 packets received, 100% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

# hping3 -c 1 –icmp 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): icmp mode set, 28 headers + 0 data bytes

len=46 ip=192.168.10.1 ttl=64 id=40509 icmp_seq=0 rtt=1.6 ms

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 18.6/18.6/18.6 ms

 

 

# hping3 -c 1 –rawip –ipproto 2 192.168.10.1

HPING 192.168.10.1 (eth0 192.168.10.1): raw IP mode set, 20 headers + 0 data bytes

ICMP Protocol Unreachable from ip=192.168.10.1 name=192.168.10.1

— 192.168.10.1 hping statistic —

1 packets tramitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 0.0/0.0/0.0 ms

 

 

 

 

**********************************************************************

 

Yeeeesss!!!! Acabé!!!!

 

Tiempo aproximado que me ha llevado: Unas 2 horas. 2 horas perdidas de dormir.

 

Lo siento por los fallos de traducción, pero aunque el inglés se me da bien, no soy un pro ^^ . No he estudiado filología inglesa ni suelo hablar con ingleses. Además en este texto había muchas palabras técnicas que no he sabido si traducir o si dejar como estaban.

 

Es posible que me haya saltado algo al traducir, así que perdón por si acaso

 

El que entienda de inglés y vea algún fallo que me lo diga eh xD

 

Si descargas esta traducción, pon aunque solo sea un mísero “gracias”, que ya que lo traduzco gratis me merezco que me lo agradezcan ¬¬

 

 

Translated by Ther0x for NB and Root Secure (traducido por Ther0x para New Bytes y Root Secure xD)