Cadenas identificativas y otros recursos (5)

Dos de las herramientas mas utilizadas para realizar rastreo de redes son: Nmap y Hping. Nmap es uno de los rastreadores de puertos mas utilizados por los responsables de seguridad, existen versiones para varios sistemas operativos entre ellos linux y windows.

Nmap esta disponible a través de la pagina www.insecure.org, siendo la descarga del mismo gratuita, ya que utiliza la licencia GPL. En caso de utilizar linux puede utilizar también para su descarga e instalación el gestor de paquetes de su distribución ya que es un programa muy utilizado en los sistemas linux. Aunque se maneja desde una consola en modo texto, también existen interfaces gráficos para el programa en las diferentes versiones del programa según el sistema operativo.

Hping es otra herramienta muy utilizada en entornos linux, aunque también existe para sistemas windows, proporciona el envío de paquetes de tipo TCP, UDP y ICMP. Permitiendo posteriormente analizar las respuestas obtenidas. La ultima versión del programa se denomina Hping2 y es descargable desde la web de Hping www.hping.org.

Rastrear redes

Muchas de las técnicas de escaneo de redes se basan en en el envío de paquetes tcp con ciertos flags o banderas activados. Para resaltar este apartado veamos un ejemplo de cabecera TCP.

Cabecera-TCP

Banderas (flags) de comunicación de TCP

La comunicación estándar del protocolo de control de transmisión (TCP) es controlada por banderas en la cabecera de los paquetes TCP (TCP Packet Header). Estas banderas gobiernan la conexión entre hosts o computadoras, dándoles instrucciones al sistema.

Las banderas son las siguientes:

1. Synchronize – alias “SYN”, se usa para iniciar una conexión entre hosts o computadoras.
2. Acknowledgement – alias “ACK”, se usa para establecer una conexión entre hosts.
3. Push – alias “PSH”, le indica al sistema recibidor a enviar toda la data almacenada inmediatamente.
4. Urgent – alias “URG”, le indica al sistema que la data contenida en el encabezado (header) se procese de inmediato.
5. Finish – alias “FIN”, le indica al sistema remoto que no hay mas transmisiones.
6. Reset – alias “RST”, se usa para reajustar (reset) la conexión.

Envío TCP de tipo connect()

Esta es la técnica más simple para verificar si un puerto de una maquina esta activo, ya que la función connect() es la que utiliza cualquier programa para conectarse a un puerto TCP, ya que es la forma estándar de establecer una conexión entre dos maquinas.

Envío con el puerto cerrado

Equipo A ————> SYN ————–> Equipo B

Equipo A <———— RST/ACK <——- Equipo B

Envío con el puerto abierto

Equipo A ————> SYN ————–> Equipo B

Equipo A <———— SYN /ACK <——- Equipo B

Equipo A ————> ACK ————–> Equipo B

Entre las ventajas a destacar de este tipo de análisis es que es muy rápido y que no se necesitan privilegios de superusuario o root. Las contramedidas necesarias para evitar este tipo de ataque consiste en una buena configuración del firewall o cortafuegos. Se ha de tener en cuenta que como se establece una conexión entre las dos maquinas es fácilmente detectable.

Un ejemplo de envío de este paquete utilizando Nmap seria el siguiente:

usuario:-# nmap –sT 192.168.1.1

Starting Nmap 5.10BETA1 at 2010-02-07 20:00 Hora estándar romance 

Nmap scan report for 192.168.1.1 

Host is up (0.0067s latency). 

Not shown: 989 filtered ports 

PORT     STATE SERVICE 

25/tcp   open  smtp 

80/tcp   open  http 

110/tcp  open  pop3 

119/tcp  open  nntp 

143/tcp  open  imap 

465/tcp  open  smtps 

563/tcp  open  snews 

587/tcp  open  submission 

993/tcp  open  imaps 

995/tcp  open  pop3s 

1723/tcp open  pptp 

MAC Address: 00:16:B6:XX:XX:XX (Cisco-Linksys) 

Nmap done: 1 IP address (1 host up) scanned in 46.69 seconds

Envío de paquetes TCP SYN

Al enviar un paquete con la bandera SYN activada un puerto que este escuchando, el puerto ha de responder a la petición de conexión. La forma de trabajo de este paquete es enviar un paquete TCP con la bandera SYN activa a un puerto que este escuchando, la maquina destino responderá con otro paquete con SYN/ACK al que la maquina origen no responderá, no finalizando así la conexión.

