domingo, 12 de agosto de 2012

Escaneo de red, detección de hosts, puertos y servicios con Nmap (I de III)

Introducción

Nmap es una herramienta de escaneo de redes, muy útil y popular utilizada principalmente en auditorias de seguridad, aunque también es útil para el día a día en la administración de redes y sistemas, ayudando a la  detección, auditoria e inventariado de equipos en red (las redes deben ser de nuestra propiedad y/o disponer de los permisos necesarios para no estar infringiendo la ley...).

Permite realizar escaneo de redes y  detectar los hosts activos, que puertos tiene abiertos, versiones de los servicios que corren en los puertos,  estimar que sistema operativo tienen, etc. El alcance de este post es mostrar solo los principales tipos de escaneo mas básico y las técnicas de  detección de sistema operativo y servicios abiertos, para uso mas avanzado y aplicado a la detección de vulnerabilidades por favor revisad la pagina de nmap y otros posts mas especializados en la red.  

Un poco de teoría ...

Para entender las técnicas empleadas para el escaneo de hosts y puertos , es importante conocer el proceso de conexión TCP three way handshake  y el protocolo de control de mensajes ICMP (Internet Control Message Protocol). 

Three way handshake (conexión TCP) 

Este proceso de conexiones TCP, está basado en el intercambio de tres tipos de paquetes especiales en el siguiente orden SYN (1), SYN-ACK(2) y ACK(3).


En primer lugar el host A enviará un paquete SYN para pedir establecer una conexión al host B, el host B responderà con un SYN-ACK para comunicar al host A que ha recivido la petición de inicio de conexión, por útlimo cuando el host A reciva el paquete SYN-ACK del host B le responderá confirmando que lo ha recibido correctamente con un paquete ACK, una vez finalizado estos tres pasos la conexión TCP quedará establecida.
  • host A --> SYN --> host B (para iniciar sesión host A envia paquete SYN a host B)
  • host A <-- SYN-ACK <--host B (host B responde con un SYN-ACK al host A conforme ha recibido la petición de inicio de sesión)
  • host A -->ACK--> host B (host A confirma finalmente la recepción del SYN-ACK estableciendo la conexión TCP)

ICMP (Internet Control Message Protocol) 

ICMP gestiona mensajes de control en el protocolo IP de la capa de red del modelo OSI. Aunque trabaja en la capa de red principalmente, las aplicaciones ping y traceroute permiten ejecutar directamente peticiones ICMP des de la capa de aplicación. Algunos ejemplos de mensajes ICMP son la gestión de mensajes tipo echo request echo, echo reply, time exceeded, etc, que ayudan a reportar posibles errores en rutas, informan de saltos (hops) entre routers, etc

Instalación 

Para instalar nmap en distribuciones Debian y Ubuntu
sudo apt-get install nmap
Y en distros CentOs y Red Hat
sudo yum install nmap

Detectando hosts y  puertos 

Scan TCP-Connect() [-sT]

Es el método de escaneo utilizado por defecto en nmap, y realiza el proceso "three way handshake" completo, usando la llamada al sistema connect() para iniciar una conexión TCP con un host remoto. Si connect () falla, es que el host destino está caído o el puerto está cerrado.


Este método es muy efectivo para detectar  con certeza que puertos TCP hay realmente abiertos en los hosts conectados a la red, el inconveniente es que este tipo de escaneo es fácilmente detectable por  Firewalls modernos y software de detección de intrusos, que bloquearan nuestra IP origen, y registraran logs de nuestras conexiones. También indicar que con esta técnica solo se detectan puertos TCP (para UDP se usan otras técnicas). 

Ejemplo escaneo toda la red privada de clase C 192.168.1/24

sudo nmap -sT 192.168.1/24 (o también sudo nmap 192.168.1/24)
Ejemplo escaneo al único host 192.168.1.1

sudo namp -sT 192.168.1.1 (o también sudo nmap 192.168.1.1)
Ejemplo escaneo del rango 192.168.1.0 al 192.168.1.30

sudo nmap -sT 192.168.1.1-30 (o también sudo nmap 192.168.1.1-30)
NOTA: Las opciones de escaneo a red, hots y rango son aplicables a todas las difernetes opciones de escaneo de namp

Scan SYN-Stealth [-sS]

En lugar de utilizar el proceso de conexión TCP completo "three way handshake", el escaneo SYN-Stealth solo envia paquetes SYN a los puertos del host destino y resta a la espera de recibir el SYN-ACK conforme el puerto está abierto.

Si se recive el SYN-ACK, se da por hecho que el puerto está abierto y finalmente se envía un paquete RST en lugar del ACK, para anular la conexión TCP y evitar así que se establezca la conexión TCP completa y queden en los logs rastros de conexiones establecidas.

Aunque esta técnica no deja logs de conexiones completas en Firewalls (evolución y mejora respecto al escaneo -sT) algunos sistemas de detección son capaces de bloquear este tipo de trafico.

Ejemplo escaneo al host 192.168.1.32 (también se puede hacer por host o rango aplicando la sintaxis de los ejemplos anteriores con -sT)
sudo nmap -sS 192.168.32

Ping Scan [-sP] 

Se utiliza para ver que equipos están conectados a la red, sin tener en cuenta que puertos y servicios están corriendo.

Inicialmente nmap manda un "ICMP ECHO REQUEST" (petición de ping) a la dirección IP indicada, sino recibe el "ICMP ECHO REPLY" (respuesta de ping ), entonces intenta un envío de ping TCP para descartar si el protocolo ICMP esta bloqueado por algun Firewall o es que realmente la IP a la que se lanzan los pings no esta conectada a la red.




Ejemplo escaneo toda la red privada de clase C 192.168.1/24 (tambien se puede hacer por host o rango aplicando la sintaxis de los ejemplos anteriores con -sT) 
sudo nmap -sP 192.168.1/24

UDP Scan [-sU]

El escaneo de puertos UDP suele ser poco común excepto para la detección concreta de servicios sobre UDP y posibles troyanos, para detectar puertos UDP, nmap lanza paquetes UDP vacíos (con 0 bytes) a los puertos de la ip destino y resta a la espera de recibir un mensaje ICMP Port Unreachable (puerto inalcanzable) se considera que el puerto esta cerrado de lo contrario se asume que está abierto. 




Es importante tener en cuenta que algunos Firewalls bloquean el trafico ICMP de salida, de esta manera se pueden dar falsos positivos al no recibir nunca el mensaje de ICMP Port Unreachable y considerar abiertos puertos que realmente no lo están.



También es importante tener en cuenta que la mayoría de sistemas operativos a excepción de Microsoft limitan la generación masiva de mensajes ICMP Port Unreachable, y esto puede ralentizar muchísimo el tiempo de escaneo.



Ejemplo escaneo del rango de IPs 192.168.1 a la 192.168.1.20 (tambien se puede hacer por host o rango aplicando la sintaxis de los ejemplos anteriores con -sT)
sudo nmap -sU 192.168.1-20
Hasta aquí la primera parte del post "Escaneo de red, detección de hosts, puertos y servicios con Nmap", en la segunda parte se mostraran las técnicas para obtener el sistema operativo y versiones de los servicios corriendo en los puertos 

No hay comentarios:

Publicar un comentario