Nmap a fondo: Escaneo de redes y hosts

June 27th, 2007

nmpa

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:

Publicado en la categoría Hacking, Redes

21 Responses

    Escaneo a fondo, sigiloso y ético de redes con nmap // menéame Dijo:

    […] 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 […]

    Tanguillo Dijo:

    Muy buen artículo. Nada como estar al tanto de la seguridad en redes, para que entre alguien por la puerta trasera :)

    oriolrius lifestream » The Wil Family » Blog Archive » Nmap a fondo: Escaneo de redes y hosts Dijo:

    […] The Wil Family » Blog Archive » Nmap a fondo: Escaneo de redes y hosts […]

    Angel M. Dijo:

    Interesante el uso de nmap, deberias plantarte hacer otro pero con thcrut :)

    Dieto Kotipelto Dijo:

    Muy buen articulo, de mucha utilidad.

    Saludos!

    Javier Dijo:

    Muy interesantes los sondeos sigilosos.

    jabreu Dijo:

    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.

    Luther Blissett Dijo:

    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/

    Wil Dijo:

    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.

    Nmap Dijo:

    […] Visita el blog para un detallado articulo sobre el uso de Nmap […]

    nmap: mapeando la red « Be Linux, my friend! Dijo:

    […] encontrado éste artículo muy interesante en castellano sobre como utilizar este comando con todas sus opciones, desde cero […]

    nandelbosc Dijo:

    Felicitats wil! ;)

    Talibán ortográfico Dijo:

    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.

    links for 2007-06-28 « diegolo 3.0 Dijo:

    […] 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) […]

    Nmap a fondo: Escaneo de redes y hosts « vtortola.Net Dijo:

    […] genial artículo del blog de “The wil Family” sobre el uso de Nmap, el scanner de puertos más […]

    bynario Dijo:

    Mucha gracias por el tutorial, un saludo grande!

    Bynario.

    Minha Dijo:

    Impresionante, como siempre :-)

    Gregor Dijo:

    Supper gut! Gratias!

    Diancecht Dijo:

    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.

Hacer comentario