Envío con el puerto cerrado

Equipo A ————> SYN ————–> Equipo B

Equipo A <———— RST/ACK <——- Equipo B

Envío con el puerto abierto

Equipo A ————> SYN ————–> Equipo B

Equipo A <———— SYN /ACK <——- Equipo B

Equipo A ————> RST ————–> Equipo B

Un ejemplo de envío de este paquete utilizando nmap seria el siguiente:

Starting Nmap 5.10BETA1 ( http://nmap.org ) at 2010-03-01 09:37 Hora estándar romance 

Nmap scan report for 192.0.3.1 

Host is up (0.000032s latency). 

Not shown: 996 closed ports 

PORT     STATE SERVICE 

21/tcp   open  ftp 

23/tcp   open  telnet 

80/tcp   open  http 

1723/tcp open  pptp 

MAC Address: 00:0E:40:XX:XX:XX (Thomson Telecom Belgium) 

Nmap done: 1 IP address (1 host up) scanned in 10.98 seconds

Ejemplo utilizando hping:

root@nacho-desktop:~# hping3 -c 4 -S -p 80 192.0.3.1
  HPING 192.0.3.1 (eth0 192.0.3.1): S set, 40 headers + 0 data bytes

len=50 ip=192.0.3.1 ttl=64 id=39718 sport=80 flags=SA seq=0 win=4096 rtt=1.2 ms
  len=50 ip=192.0.3.1 ttl=64 id=39719 sport=80 flags=SA seq=1 win=4096 rtt=1.2 ms
  len=50 ip=192.0.3.1 ttl=64 id=39720 sport=80 flags=SA seq=2 win=4096 rtt=1.2 ms
  len=50 ip=192.0.3.1 ttl=64 id=39721 sport=80 flags=SA seq=3 win=4096 rtt=1.2 ms 

--- 192.0.3.1 hping statistic ---
  4 packets transmitted, 4 packets received, 0% packet loss

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

Entre las ventajas de este tipo de análisis se ha de destacar que es un tipo de análisis muy rápido y por otra parte que los paquetes con el flag (bandera) SYN activado suelen pasar más desapercibidos que cualquier otro flag. Por el contrario la desventaja es que se ha de tener permisos de superusuario para generar este tipo de paquetes en linux.

Envío de paquetes por medio de TCP ACK

Al enviar paquetes con este tipo de escaneo se pretende saber si una maquina esta en funcionamiento, mas que para descubrir sus puertos activos. Ya que en cualquier caso la maquina destino siempre va a retornar un paquete con el flag RST, lo cual hace que este indicando su presencia.

Envío con el puerto cerrado

Equipo A ————> ACK ————–> Equipo B

Equipo A <————       RST       <——- Equipo B

Envío con el puerto abierto

Equipo A ————> ACK ————–> Equipo B

Equipo A <—– RST: win<>0 ttl<64 <– Equipo B

Ejemplo utilizando hping:

root@nacho-desktop:~# hping3 -c 4 -A -p 135 192.0.3.1
  HPING 192.0.3.1 (eth0 192.0.3.1): A set, 40 headers + 0 data bytes

len=50 ip=192.0.3.1 ttl=64 id=39556 sport=135 flags=R seq=0 win=0 rtt=1.1 ms
  len=50 ip=192.0.3.1 ttl=64 id=39557 sport=135 flags=R seq=1 win=0 rtt=1.0 ms
  len=50 ip=192.0.3.1 ttl=64 id=39559 sport=135 flags=R seq=2 win=0 rtt=1.0 ms
  len=50 ip=192.0.3.1 ttl=64 id=39560 sport=135 flags=R seq=3 win=0 rtt=1.0 ms

--- 192.0.3.1 hping statistic --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1.2/1.2/1.2 ms 

 

 

Las ventajas de este tipo de escaneo es que se suele utilizar para realizar firewalking,

es decir intentar averiguar cuales son las políticas de reglas de un cortafuegos, dependiendo de las maquinas y puertos que se encuentren detrás del mismo. Una buena contramedida es hacer que el cortafuegos rechace cualquier tipo de conexión que no empiece por un paquete tcp con el flag SYN activado. La  desventaja es que no funciona igual dependiendo del fabricante de software.

Escaneo de puertos mediante TCP SYN ACK

Este tipo de escaneo es variable en su funcionamiento ya que depende de la implementación de la pila TCP de cada fabricante de sistemas operativos. El envío consiste en enviar un paquete TCP con los flag SYN y ACK activados, de esta forma se salta la norma de inicio de conexión de protocolo tcp, cuyo primer paquete ha de ser uno con el flag SYN activado. Si el puerto esta cerrado en la maquina destino se devuelve un paquete con el flag RST y no devolverá nada si el puerto esta abierto, aunque se ha de tener en cuenta que es posible que la conexión este filtrada por un cortafuegos y las respuestas no sean correctas.

Envío con el puerto cerrado

Equipo A ————> SYN/ACK ————–> Equipo B

Envío con el puerto abierto

Equipo A ————> SYN/ACK ————–> Equipo B

Equipo A <———– RST <———————- Equipo B

Ejemplo utilizando hping:

root@nacho-desktop:~# hping3 -c 4 –S -A -p 2049 192.0.3.1
  HPING 192.0.3.1 (eth0 192.0.3.1): SA set, 40 headers + 0 data bytes

len=50 ip=192.0.3.1 ttl=128 id=39556 sport=2049 flags=R seq=0 win=0 rtt=1.1 ms
  len=50 ip=192.0.3.1 ttl=128 id=39557 sport=2049 flags=R seq=1 win=0 rtt=1.0 ms
  len=50 ip=192.0.3.1 ttl=128 id=39559 sport=2049 flags=R seq=2 win=0 rtt=1.0 ms
  len=50 ip=192.0.3.1 ttl=64 id=39560 sport=2049 flags=R seq=3 win=0 rtt=1.0 ms

--- 192.0.3.1 hping statistic --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1.2/1.2/1.2 ms 

Entre las ventajas cabe destacar que este tipo de paquetes puede llegar a pasar a través de cortafuegos o ids sencillos y entre las desventajas se ha de indicar que no es fiable a la hora de determinar los puertos abiertos o silenciosos, también hay familias de sistemas operativos que ignoran este tipo de paquetes como OpenBSD, NetBSD, etc.

Envío de paquetes TCP FIN

El envío con el flag FIN es el ultimo que se envía en una conexión TCP normal, siendo utilizado para cerrar la conexión. Por lo general cuando un puerto cerrado recibe un paquete con el flag FIN activado, responde con un paquete RST contestando que el puerto esta cerrado, en caso de no recibir respuesta se puede deducir que el puerto esta abierto o en modo silencioso (el modo silencioso por definición ignora cualquier tipo de paquete recibido). Utilizando esta información se realiza un mapeo inverso, es decir saber o averiguar todos los puertos cerrados y de esta forma deducir los puertos abiertos. Este tipo de escaneo también conocido como Stealth scan y es uno de los escaneos silenciosos mas conocido.

Envío con el puerto cerrado

Equipo A ————> FIN ————–> Equipo B

Equipo A <———— RST/ACK <—— Equipo B

Envío con el puerto abierto

Equipo A ————> FIN ————–> Equipo B

Ejemplo utilizando Nmap:

root@nacho-desktop:~# nmap –sF 192.0.3.1

Starting Nmap 5.00 ( http://nmap.org ) at 2010-03-03 10:42 CET

Interesting ports on 192.0.3.1:

Not shown: 997 filtered ports

PORT   STATE SERVICE

21/tcp open  ftp

23/tcp open  telnet

80/tcp open  http

MAC Address: 00:0E:50:XX:XX:XX (Thomson Telecom Belgium)

Nmap done: 1 IP address (1 host up) scanned in 12.04 seconds

Ejemplo utilizando hping:

root@ubuntu:~# hping3 -c 4 -F -p 777 192.0.2.1
  HPING 192.0.2.1 (eth0 192.0.2.1): F set, 40 headers + 0 data bytes

len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=0 win=0 rtt=0.6 ms

len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=1 win=0 rtt=0.6 ms

len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=2 win=0 rtt=0.5 ms

len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=3 win=0 rtt=0.6 ms 

--- 192.0.2.1 hping statistic ---
  4 packets transmitted, 4 packets received, 0% packet loss

round-trip min/avg/max = 0.5/0.6/0.6 ms

Entre las ventajas a destacar esta que este tipo de paquetes son capaces de atravesar un cortafuegos que filtre paquetes SYN a puertos dirigidos, ya que si pasan los paquetes SYN, lógicamente en algún momento se habrá de cerrar la conexión. Entre sus desventajas están que no es un método fiable ya que puertos que figuren como abiertos es posible que estén en modo silencioso. Otra desventaja de este tipo de paquetes es que en los sistemas windows un puerto cerrado ignora los paquetes FIN, por lo que hacer un escaneo con SYN FIN generara una lista enorme de puertos abiertos aunque estén cerrados o en modo silencioso.

Envío de paquetes TCP NULL Flag

Este tipo de paquetes también se utilizan para realizar un mapeo inverso, ya que consiste en enviar al destino todos los flags (URG,ACK,PSH,RST,SYN,FIN) de un paquete con estado desactivado. De esta forma la maquina destino ha de responder a esta situación con el flag RST si el puerto se encuentra cerrado.

Envío con el puerto cerrado

Equipo A ————> FLAG NULL  ———> Equipo B

Equipo A <————  RST/ACK  <———– Equipo B

Envío con el puerto abierto

Equipo A ————> FLAG NULL ———-> Equipo B

Ejemplo utilizando NMap:

root@ubuntu:~# nmap -sN 192.0.2.1 

Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-03 10:31 CEST
  Interesting ports on 192.0.2.1:
  Not shown: 996 closed ports
  PORT   STATE         SERVICE
  21/tcp open|filtered ftp
  22/tcp open|filtered ssh
  23/tcp open|filtered telnet
  80/tcp open|filtered http
  MAC Address: 00:30:DA:XX:XX:XX (Comtrend CO.) 

Nmap done: 1 IP address (1 host up) scanned in 1.98 seconds

Ejemplo utilizando Hping:

root@ubuntu:~# hping3 -c 4 -p 777 192.0.2.1
HPING 192.0.2.1 (eth0 192.0.2.1): NO FLAGS are set, 40 headers + 0 data bytes
len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=0 win=0 rtt=0.6 ms
len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=1 win=0 rtt=0.6 ms
len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=2 win=0 rtt=0.6 ms
len=50 ip=192.0.2.1 ttl=255 DF id=0 sport=777 flags=RA seq=3 win=0 rtt=0.6 ms

--- 192.0.2.1 hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms

Entre las ventajas a destacar hay ids que no son capaces de detectar la existencia de este tipo de paquetes, por lo tanto es fácil hacer escaneos sin ser detectados  y como desventajas no funciona igual en todos los fabricantes y si no se recibe respuesta del puerto no quiere decir que este abierto ya que puede estar filtrado.

Envío de paquetes TCP XMAS

Este tipo de envío también es conocido como Christmas (Navidad), y consiste en enviar todos los flags TCP activados (URG,ACK,PSH,RST,SYN,FIN) y su funcionamiento es igual al ataque NULL Flag, en caso de que el puerto este cerrado se recibe una respuesta RST y se utiliza también para realizar mapeos inversos.

Envío con el puerto cerrado

Equipo A ————>  XMAS ———–> Equipo B

Equipo A <——–  RST/ACK  <———– Equipo B

Envío con el puerto abierto

Equipo A ————> XMAS ———-> Equipo B

Ejemplo con Nmap:

root@ubuntu:~# nmap -sX 192.0.2.1

Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-03 10:39 CEST
Interesting ports on 192.0.2.1:
Not shown: 996 closed ports
PORT   STATE         SERVICE
21/tcp open|filtered ftp
22/tcp open|filtered ssh
23/tcp open|filtered telnet
80/tcp open|filtered http
MAC Address: 00:30:DA:XX:XX:XX (Comtrend CO.)

Nmap done: 1 IP address (1 host up) scanned in 1.92 seconds

Ejemplo con hping:

root@ubuntu:~# hping3 -c 4 -F -S -R -P -A -U -X -Y -p 777 192.0.2.1
HPING 192.0.2.1 (eth0 192.0.2.1): RSAFPUXY set, 40 headers + 0 data bytes

--- 192.0.2.1 hping statistic ---
4 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

Entre las ventajas a destacar hay ids que no son capaces de detectar la existencia de este tipo de paquetes, por lo tanto es fácil hacer escaneos sin ser detectados  y como desventajas no funciona igual en todos los fabricantes y si no se recibe respuesta del puerto no quiere decir que este abierto ya que puede estar filtrado.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies