22 de enero de 2013

Aprendiendo a usar NMAP

Nmap es un programa de código abierto especializado en el escaneo de puertos. Diseñado en sus inicios por Fyodor Vaskovich. Puede funcionar en múltiples sistemas operativos: Solaris, Mac OS X,BSD, GNU/Linux, Microsoft Windows y AmigaOS.


Es capaz, mediantes los comandos adecuados, de descubrir los equipos conectados a una red, obteniendo la versión del sistema operativo y algunas características hardware de la máquina. También identifica los puertos abiertos de los equipos analizados y determinar sus servicios.

Sus múltiples opciones lo hacen una herramienta imprescindible, muy usado para pruebas de penetración y tareas de seguridad informática como verificar la presencia de posibles aplicaciones no autorizadas ejecutándose en los equipos de la red, así como por crackers para descubrir objetivos.


Nmap es difícilmente detectable, ha sido creado para evadir los Sistema de detección de intrusos (IDS) e interfiere lo menos posible con las operaciones normales de las redes y de los equipos analizados. 

Consigue la información del objetivo de dos formas: enviando paquetes o realizando una llamada de conexión (connect system call). Una vez hecho esto, Nmap es capaz de distinguir entre seis estados diferentes para cada puerto:


  • open (abierto): hay una aplicación aceptando conexiones
  • closed (cerrado): el puerto es accesible pero no existe ninguna aplicación escuchando
  • filtered (filtrado): el paquete ha sido filtrado por un firewall y no puede determinar si está abierto
  • unfiltered (sin filtrar): el puerto es accesible pero no es capaz de determinar si está abierto o cerrado. Este estado sólo lo devuelve el tipo de escaneo ACK.
  • open|filtered o closed|filtered: no es capaz de definir si el puerto está abierto/cerrado o filtrado. Posiblemente el puerto esté  abierto pero no generan respuesta.

la sintaxis general es:

nmap [ <Tipo de escaneo> ...] [ <Opciones> ] { <especificación de objetivo> }


Tiene una gran cantidad de parámetros como puedes ver aquí.



Aunque lo habitual es trabajar en terminal también dispone de una interfaz gráfica, Zenmap tiene toda la potencia de nmap en una GUI muy intuitiva para todo tipo de análisis.


Repasemos algunas de sus opciones


Objetivos

Puedes determinar como objetivo tanto una ip:

nmap [ <Tipo de escaneo> ...] [ <Opciones> ]  192.168.1.1

Como un rango de ip:

nmap [ <Tipo de escaneo> ...] [ <Opciones> ]  192.168.1.0/24

Nmap también es capaz de resolver nombres de internet:

nmap [ <Tipo de escaneo> ...] [ <Opciones> ] scanme.nmap.org/24

Incluso recoger desde un archivo una lista de objetivos:

nmap [ <Tipo de escaneo> ...] [ <Opciones> ] -iL <archivo>


Tipos de escaneo: .

Nmap nos proporciona bastantes opciones, os presento algunas de las más comunes:

Escaneo TCP SYN: es el predeterminado si lo ejecutamos con un usuario administrador y también el más utilizado por ser el más rápido y discreto. Intenta establecer una conexión TCP pero no la finaliza. Su funcionamiento consiste en enviar un paquete SYN y esperar la respuesta del servidor: si se recibe un SYN/ACK el puerto está abierto (si lo recibe sin el flag ACK también lo considera abierto), si se recibe un RST (reset) está cerrado y si no se recibe respuesta tras varios intentos se considera filtrado.

nmap -sS { <objetivo> }

Escaneo TCP connect: el predeterminado cuando no tenemos acceso de administrador y por tanto no podemos enviar paquetes manipulados. Nmap solicita al sistema que establezca una conexión con la máquina objetivo a través del puerto elegido mediante una llamada de tipo connect. Se trata de una opción menos eficiente que TCP SYN, requiere más tiempo y paquetes para obtener la misma información.

nmap -sT { <objetivo> }




