Inicio > Hacking, Networking > NMap para escaneo de puertos – Parte I

NMap para escaneo de puertos – Parte I

NMap es una herramienta muy completa e indispensable para cualquier hacker y/o profesional seguridad informática (desde mi punto de vista, que evidentemente es meramente subjetivo), permite ejecutar diferentes tipos de escaneos sobre maquinas remotas e inclusive sobre redes completas, permitiendo recolectar información especifica de los objetivos escaneados, de esta forma podremos obtener una visión global sobre los servicios, puertos e inclusive características de seguridad propias de cada una de las maquinas que escaneamos. Esta será la primera entrada sobre este tema que intentaré explicar de la forma mas clara y precisa posible.  Para poder comprenderlo, son necesarios unos conocimientos básicos sobre el protocolo TCP/IP y UDP que se asume que el lector dispone de antemano.

TIPOS DE ESCANEO EN NMAP
escaneo -sP:
También conocido como “Ping Scanning”, con este mecanismo podemos identificar cuales maquinas se encuentran activas, no identificamos servicios como tal, solamente determinamos el estado de una o varias maquinas en un segmento de red, Este método funciona de la siguiente forma:
1. Por defecto envía un paquete ICMP ECHO REQUEST para determinar si un host en particular se encuentra online, si es así, la maquina retornará un paquete ICMP ECHO REPLY
2. Si no hay respuesta por parte del servidor, es probable que se encuentre caído o que los paquetes ICMP se encuentren bloqueados, en este caso nmap intentará realizar un TCP Ping.
3. Si se hace uso de un TCP Ping, se envía un paquete SYN o un ACK a cualquier puerto especificado (por defecto al 80)  de este modo si el host responde con un paquete RST o SYN|ACK, el sistema remoto se encuentra activo, en el caso que no responda, se encuentra caído o el puerto (puertos) se encuentran filtrados.
Cuando este método es ejecutado por un usuario con privilegios de root, los valores por defecto son ICMP y ACK, sin embargo cuando se trata de un usuario con privilegios limitados, se hará uso de un procedimiento TCP connect(), lo que quiere decir que se establecerá una conexión completa, lo que es fácilmente detectable por un IDS correctamente configurado.
El tipo de escaneo ICMP puede ser deshabilitado con la opción -P0 (P cero), de este modo se hará uso de un TCP ping con ACK.
escaneo -sT:
Este tipo de escaneo es uno de los mas completos, debido a que realiza una conexión con el Host(s) que están siendo escaneados, el mecanismo por medio del cual se realiza esta conexión, es utilizando el método connect() del protocolo TCP, por lo tanto se realiza lo que se conoce como un “three way handshake”, lo que quiere decir que el host remoto reconoce y acepta una petición de conexión por parte de un sistema externo por medio del intercambio de los siguientes paquetes:
1.Maquina Local Enviá SYN
2.Maquina Remota Reconoce SYN y Notifica con un paquete de reconocimiento SYN | ACK y trata de abrir una conexión entre ambas maquinas
3.Cliente responde al intento de conexión con un SYN indicando que ha recibido la notificación de reconocimiento por parte de la maquina remota y que ahora esta en disponibilidad para intercambiar paquetes de datos.

Este tipo de escaneo nos dará una información detallada y exacta de los host que pretendemos escanear, indicando que puertos se encuentran abiertos, sin embargo tiene una desventaja grande y es precisamente que una maquina remota puede detectar fácilmente este tipo de escaneo si en ella se encuentra en ejecución un sistema de detección de intrusos (IDS)  o un firewall ya que este tipo de sistemas normalmente tratan de realizar una traza de eventos sobre las llamadas a la función connect() y de esta forma queda registrada la maquina que ha intentado realizar una conexión.
escaneo -sS:
Con este tipo de escaneo se intenta mitigar la clara desventaja que existe en un escaneo con sT, para que de esta forma no se dejen trazas en la maquina a la que nos conectamos, la forma en la que esto se consigue, es básicamente siguiendo el mismo modelo de un “three way handshake”, variando un poco en los flags que son enviados a la maquina remota de la siguiente forma:
1. Maquina local envía un paquete SYN  a la maquina remota.
2. La Maquina Remota recibe un paquete SYN y envía un paquete de sincronización/reconocimiento para establecer la conexión entre ambos host, para esto intenta abrir la conexión entre ambas maquinas.
3. La Maquina local recibe un paquete SYN|ACK indicando que la maquina remota tiene el puerto de la petición abierto y esperando conexión, dado que la maquina remota intenta abrir una conexión la respuesta de la maquina local, sera evidentemente una interrupción de dicha conexión para que el método connect() de la pila TCP no llegue a ser invocado y por lo tanto nuestra petición no sea registrada por un firewall o IDS, para conseguir esto, la maquina local enviá en respuesta al paquete SYN|ACK un paquete RST para finalizar la conexión de forma inmediata.
Ahora bien, es posible que el puerto en la maquina remota se encuentre cerrado, si esto ocurre, la respuesta sera un paquete RST (en lugar de uno SYN|ACK), de este modo nmap permitirá definir puertos cerrados, filtrados y abiertos.

