Análisis de red con Nmap
Scanner de seguridad y herramienta de exploración de red
La alegría de algunos (o muchos) lectores puede adivinarse al encontrar entre las páginas del primer número de Linux USERS una nota a esta excelente y bien desarrollada herramienta, y tambien puedo adivinar cuanto les va a agradar saber que el mismo Fyodor (autor de Nmap) nos brindará algunos comentarios, especialmente para nosotros, que por su limitado tiempo no llegaran a publicarse en este número.
¿Qué es el Nmap?
Según la página del manual de nmap, Nmap “está diseñado para permitirle a los administradores de sistema e individuales curiosos `escanear’ (N.del.A: analizar) grandes redes para determinar que hosts se encuentran funcionando y que servicios (ftp, http, ssh, telnet, MySQL) estan ofreciendo. […]”
¿De donde proviene el hecho de que Nmap sea el `portscanner’ más utilizado por toda la comunidad Internet, tanto de Windows como Linux y Unix en general? La respuesta es muy simple: soporta muchas técnicas de análisis, a saber:
-
TCP connect() – Este es el método utilizado por defecto
-
UDP
-
TCP SYN (medio abierto)
-
ftp proxy (ataque de rebote)
-
ident-reverso
-
ICMP (barrido de ping – ECHO_REQUEST)
-
FIN
-
Barrido ACK
-
Xmas Tree (literalmente `arbol de navidad’)
-
Barrido SYN
-
Protocolo IP
-
Null Scan (Escaneo/Análisis Nulo)
Algunas de estas técnicas necesitan los privilegios del usuario root, estas se encuentran marcadas con un `*’, por lo cual Nmap debería ser usado siempre con privilegios de root. El funcionamiento de estas técnicas se puede encontrar muy bien explicado en infinidad de sitios de Internet, pero la documentación y el sitio de Nmap deben siempre ser chequeados antes que ningún otro lugar.
Nmap tiene un gran número de funciones adicionales que son de gran utilidad para el administrador de red o auditor de seguridad o Hackers, a saber:
-
Deteccion del Sistema Operativo del host siendo escaneado por huellas TCP/IP
-
Análisis Stealth (digamos, indetectable 🙂
-
Cálculo de esperas y retransmisión dinámicas
-
Análisis en paralelo
-
Deteccion de hosts no funcionando a través de pings paralelos
-
Análisis por `decoys’ (hosts intermedios)
-
Detección de puertos siendo filtrados (por el host final o uno intermedio)
-
Análisis RPC directo (no por mapeador de puertos)
-
Analisis de fragmentación
-
Flexible especificación de objetivo[s] y puerto[s]
NOTA: La palabra `Análisis’ es la que estoy utilizando para reemplazar/traducir el término en Ingles `scan’, ya que en Spanglish sería `escanear’ y no es de mi agrado utilizarla para un artículo, pero es la que deberían utilizar al hablar por IRC o donde/como fuere.
Cuando ejecutamos Nmap vamos a obtener una lista de puertos abiertos interesantes en el rango de hosts que hallamos especificado en la línea de comandos y, según las opciones adicionales utilizadas, Nmap nos informará las siguientes características del host: Sistema Operativo que utiliza, secuenciabilidad TCP, nombres de usuarios ejecutando los programas de cada puerto, el nombre DNS y algunas otras cosas.
Estas opciones las podemos combinar, por supuesto, pero habrá combinaciónes (según Fyodor) “psicóticas o no soportadas” que Nmap intenta atrapar para poder advertirle al usuario.
Una funcionalidad agregada muy recientemente a la distribución principal de Nmap es la de obtener y reportar el número de versión de los programas siendo ejecutados en los puertos abiertos, por ejemplo, la version de Bind (53), la de Apache (80), FTP (21), sendmail (25). Esta funcionalidad era antes un patch llamado Nmap+V creado por Jay Freeman (saurik) que por su gran utilidad fue incluido en la distribución principal. Es verdaderamente útil y le acelera muchísimo el proceso a un administrador al momento de buscar nuevas versiones y parches de seguridad/mantenimiento, ya que no tiene que revisar uno por uno y a mano cada programa para obtener su versión. Por supuesto, habrá casos en los que no se puede obtener la versión a través del análisis, y tambien el programa puede estar configurado para reportar un número de versión falso, para despistar a los Crackers. (no confundir con Hackers).
Especificando objetivos
Si no es una opción, es una especificación de host objetivo. Simple. Aunque es mejor dejar esto para el final de la línea de comandos, ya que el parser de Nmap pareciera no andar bien en este aspecto y si ponemos una opcion detrás de una especificación de host, el Nmap se confundirá y tomará esa opción como otro host más, y al no poder encontrar su dirección IP (obviamente), la ejecución se verá abortada.
Bien, el caso mas común es especificar un host o dirección IP únicos, pero se puede analizar toda una subred de direcciones IP, agregando una máscara según la Clase o toda la Internet (máscara = `0′). Una clase `C’ se analizaría utilizando /24 y una `B’ con /16.
Las clases son conocidas así:
-
Clase A: x.*.*.*
-
Clase B: x.y.*.*
-
Clase C: x.y.z.*
Entonces si decidimos analizar una clase `B’, Nmap recorrería desde x.y.0.0 hasta x.y.255.255.
Tambien podemos especificar rangos o listas para cada octeto de una direccion IP, o sea:
200.47.[20-128].* Esta especificación analizaria desde 200.47.20.0 hasta 200.47.128.255 o podríamos utilizar una lista combinada con un rango: 200.47.[20,21,22,23].[1-254] – Esta especificación analizaría desde 200.47.20.1 hasta 200.47.23.254
Esta notación tambien se puede utilizar al especificar que puertos deseamos chequear en cada host.
NmapFE: Nmap desde X
Alternativa a la línea de comandos
La gente no acostumbrada a la línea de comandos va a encontrar en NmapFE un aliado excelente, que incluso nos muestra la lista de puertos en diferentes colores, para su mejor visualización. NmapFE utiliza la muy difundida librería GTK para sus controles gráficos. En su interfaz se combinan todas las funciones y opciones de Nmap, e incluso las opciones que no podamos utilizar (si no somos root) no se mostrarán en pantalla, por lo que nos ahorrará tiempo si nos olvidamos quien somos e intentamos utilizar otros métodos de análisis, por ejemplo el SYN o Xmas. El NmapFE debe ser llamado desde X con el comando `nmapfe’. Algunas distribuciones de Linux hace tiempo ya que incorporaron Nmap entre sus paquetes por defecto, por lo que probablemente contemos ya con un vínculo en algún lugar del menu o escritorio (dependiendo del Window Manager que utilicemos). Aunque generalmente la versión incluída es vieja, pero a no preocuparse, porque en el sitio de Nmap encontrarán versiones pre-compiladas listas para instalar en formato RPM o tar.gz Por supuesto, el código fuente completo también lo encontrarán allí.
En las imágenes colocadas en este artículo podrán ver a Nmap y a NmapFE haciendo los mismos análisis, y podran comparar la forma de uso de ambos. Yo prefiero utilizar la línea de comandos ya que algunas funciones nuevas a veces no aparecen en NmapFE hasta dentro de un tiempo después.
Donde bajar Nmap
El código fuente en formato tar.gz y RPM los pueden bajar de:
http://www.insecure.org/nmap/#download
Al autor lo pueden contactar en esta dirección de E-Mail:
“Fyodor” <[email protected]>
Y al autor del parche nmap+V en:
“Jay Freeman (saurik)” <[email protected]>
Al momento de escribir esta nota, la última version de desarrollo (no-estable) se podía bajar de aquí:
http://www.insecure.org/nmap/dist/nmap-2.54BETA22-1.i386.rpm
http://www.insecure.org/nmap/dist/nmap-frontend-0.2.54BETA22-1.i386.rpm
No se recomienda a usuarios generales el usar las versiones de desarrollo. Esperen. La version 2.6 o 2.55 esta al por caer. Adios.