Escaneo UDP: el escaneo de puertos UDP es más lento que el de TCP por eso muchas veces no se tiene en cuenta. Pero  tanto DNS (puerto 53), como SNMP (puertos 161/162) y DHCP (puertos 67/68) -servidor/cliente- usan este protocolo. El escaneo UDP funciona mediante el envío de un paquete UDP a los puertos seleccionados, de tal forma que si se devuelve un error “ICMP unreachable” el puerto se considera cerrado o filtrado (en función del código de error) mientras que si hay respuesta mediante un paquete UDP se considera abierto.

nmap -sU { <objetivo> }


Escaneo SCTP INIT: este tipo de escaneo se establece como alternativa a los TCP y UDP y sería el equivalente a un escaneo TCP SYN en el ámbito SCTP. Se trata de un tipo de escaneo rápido y que distingue bien entre los estados abierto, cerrado y filtrado. Además, es muy poco intrusivo, ya que no completa la asociación STCP sino que envía un paquete INIT como si se pretendiera abrir una conexión y espera la respuesta: si recibe un INIT-ACK, el puerto está abierto, mientras que si recibe un ABORT el puerto está cerrado. En caso de no recibir respuesta tras varios intentos, el puerto se marca como filtrado.

nmap -sY { <objetivo> }


Escaneo TCP personalizado:esta modalidad tiene como finalidad permitir que el usuario defina su análisis a la carta, especificando las TCP flags a utilizar (URG, ACK, PSH, RST, SYN, FIN) y el tipo de escaneo TCP (-sF o -sA).

nmap -sF/sA --scanflags URG
{ <objetivo> }
opciones útiles

Escanea los puertos especificados

-p <rango>
nmap [ <Tipo de escaneo> ...] -p <rango> { <objetivo> }



nmap -p22 { <objetivo> }
nmap -p1-65535 { <objetivo> }
nmap -p21-25,80,139,8080
{ <objetivo> }

Intenta determinar el servicio y la versión del software de los puertos encontrados.

-sV

nmap [ <Tipo de escaneo> ...] -sV { <objetivo> }

nmap -sT -p80 -sV -sC 192.168.1.0/24

Busca los servidores web de la red local e intenta averiguar la versión de su software.

Podemos activar los scripts de Nmap

-sC: equivalente a --script=default

nmap [ <Tipo de escaneo> ...] [ <Opciones> ] -sC { <objetivo> }

nmap -sV -sC localhost

Escanea el host local en busca de servicios abiertos.

Intenta detectar el Sistema Operativo de los equipos encontrados


-O

nmap [ <Tipo de escaneo> ...] [ <Opciones> ] -O { <especificación de objetivo> }
nmap -O 192.168.1.100
Orden para averiguar el sistema operativo de host 192.168.1.100

Almacenar los datos del escaneo en un archivo

-oN o oX <archivo>: normal/XML

nmap [ <Tipo de escaneo> ...] -oN/X <archivo> { <eobjetivo> }

nmap -A -oN inventario.txt 192.168.1.0/24
Escanea la red local obteniendo información de los equipos y guardándola en el archivo inventario.


Algunas opciones extra

  • -6: Habilita el análisis con IPv6
  • -A: Habilita la detección de sistema operativo, la detección de versión de software, habilita los scripts, y traceroute
  • -T<0-5>: carga la plantilla del temporizador (un valor mayor hace el rápido más rápido)
  • -F: modo Rápido (escanea un menor número de puertos que el escaneo por defecto)
  • -v: Aumentar el nivel de verbosidad (usa-vv o más para un mayor efecto)


Más ejemplos

  • Escaner rápido de la red local
nmap -sS -A -F 192.168.1.0/24

  • Buscar servidores web en la red local

nmap -sT -p80 -sC 192.168.1.0/24

  • Inventario de la red local exportado a XML
nmap -sT -O -sV -sC -T=4 -oX inventario.xml 192.168.1.0/24


No hay comentarios: