Escaneo de puertos con Nmap

No recuerdo muy bien de donde saque este manual, pero me gusto bastante para empezar a conocer esta herramienta de escaneo de puertos, que dicho sea de paso es bastante completa y efectiva. Vale mencionar que existe una opción gráfica de este programa, el Nmapfe.
Demás esta decir que el uso que hagan de este manual corre por su propia cuenta, ya que el presente es solamente con fines metodológicos. Espero que lo disfruten…

Nmap

Nmap es una aplicación multiplataforma usada para explorar redes y obtener información acerca de los servicios, sistemas operativos y vulnerabilidades derivadas de la conjunción de éstos.

Es muy usado por todo aquél que se interesa por las tareas de seguridad y hacking en general, desde Administradores de Sistemas a interesados con fines menos respetables. Las técnicas de escaneo que usa Nmap han sido ya implementadas en sistemas de detección de intrusos y firewalls, ya que los desarrolladores de sistemas de seguridad también usan Nmap en su trabajo y toman medidas. No obstante, pese a estar ampliamente documentado su funcionamiento, hay formas de escaneo que lo hacen difícil de detectar cuando se trata de obtener información.

Comencemos a escanear…


$ nmap –sP 192.168.1.0/24

Esto escaneará las 255 direcciones de la red 192.168.1.0 El atributo –P indica que será un escaneo mediante ping. Envia un ping (ICMP echo request) y un paquete TCP ACK al puerto 80. Si el destino contesta con otro ping o con un paquete TCP RST significa que está operativo.

Tipos de escaneo en función de los paquetes

Si no queremos usar la técnica del ping y el paquete ACK para comprobar el equipo o la red hay varias opciones diferentes:

solo el ping

nmap –PE 192.168.1.0/24

sólo el paquete ACK dirigiéndolo a un puerto determinado, p. ej. el 20

nmap –PA20 192.168.1.0/24

paquetes SYN al puerto 20

nmap –PS20 192.168.1.0/24

paquetes UDP al puerto 20

nmap –PU20 192.168.1.0/24

paquetes timestamp

nmap –PP 192.168.1.0/24

paquetes netmask request

nmap –PM 192.168.1.0/24

Latencia en la red

Si la red a escanear es lenta, tiene mucho tráfico o somos nosotros los que generamos gran cantidad de tráfico, el tiempo de respuesta aumentará. Para mitigar estos inconvenientes podemos ajustar el tiempo de búsqueda que emplea nmap. La opción –T indica la política de tiempo a usar. Existen 6 niveles con números entre 0-5, cuanto más alto más rápido. Si no se especifica se usa –T3

$ nmap –T5 192.168.1.0/24

Escanearía la red 192.168.1.0 en modo Insane, muy rápido…

Más opciones de escaneo serian:

— max–hostgroup 150 (enviar 150 peticiones simultaneas de escaneo)

— scan–delay2s (retardo entre escaneo de 2 segundos)

— host–timeout500m (tiempo empleado para escanear cada host de 500 milisegundos)

Descubriendo servicios en un host

Nmap por defecto escanea los puertos menores de 1024 más los que aparecen en el fichero nmap–services y que son mayores de 1024. Para solo escanear un determinado nº de puertos usaremos la opción –p


$ nmap –p 25,80,1000–4000 192.168.1.1

Con esto escaneamos el puerto 25,80 y del 1000 al 4000 del host 192.168.1.1

Hay varios estados posibles para un puerto. Si hay algún servicio escuchando en él, el estado es OPEN. Si no hay servicios en ese puerto puede responder con un mensaje ICMP o simplemente con nada. En Linux estas respuestas vienen dadas por las reglas de IPTABLES REJECT (rechazar el paquete enviando un mensaje ICMP informando que el puerto esta cerrado) o DROP (tirar o ignorar el tráfico). En caso de que la petición sea ignorada Nmap mostrará el puerto como filtered, ya que no puede determinar si hay algún servicio o no en ese puerto.

