Nmap (“mapeador de redes”) es una herramienta de código abierto para exploración de red y auditoría de seguridad. Se diseñó para analizar rápidamente grandes redes, aunque funciona muy bien contra equipos individuales.
Para saber como instalar Nmap pueden leer el siguiente articulo.
-sS
(sondeo TCP SYN)abierto
, cerrado
, y filtrado
.A esta técnica se la conoce habitualmente como sondeo medio abierto, porque 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 entonces el puerto se marca como filtrado. También se marca el puerto como filtrado si se recibe un error de tipo ICMP no alcanzable (tipo 3, códigos 1,2, 3, 9, 10, ó 13).
-sT
(sondeo TCP connect())connect()
, a diferencia de otros tipos de sondeo, que escriben los paquetes a bajo nivel. Ésta es la misma llamada del sistema de alto nivel que la mayoría de las aplicaciones de red, como los navegadores web o los clientes P2P, utilizan para establecer una conexión. Esta llamada es parte del interfaz de programación conocido como la API de conectores de Berkeley. También, en lugar de leer las respuestas directamente de la línea, Nmap utiliza esta API para obtener la información de estado de cada intento de conexión.Generalmente es mejor utilizar un sondeo SYN, si éste está disponible. Nmap tiene menos control sobre la llamada de alto nivel
Connect()
que cuando utiliza paquetes en crudo, lo que hace que sea menos eficiente. La llamada al sistema completa las conexiones para abrir los puertos objetivo, en lugar de realizar el reseteo de la conexión medio abierta como hace el sondeo SYN. Esto significa que se tarda más tiempo y son necesarios más paquetes para obtener la información, pero también significa que los sistemas objetivos van a registrar probablemente la conexión. Un IDS decente detectará cualquiera de los dos, pero la mayoría de los equipos no tienen este tipo de sistemas de alarma. Sin embargo, muchos servicios de los sistemas UNIX habituales añadirán una nota en el syslog, y algunas veces con un mensaje de error extraño, dado que Nmap realiza la conexión y luego la cierra sin enviar ningún dato. Los servicios realmente patéticos morirán cuando ésto pasa, aunque esto no es habitual. Un administrador que vea muchos intentos de conexión en sus registros que provengan de un único sistema debería saber que ha sido sondeado con este método.-sU
(sondeos UDP)El sondeo UDP se activa con la opción
-sU
. Puede combinarse con un tipo de sondeo TCP como el sondeo SYN (-sS
) para comprobar ambos protocolos al mismo tiempo.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 (tipo 3, código 3) entonces se marca el puerto como
cerrado
. Si se recibe cualquier error ICMP no alcanzable (tipo 3, 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 de verdad los puertos abiertos de los filtrados.Uno de las grandes problemas con el sondeo UDP es hacerlo rápidamente. Pocas veces llega una respuesta de un puerto abierto o filtrado, lo que obliga a expirar a Nmap y luego a retransmitir los paquetes en caso de que la sonda o la respuesta se perdieron. Los puertos cerrados son aún más comunes y son un problema mayor. Generalmente envían un error ICMP de puerto no alcanzable. Pero, a diferencia de los paquetes RST que envían los puertos TCP cerrados cuando responden a un sondeo SYN o Connect, muchos sistemas imponen una tasa máxima de mensajes ICMP de puerto inalcanzable por omisión. Linux y Solaris son muy estrictos con esto. Por ejemplo, el núcleo de Linux versión 2.4.20 limita la tasa de envío de mensajes de destino no alcanzable a uno por segundo (en
net/ipv4/icmp.c
).Nmap detecta las limitaciones de tasa y se ralentiza para no inundar la red con paquetes inútiles que el equipo destino acabará descartando. Desafortunadamente, un límite como el que hace el núcleo de Linux de un paquete por segundo hace que un sondeo de 65536 puertos tarde más de 18 horas. Puede acelerar sus sondeos UDP incluyendo más de un sistema para sondearlos en paralelo, haciendo un sondeo rápido inicial de los puertos más comunes, sondeando detrás de un cortafuegos, o utilizando la opción
--host-timeout
para omitir los sistemas que respondan con lentitud.-sN
; -sF
; -sX
(sondeos TCP Null, FIN, y Xmas)--scanflags
que se describe en la próxima sección) aprovechan una indefinición en la RFC de TCP que diferencia los puertos abiertos
y cerrados
. La página 65 dice que “si el estado del puerto [destino] es CERRADO .... un segmento entrante que contiene un RST hace que se envíe un RST en la respuesta.” Después la página siguiente discute los paquetes que se envían a puertos abiertos sin fijar los bits SYN, RST, o ACK, diciendo: “es improbable que llegue aquí, pero si lo hace, debe descartar el segmento y volver.”Cuando se sondean sistemas que cumplen con el texto de esta RFC, cualquier paquete que no contenga los bits SYN, RST, o ACK resultará en el envío de un RST si el puerto está cerrado. Mientras que no se enviará una respuesta si el puerto está cerrado. Siempre y cuando se incluyan esos tres bits es válida la combinación de cualquiera de los otros tres (FIN, PSH, y URG). Nmap aprovecha esto con tres tipos de sondeo:
- Sondeo Null(
-sN
) - No fija ningún bit (la cabecera de banderas TCP es 0)
- sondeo FIN (
-sF
) - Solo fija el bit TCP FIN.
- sondeo Xmas (
-sX
) - Fija los bits de FIN, PSH, y URG flags, iluminando el paquete como si fuera un árbol de Navidad.
cerrado
. Si no se recibe ninguna respuesta el puerto se marca como abierto|filtrado
. El puerto se marca filtrado
si se recibe un error ICMP no alcanzable (tipo 3, código 1, 2, 3, 9, 10, o 13).La ventaja fundamental de este tipo de sondeos es que pueden atravesar algunos cortafuegos que no hagan inspección de estados o encaminadores que hagan filtrado de paquetes. Otra ventaja es que este tipo de sondeos son algo más sigilosos que, incluso, un sondeo SYN. Sin embargo, no cuente con que pase siempre esto ya que la mayoría de los productos IDS pueden configurarse para detectarlos. El problema es que no todos los sistemas siguen el estándar RFC 793 al pie de la letra. Algunos sistemas envían respuestas RST a las sondas independientemente de si el puerto está o no cerrado. Esto hace que la mayoría de los puertos se marquen como
cerrados
. Algunos sistemas operativos muy utilizados que hacen ésto son Microsoft Windows, muchos dispositivos Cisco, BSDI, e IBM OS/400. Este sondeo no funciona contra sistemas basados en UNIX. Otro problema de estos sondeos es que no se puede distinguir los puertos abiertos
de algunos puertosfiltrados
, lo que resulta en la respuesta abierto|filtrado
.-sA
(sondeo TCP ACK)abiertos
(o incluso abiertos|filtrados
). Se utiliza para mapear reglas de cortafuegos, y para determinar si son cortafuegos con inspección de estados y qué puertos están filtrados.La sonda de un sondeo ACK sólo tiene fijada la bandera ACK (a menos que utilice
--scanflags
). Cuando se sondean sistemas no filtrados los puertos abiertos
ycerrados
devolverán un paquete RST. 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 (tipo 3, código 1, 2, 3, 9, 10, o 13), se marcan como filtrados
.-sW
(sondeo de ventana TCP)no filtrado
cuando se devuelve un RST. Hace esto examinando el campo de ventana TCP del paquete RST devuelto. Algunos sistemas fijan un tamaño de ventana positivo para puertos abiertos (incluso para paquetes RST) mientras que se utiliza una ventana de tamaño cero para los cerrados. Así, en lugar de listar el puerto como no filtrado
cuando se recibe un RST, el sondeo de ventana permite listar el puerto como abierto
o cerrado
en función de si el valor de la ventana TCP en ese paquete RST es positivo o cero, respectivamente.Este sondeo depende de un detalle de implementación de una minoría de sistemas q que existen en Internet, así que no es siempre fiable. Los sistemas que no hacen ésto habitualmente harán que se muestren los puertos como
cerrados
. Por supuesto, es posible que el sistema no tenga ningún puerto abierto. Si la mayoría de los puertos están cerrados
pero alguno de los números de puertos comunes (como pueda ser el 22, 25 ó 53) están filtrados
, entonces el sistema es posible que sea susceptible a ésto. Algunas veces hay sistemas que mostrarán el comportamiento justo contrario. Si su sondeo muestra 1000 puertos abiertos y 3 puertos cerrados o filtrados entonces es posible que sean estos últimos los que están abiertos en realidad.-sM
(sondeo TCP Maimon)--scanflags
(Sondeo TCP a medida)--scanflags
le permite diseñar su propio sondeo mediante la especificación de banderas TCP arbitrarias. Deje volar a su imaginación al tiempo que evita las reglas de los sistemas de detección de intrusos cuyos fabricantes sólo echaron un vistazo a la página de manual de Nmap y añadieron reglas específicas para detectarlo.La opción
--scanflags
puede ser un valor numérico como el 9 (PSH y FIN), aunque es más sencillo utilizar nombres simbólicos. Sólo tienes que juntar una combinación de URG
, ACK
, PSH
, RST
, SYN
, y FIN
. Por ejemplo, la configuración --scanflags URGACKPSHRSTSYNFIN
fija todas las banderas, aunque no es muy útil para sondear. No importa el orden en que se especifiquen los nombres.Además de poder especificar las banderas que desee se puede especificar el tipo de sondeo TCP (como
-sA
o -sF
). Ésto le dice a Nmap cómo debe interpretar las respuestas. Por ejemplo, un sondeo SYN considera que si no se recibe respuesta el puerto está filtrado
mientras que si no se recibe una respuesta en un sondeo FIN se trata como abierto|filtrado
. Nmap se comportará igual que para el sondeo tipo base, con la diferencia de que utilizará las banderas TCP que usted especifique. Se utiliza el sondeo SYN si no se especifica ningún tipo base.-sI <sistema zombi [:puerto_sonda]>
(Sondeo ocioso)Además de ser extraordinariamente sigiloso (debido a su funcionamiento a ciegas), este tipo de sondeo permite determinar las relaciones basadas en IP entre distintos sistemas. El listado de puertos muestra los puertos abiertos desde la perspectiva del sistema zombi. Así que puede analizar el mismo objetivo con zombis distintos que cree que podrían ser de confianza para éste (a través de las reglas de filtrados de los paquetes o reglas de filtrados de encaminadores).
Puede añadir un número de puerto separado por dos puntos del sistema zombi si desea analizar un puerto específico del zombi para consultar los cambios IPID. Si no lo hace Nmap utilizará el puerto que utiliza para pings TCP por omisión (el puerto 80).
-sO
(sondeo de protocolo IP)-p
para seleccionar los números de protocolo a analizar, los resultados se muestran en el formato de tabla utilizado para los puertos e incluso utiliza el mismo motor de sondeo que los métodos de sondeo de puertos reales. Es tan parecido a un sondeo de puertos que debe tratarse aquí.El sondeo de protocolos, además de ser útil en sí mismo, demuestra el poder del software de fuentes abiertas («opensource», N. del T.). Aunque la idea fundamental era bastante sencilla, no había pensado añadirla ni tampoco había habido personas que solicitaran esta funcionalidad. Entonces, en el verano de 2000, se le ocurrió la idea a Gerhard Rieger y la implementó escribiendo un parche excelente, enviándolo posteriormente a la lista de correo de nmap-hackers. Incorporé ese parche en el árbol de código de Nmap y publiqué una nueva versión ese mismo día. ¡Pocas piezas de programas comerciales tienen usuarios tan entusiastas que diseñan y contribuyen sus propias mejoras!
El sondeo de protocolos utiliza mecanismos parecidos al sondeo UDP. Envía cabeceras de paquetes IP iterando por el campo de 8 bits que indica el protocolo IP, en lugar de iterar por el campo de número de puerto de un paquete UDP. Las cabeceras generalmente están vacías y no contienen datos. De hecho, ni siquiera tienen una cabecera apropiada para el protocolo que se indica. Las tres excepciones son TCP, UDP e ICMP. Se incluye una cabecera de protocolo válida para éstos porque algunos sistemas no los enviarán sin ellas y porque Nmap ya tiene funciones para crearlas. El sondeo de protocolos espera la recepción de mensajes de ICMPprotocolo no alcanzable en lugar de mensajes ICMP puerto no alcanzable. Nmap marca el protocolo como
abierto
si recibe una respuesta en cualquier protocolo del sistema objetivo. Se marca como cerrado
si se recibe un error ICMP de protocolo no alcanzable (tipo 3, código 2). Si se reciben otros errores ICMP no alcanzable (tipo 3, códigos 1, 3, 9, 10, o 13) se marca el protocolo como filtrado
(aunque al mismo tiempo indican que el protocolo ICMP está abierto
). El protocolo se marca como abierto|filtrado
si no se recibe ninguna respuesta después de las retransmisiones.-b <sistema de rebote ftp>
(sondeo de rebote FTP)-b
. Esta opción toma un argumento como: <usuario>
:<contraseña>
@<servidor>
:<puerto>
. <Servidor>
es el nombre de la dirección IP del servidor FTP vulnerable. Al igual que con una URL normal, se puede omitir <usuario>
:<contraseña>
, en caso de que se deseen utilizar credenciales de acceso anónimo (usuario: anonymous
contraseña:wwwuser@
) También se puede omitir el número de puerto (y los dos puntos que lo preceden). Si se omiten se utilizará el puerto FTP estándar (21) en <servidor>
.Esta vulnerabilidad era muy habitual en 1997, el año que se publicó Nmap, pero ya ha sido arreglada en muchos sitios. Aún siguen existiendo servidores vulnerables así que merece la pena probar este sondeo si lo demás falla. Si su objetivo es atravesar un cortafuegos, analice la red objetivo en busca del puerto 21 (o incluso cualquier servicio FTP, si sondea todos los puertos y activa la detección de versiones). Después intente un sondeo de rebote utilizando cada uno. Nmap le indicará si el sistema es o no vulnerable. Si está intentado ocultar sus huellas no tiene que (y de hecho no debería) limitarse a servidores en la red objetivo. En cualquier caso, antes de empezar a sondear Internet al azar para buscar servidores de FTP vulnerables, tenga en cuenta que pocos administradores de sistemas apreciarán el que abuse de sus servidores de esta forma.
Información tomada de Nmap.org
Comentarios
Publicar un comentario