nmap -sS 127.0.0.1
nmap -sS 192.168.1.30- 192.168.1.40

Aunque es muy util, los IDS y Firewall mas modernos, ya detectan este tipo de comportamientos cuando se ejecuta repetidas veces, un IDS o Firewall pueden determinar que se trata de un posible escaneo de puertos y generará una traza en su log.
Para realizar este tipo de escaneo es necesario tener privilegios de root.
escaneo -sF:
Se trata de un escaneo que evita el envió de paquetes SYN, tal como se ha indicado anteriormente, este tipo de escaneo permite conocer si un puerto se encuentra abierto o no sin necesidad de establecer una conexión TCP estándar, el mecanismo de un escaneo -sF consiste básicamente en el envío de un paquete FIN (cierre de conexión) con el que la maquina remota responderá con un paquete RST dado que el puerto no esta abierto o suprimirá/ignorará el paquete dado que espera un paquete SYN.

nmap -sF 127.0.0.1
nmap -sF 192.168.1.30- 192.168.1.40

escaneo -sI:
Idle Scanning, se trata de una técnica avanzada de escaneo que hace uso de host “zoombies” que son los que realmente realizan el ataque a una maquina remota, consiste en el uso de maquinas sensibles de ser usadas como zoombies que son aquellas que utilizan un numero de secuencia de paquetes IP predecible (IPID), nmap chequea el numero de secuencia en el zoombie y predice el siguiente número de secuencia (necesario para el envió de paquetes SYN y SYN|ACK) de este modo nmap realiza el envío de un paquete SYN con la información de la maquina zoombie contra la maquina objetivo, de este modo, la maquina objetivo entenderá que el paquete viene desde la maquina zoombie y no desde donde realmente se ha llevado a cabo (es decir nuestra maquina). Para determinar si un puerto se encuentra abierto en una maquina objetivo, se envía un paquete SYN,  a lo que la maquina objetivo retornará un paquete SYN|ACK (si se encuentra abierto) a la maquina zoombie, esta a su vez responderá con un paquete RST, ya que no tiene registro de haber abierto dicha conexión, si el puerto se encuentra cerrado, la maquina objetivo responderá con un paquete RST indicando que el puerto se encuentra cerrado, ante dicho paquete la maquina zoombie no responderá nada.
Posteriormente nmap consulta los valores de las secuencias IPID en la maquina zoombie y podrá determinar si un determinado puerto se encuentra abierto o cerrado en la maquina objetivo, si el IPID se ha incrementado en 2 esto corresponde al paquete recibido desde el objetivo mas el paquete RST del zoombie, lo que indica que el puerto se encuentra abierto en el objetivo, si ha aumentado en 1 indica que se ha recibido un RST desde el objetivo a la maquina zoombie y la maquina zoombie evidentemente no responderá ante tal paquete, por lo tanto se asume que el puerto se encuentra cerrado.
escaneo -sN:
Funciona igual que el -sF con la diferencia que no envía un paquete con el flag FIN sino que en lugar de esto envía un paquete se enviá sin ningún tipo de marca o flag.
escaneo -sU:
Se trata de un escaneo tipo UDP, con esto nmap intentara enviar paquetes UDP de cero bytes y la respuesta serán mensajes ICMP, de esta forma si el retorno es un mensaje de Puerto inalcanzable, se da por el hecho que el puerto esta cerrado, como se veía anteriormente en el escaneo tipo -sP si la maquina remota tiene un firewall que bloquea este tipo de paquetes, el comportamiento de este tipo de escaneo retorna valores poco fiables (todos los puertos aparecen abiertos…)
Otra desventaja de este escaneo es el desempeño, dado que la mayoría de sistemas operativos (en especial los basados en UNIX) limitan el numero de mensajes ICMP que se pueden en enviar en un periodo de tiempo dado, (considerando que se pueden escanear 65535 puertos UDP, la ejecución puede tardar bastante) sin embargo sistemas como Windows no limitan este tipo de mensajes, por lo tanto escanear un sistema basado en windows resulta mucho mas sencillo y rápido.
No es frecuentemente utilizado, pero puede dar información interesante sobre servicios que se encuentran escuchando en UDP (como troyanos, backdoors, etc.)
escaneo -sO:
Escaneo para determinar los protocolos basados en IP en el objetivo, para esto nmap enviá un paquete IP sin ningún tipo de información adicional en las cabeceras del paquete, la respuesta del host será un mensaje ICMP de Protocolo inalcanzable en el caso de que el protocolo no sea soportado sobre la maquina remota, en otro caso, se asume que el puerto esta abierto y el protocolo es soportado sobre la maquina remota, del mismo modo que con el escaneo tipo UDP, algunos sistemas y firewalls filtran este tipo de mensajes y en dichos casos se dan “falsos positivos” dado que todos los puertos aparecerán como abiertos, (aunque por razones obvias no lo están), también es posible que el sistema objetivo tenga un sistema operativo que limite el numero máximo de mensajes ICMP en un periodo de tiempo determinado, sin embargo en este caso, no afecta demasiado el rendimiento dado que solamente 256 protocolos son posibles (se trata de un campo de 8-bits en el encabezado del paquete IP), así que a diferencia del escaneo UDP este no debería tardar demasiado.
escaneo -sV:
Con este tipo de escaneo podemos determinar los servicios que se encuentran en ejecución en un host o grupo de hosts, puede determinar con un nivel de detalle adicional a la opción -O sobre el sistema operativo que se encuentra en ejecución en un determinado Host. Se trata de un escaneo bastante agresivo y en la medida de lo posible, debería evitarse su uso si nuestra intención es pasar desapercibidos.