También es posible que el equipo a sondear tenga los puertos abiertos pero tenga la política de no responder al ping ni al TCP ACK que usa Nmap para saber si el equipo está levantado. En ese caso el parámetro –P0 escaneará el objetivo asumiendo que el equipo está activo.

Sondeos Sigilosos

SYN: Se trata en enviar un paquete TCP SYN al puerto a comprobar, y si hay algún servicio activo, el sistema escaneado continuará con la sequencia de conexión enviando un paquete TCP/SYN. En este punto Nmap tendría que proseguir enviando el ACK, pero no continúa con la secuencia de conexión y al no consumarse la conexión no queda registrado en los logs.


$ nmap –PS20 192.168.1.0/24

Una técnica parecida es enviar una secuencia incorrecta de paquetes TCP con la intención de valerse de los mensajes recogidos para obtener información. Por ejemplo, enviar un paquete TCP FIN que corresponde al final de una conexión o enviar paquetes sin ningún flag activado. Las respuestas pueden servir para identificar los puertos abiertos o el sistema operativo.

Fingerprint

Nmap puede averiguar el sistema operativo del objetivo usando las pequeñas diferencias en la implementación de los protocolos. Aunque siguen el mismo estándard al programar los sistemas, existen algunas disimilitudes que usa Nmap para determinar el sistema operativo para ver como responde a ciertas secuencias TCP/IP. El atributo es –O


$ nmap –O 201.215.65.186

$ nmap –O 192.168.1.33

Interesting ports on 192.168.1.33:

Not shown: 1676 closed ports

PORT STATE SERVICE

135/tcp open msrpc

139/tcp open netbios-ssn

445/tcp open microsoft-ds

1110/tcp open nfsd-status

MAC Address: 00:18:DE:A0:B2:C9 (Unknown)

Device type: general purpose

Running: Microsoft Windows 2003/.NET|NT/2K/XP

OS details: Microsoft Windows 2003 Server or XP SP2

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

La otra técnica de Fingerprinting se usa para comprovar las versiones del software que escucha en los puertos, es decir el servidor ftp, la versión de apache, etc… El parámetro es –sV


$ nmap –sV –O –p 22,25,3306 localhost

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007–06–27 18:43 CEST

Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port

Interesting ports on localhost (127.0.0.1):

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)

25/tcp open smtp Exim smtpd 4.63

3306/tcp open mysql MySQL 5.0.32–Debian_7etch1–log

Device type: general purpose|printer|broadband router|telecom–misc

Running (JUST GUESSING) : Linux 2.4.X|2.5.X|2.6.X|2.3.X (95%), Lexmark embedded (93%), D-Link embedded (93%), Wooksung embedded (93%)

Aggressive OS guesses: Linux 2.4.0 – 2.5.20 (95%), Linux 2.4.18 (95%), Linux 2.4.18 – 2.4.20 (x86) (95%), Linux 2.4.20 (X86, Redhat 7.3) (95%), Linux 2.4.21 (x86, RedHat) (95%), Linux 2.4.22 (SPARC) (95%), Linux 2.4.30 (95%), Linux 2.4.7 – 2.6.11 (95%), Linux 2.5.25 – 2.6.8 or Gentoo 1.2 Linux 2.4.19 rc1–rc7 (95%), Linux 2.6.0–test10 (x86) (95%)

No exact OS matches for host (test conditions non–ideal).

Service Info: Host: xxxxx.xxxxxxxx; OS: Linux

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

Esto nos muestra información bastante valiosa sobre las versiones de SSH, Exim y MySQL así com el nombre y el dominio. También ha intentado determinar la versión del sistema operativo, pero no concreta la distribución usada (95% Gentoo) ni la versión del kernel. En la anterior prueba contra un Windows XP, si que es capaz de obtener información referente al sistema operativo, y en menos tiempo.

Para más info pueden revisar el man de nmap. Ahora solo queda experimentar. Cualquier duda, error o más información es bien aceptada.

~ por SikaRio en Mayo 23, 2008.

Escribe un comentario