Nmap a fondo: Escaneo de redes y hosts

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.Bueno, descargamos Nmap del sitio oficial para nuestra plataforma y lo instalamos. Si usamos Debian es mejor usar los repositorios:
$ apt-get install nmap
Comencemos a escanear…
$ nmap -sP 192.168.1.0/24
Esto escaneará las 255 direcciones de la red 192.168.1.0 El atributo -sP 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 respnder 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.
Fingerprinting
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
$ sudo 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
$ sudo 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.
Todas las prácticas aquí mostradas se han realizado con fines experimentales, así que no os lancéis ahora a escanear los pc de vuestro trabajo, instituto o universidad porque si vais con intenciones dudosas seguramente os pillarán. El contenido de este artículo es fruto de lectura de manuales, revistas, artículos y mi experiencia profesional-personal. Mis fuentes:
[…] Escaneo a fondo, sigiloso y ético de redes con nmapwww.thewilfamily.com/hacking/nmap-a-fondo-escaneo-de-redes-y… por ggimenez hace pocos segundos […]
Muy buen artículo. Nada como estar al tanto de la seguridad en redes, para que entre alguien por la puerta trasera
[…] The Wil Family » Blog Archive » Nmap a fondo: Escaneo de redes y hosts […]
Interesante el uso de nmap, deberias plantarte hacer otro pero con thcrut
Muy buen articulo, de mucha utilidad.
Saludos!
Muy interesantes los sondeos sigilosos.
Muy buen artículo.
Tan sólo indicar que el comportamiento por defecto no es escanear los 65.535 puertos TCP del objetivo, sino los menores de 1024 más los que aparecen en el fichero nmap-services y que son mayores de 1024. Esto lo describe en:
http://seclists.org/nmap-dev/2006/q3/0138.html
…, the current Nmap default scanning behaviour is to scan all ports from 1-1024 and all higher ports listed
in the nmap-services file.
Enhorabuena por el artículo, está muy bien. Solo te queria decir que quizá el título sea algo desafortunado porque ni mucho menos es “nmap a fondo”. Mas bien se trata de una buena introduccion. Nmap es hoy por hoy lo suficientemente complejo como para publicar un libro. Hay algo más completo aqui, quizá te interese: http://www.nmap-tutorial.com/
Para Jabreu:
Gracias por la aclaración. Tenia entendido que escaneaba todos los puertos. En mis pruebas he visto que sin marcar ninguna opción también mostraba resultados en puertos superiores a 1024, y no había caído en el listado de puertos del fichero nmap-services.
Para Luther Blisset:
Ciertamente no se trata de un manual a fondo, quizás he pecado al pensar que se trataba de un artículo completo. Queda pendiente extenderme en las técnicas de escaneo idlescan con un equipo zombee y alguna lección teórica con ejemplos de TCP/IP. Thcrut no lo he usado, y no puedo aportar nada a lo que ya hay. Quizás cuando lo use y lo domine haga algo de provecho.
Gracias a todos los lectores y a los que comentáis vuestras sensaciones.
[…] Visita el blog para un detallado articulo sobre el uso de Nmap […]
[…] encontrado éste artículo muy interesante en castellano sobre como utilizar este comando con todas sus opciones, desde cero […]
Felicitats wil!
Sobran zetas. Hazte mirar lo de “comenzemos” y “lanzéis”, porque van con ce.
Lo del nmap, bien. Clarito y al grano. Útil para la peña pero sin llenarles la cabeza.
[…] Nmap a fondo: Escaneo de redes y hosts Artículo bastante completo sobre el escaneo de redes y hosts con nmap, una herramienta multiplataforma usada para explorar redes y obtener información acerca de sus servicios, sistemas operativos y vulnerabilidades. (tags: Seguridad UNIX) […]
[…] genial artículo del blog de “The wil Family” sobre el uso de Nmap, el scanner de puertos más […]
Mucha gracias por el tutorial, un saludo grande!
Bynario.
[…] Continuar leyendo […]
Impresionante, como siempre
Supper gut! Gratias!
[…] es el artículo publicado en […]
Me resulta bastante curioso el tema de los escaneos silencioso, pero estoy convencido de que aunque no se escriban en los los un firewal sí los detectaría como un escaneo de puertos.