Saltar la navegación

Análisis de puertos

El comando nmap en sus orígenes fue únicamente un analizador de puertos y los clasifica en seis estados:

  1. Abierto: Una aplicación acepta conexiones TCP o paquetes UDP en este puerto. Son los puertos por donde se pueden recibir ataques.
  2. Cerrado: Es accesible, recibe y responde al sondeo de nmap, pero no hay una aplicación escuchando en él. Pueden utilizarse para descubrir si un equipo está activo o no en una cierta IP. Intervienen también en el proceso de detección del sistema operativo.
  3. Filtrado: No responden al sondeo de nmap, es lo más frustrante para los atacantes por la poca información que aportan. El motivo, normalmente, es un cortafuegos instalado en la red o en el propio equipo que descarta los paquetes que llegan por el puerto. Este comportamiento hace que nmap lo intente varias veces, pues piensa que su sondeo puede haberse perdido por la red debido a la congestión de la misma, lo cual ralentiza mucho el escaneo, lo que perjudica a los atacantes.
  4. No filtrado: Este estado indica que el puerto es accesible, pero que nmap no puede determinar si se encuentra abierto o cerrado. Sobre estos puertos hay ciertos tipos de análisis que pueden descubrir si el puerto se encuentra abierto.
  5. Abierto|Filtrado: nmap marca a los puertos en este estado cuando no puede determinar si el puerto se encuentra abierto o filtrado.
  6. Cerrado|Filtrado: Este estado se utiliza cuando nmap no puede determinar si un puerto se encuentra cerrado o filtrado.

Algunos tipos de sondeo de puertos que realiza nmap son los siguientes:

  • Sondeo TCP SYN ( -sS ): Es el sondeo por defecto. Con esta técnica no se llega a abrir una conexión TCP completa. Se envía un paquete SYN, como si se fuera a abrir una conexión real y después se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el puerto está en escucha (abierto), mientras que si se recibe un RST (reset) indica que no hay nada escuchando en el puerto. Si no se recibe ninguna respuesta después de realizar algunas retransmisiones, el puerto se marca como filtrado. También se marca el puerto como filtrado si se recibe un error de tipo ICMP no alcanzable.
# nmap -sS 192.168.1.3

Starting Nmap 6.00 ( http://nmap.org ) at 2014-10-13 20:42 CEST
Nmap scan report for 192.168.1.3
Host is up (0.00027s latency).
Not shown: 998 filtered ports
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:0B:CD:9F:49:95 (Hewlett-Packard Company)

Nmap done: 1 IP address (1 host up) scanned in 4.21 seconds
  • Sondeo TCP conect() ( -sT ): El sondeo TCP SYN es preferible, pero cuando no se es administrador no puede realizarse ya que crea los paquetes a bajo nivel, por lo que en su lugar se puede utilizar este sondeo, el cual consiste en que nmap le pide al sistema operativo subyacente que establezca una conexión con el sistema objetivo en el puerto indicado utilizando la llamada del sistema connect(). Es un sondeo más lento.
  • Sondeo UDP ( -sU ): Aunque la mayoría de los servicios más habituales en Internet utilizan el protocolo TCP, los servicios UDP también son muy comunes. Tres de los más comunes son los servicios DNS, SNMP y DHCP (puertos registrados 53, 161/162, y 67/68 respectivamente). Los sondeos UDP funcionan mediante el envío (sin datos) de una cabecera UDP para cada puerto objetivo. Si se obtiene un error ICMP que indica que el puerto no es alcanzable (código 3) entonces se marca el puerto como cerrado. Si se recibe cualquier error ICMP no alcanzable (códigos 1, 2, 9, 10, o 13) se marca el puerto como filtrado. En algunas ocasiones se recibirá una respuesta al paquete UDP, lo que prueba que el puerto está abierto. Si no se ha recibido ninguna respuesta después de algunas retransmisiones entonces se clasifica el puerto como abierto|filtrado. Esto significa que el puerto podría estar abierto o que hay un filtro de paquetes bloqueando la comunicación. Puede utilizarse el sondeo de versión (-sV) para diferenciar definitivamente los puertos abiertos de los filtrados.
# nmap -sU 192.168.1.1

Starting Nmap 6.00 ( http://nmap.org ) at 2014-10-13 20:52 CEST
Nmap scan report for 192.168.1.1
Host is up (0.00064s latency).
Not shown: 994 closed ports
PORT     STATE         SERVICE
53/udp   open          domain
67/udp   open|filtered dhcps
69/udp   open|filtered tftp
137/udp  open          netbios-ns
138/udp  open|filtered netbios-dgm
1900/udp open|filtered upnp
MAC Address: 1F:74:CC:75:38:2A (Comtrend)

Nmap done: 1 IP address (1 host up) scanned in 1072.73 seconds
  • Sondeo TCP ACK ( -sA ): Este sondeo se utiliza para mapear reglas de cortafuegos, para determinar si son cortafuegos con inspección de estados y qué puertos están filtrados. El paquete TCP vacío que se envía solo tiene fijada la bandera ACK. Cuando se sondean sistemas no filtrados los puertos abiertos y cerrados devolverán un paquete RST. El comando nmap marca el puerto como no filtrado, lo que significa que son alcanzables por el paquete ACK, pero no se puede determinar si están abiertos o cerrados. Los puertos que no responden o que envían mensajes de error ICMP en respuesta (código 1, 2, 3, 9, 10, o 13), se marcan como filtrados.

Por defecto, el comando nmap escanea los puertos hasta el 1024 además de algunos puertos con números altos listados en el fichero /usr/share/nmap/nmap-services para los protocolos que se escaneen, pero hay opciones para especificar otros puertos:

-p 

Esta opción especifica los puertos que se desea sondear. Se pueden especificar tanto números de puerto de forma individual, así como rangos de puertos separados por un guión (p. ej. 1-1023). Se puede omitir el valor inicial y/o el valor final del rango, nmap utilizará 1 ó 65535 respectivamente. De esta forma, si se especifica -p- se sondearán todos los puertos desde el 1 al 65535. Se permite sondear el puerto cero siempre que se especifique explícitamente. Esta opción especifica el número de protocolo que se quiere sondear (de 0 a 255) en el caso de que se estén sondeando protocolos IP (-sO).

Es posible especificar un protocolo específico cuando se sondeen puertos TCP y UDP si se precede el número de puerto con T: o U:. El calificador dura hasta que especifique otro calificador. Por ejemplo, la opción -p U:53,111,137,T:21-25,80,139,8080 sondearía los puertos UDP 53, 111 y 137, así como los puertos TCP listados. Hay que tener en cuenta que para sondear tanto UDP como TCP se deberá especificar la opción -sU y al menos un tipo de sondeo TCP (como -sS, -sF, o -sT). Si no se da un calificador de protocolo se añadirán los números de puerto a las listas de todos los protocolos.

-F Indica que solo se escanearán los puertos listados en el fichero /usr/share/nmap/nmap-services. La opción --datadir permite cambiar el directorio del fichero nmap-services y así utilizar uno nuestro y no el del sistema.

Licencia: licencia de software libre GPL