nmap -sV 127.0.0.1
nmap -sV 192.168.1.30- 192.168.1.40

escaneo -sA:
Se trata de un escaneo que permite determinar si un firewall se encuentra filtrando un puerto de manera activa, su funcionamiento es simple, se envía un paquete ACK, si el objetivo responde con un RST (dado que normalmente se espera un paquete SYN y no un ACK) el puerto es catalogado como “no filtrado” en el caso de que la maquina remota no responda al paquete, se trata de un puerto “filtrado” por un firewall.
Cabe anotar que este tipo de escaneo no retorna ningún tipo de puerto abierto, solamente determina los puertos que se encuentran “filtrados” o “no filtrados” por un firewall en la maquina remota.
Un firewall “Con estado” solamente espera paquetes entrantes SYN y los de sin estado tracea las conexiones y también bloquea paquetes ACK no solicitados, de esta forma podemos saber que tipo de firewall se encuentra en la maquina objetivo y recolectar información sobre la maquina a la que queremos escanear.

escaneo -sW:
Window Scan, Se trata de un escaneo similar al -sA, con la diferencia de que en ocasiones puede determinar si un puerto se encuentra abierto o no, dependiendo de las anomalías del protocolo TCP sobre el tamaño de ventana (window size) en algunos SO.
escaneo -sR:
Permite determinar si un puerto abierto (TCP o UDP) tiene un servicio RPC activo, trata de determinar el programa y versión del mismo, normalmente se ejecuta acompañado alguno de los otros escaneos anteriormente descritos.
escaneo -sL:
Realiza el listado de IP’s y nombres sin realizar un escaneo activo o un TCP ping contra la maquina objetivo.

Proximamente un poco mas sobre Nmap.

Categorías:Hacking, Networking Etiquetas: ,
  1. luis
    julio 6, 2012 en 9:50 pm

    excelente explicacion¡¡ muy detallada aunque desconozco algunas¡¡ :S pero las investigare¡¡ 😉

    Me gusta

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: