NMAP(1) Guia de referencia de Nmap NMAP(1) NOMBRE nmap - Herramienta de exploracion de redes y de sondeo de seguridad / puertos SINOPSIS nmap [Tipo de sondeo...] [Opciones] {especificacion de objetivo} DESCRIPCION Nmap ("mapeador de redes") es una herramienta de codigo abierto para exploracion de red y auditoria de seguridad. Se diseno para analizar rapidamente grandes redes, aunque funciona muy bien contra equipos individuales. Nmap utiliza paquetes IP "crudos" (<>, N. del T.) en formas originales para determinar que equipos se encuentran disponibles en una red, que servicios (nombre y version de la aplicacion) ofrecen, que sistemas operativos (y sus versiones) ejecutan, que tipo de filtros de paquetes o cortafuegos se estan utilizando asi como docenas de otras caracteristicas. Aunque generalmente se utiliza Nmap en auditorias de seguridad, muchos administradores de redes y sistemas lo encuentran util para realizar tareas rutinarias, como puede ser el inventariado de la red, la planificacion de actualizacion de servicios y la monitorizacion del tiempo que los equipos o servicios se mantiene activos. La salida de Nmap es un listado de objetivos analizados, con informacion adicional para cada uno dependiente de las opciones utilizadas. La informacion primordial es la "tabla de puertos interesantes". Dicha tabla lista el numero de puerto y protocolo, el nombre mas comun del servicio, y su estado. El estado puede ser open (abierto), filtered (filtrado), closed (cerrado), o unfiltered (no filtrado). Abierto significa que la aplicacion en la maquina destino se encuentra esperando conexiones o paquetes en ese puerto. Filtrado indica que un cortafuegos, filtro, u otro obstaculo en la red esta bloqueando el acceso a ese puerto, por lo que Nmap no puede saber si se encuentra abierto o cerrado. Los puertos cerrados no tienen ninguna aplicacion escuchando en los mismos, aunque podrian abrirse en cualquier momento. Los clasificados como no filtrados son aquellos que responden a los sondeos de Nmap, pero para los que que Nmap no puede determinar si se encuentran abiertos o cerrados. Nmap informa de las combinaciones de estado open|filtered y closed|filtered cuando no puede determinar en cual de los dos estados esta un puerto. La tabla de puertos tambien puede incluir detalles de la version de la aplicacion cuando se ha solicitado deteccion de versiones. Nmap ofrece informacion de los protocolos IP soportados, en vez de puertos abiertos, cuando se solicita un analisis de protocolo IP con la opcion (-sO). Ademas de la tabla de puertos interesantes, Nmap puede dar informacion adicional sobre los objetivos, incluyendo el nombre de DNS segun la resolucion inversa de la IP, un listado de sistemas operativos posibles, los tipos de dispositivo, y direcciones MAC. Puede ver un analisis tipico con Nmap en Ejemplo 1, "Ejemplo tipico de analisis con Nmap". Los unicos parametros de Nmap que se utilizan en este ejemplo son la opcion -A, que habilita la deteccion de sistema operativo y version, y la opcion -T4 que acelerar el proceso, y despues el nombre de los dos objetivos. Ejemplo 1. Ejemplo tipico de analisis con Nmap # nmap -A -T4 scanme.nmap.org saladejuegos Starting nmap ( https://nmap.org/ ) Interesting ports on scanme.nmap.org (205.217.153.62): (The 1663 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Uptime 33.908 days (since Thu Jul 21 03:38:03 2005) Interesting ports on saladejuegos.nmap.org (192.168.0.40): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900) 5900/tcp open vnc VNC (protocol 3.8) MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP OS details: Microsoft Windows XP Pro RC1+ through final release Service Info: OSs: Windows, Windows XP Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds Puede obtener la version mas reciente de Nmap en https://nmap.org/. La version mas reciente de la pagina de manual esta disponible en https://nmap.org/man/. NOTAS DE LA TRADUCCION Esta edicion de la Guia de referencia de Nmap ha sido traducida de la version 3137 de la version original en ingles[1] por Arturo Busleiman , Pablo Fernandez y Javier Fernandez-Sanguino . Aunque nuestra intencion es hacer Nmap mas accesible a los lectores espanoles en todo el mundo no podemos garantizar que esta traduccion esta tan actualizada o completa como la version oficial en ingles. Este trabajo puede ser modificado y redistribuido bajo los terminos de la Licencia Creative Commons Atribucion[2]. Esta traduccion ha sido adaptada al espanol como se habla en Espana (localizacion <>) por Javier Fernandez-Sanguino. Cualquier comentario o errata sobre esta traduccion debe enviarse a Javier Fernandez-Sanguino a la direccion arriba indicada. El coordinador de la traduccion quiere agradecer el esfuerzo de revision realizado por Jesus Escoredo. Glosario de traduccion A continuacion se listan las traducciones utilizadas a los terminos originales en ingles en este documento, es decir, el glosario utilizado en este documento: Decoy Traducido con el termino <>. Fingerprinting <> (se entiende digitales), se utilizado conjuntamente con la deteccion de sistema operativo por lo que a veces se utiliza este o se reduce a <>. Host Traducido habitualmente como <> o <>. Port scan Barrido de puertos. (to) Probe Traducido con el termino <> (o <>). (to) Scan Traducido como <> (o <>) o <> (o <>), no se utiliza <> (o <>) ya que este termino es, literalmente "pasar por el escaner". (To) Spoof Traducido por <>. Existen otros terminos que puedan aparecer en el documento traducidos pero cuya traduccion es ambigua. En este caso las traducciones se introducen en el texto acompanadas de notas de traduccion (mostradas como <>) indicando el termino original la primera vez que este aparezca en el texto. Notese que este glosario difiere en algunos terminos del utilizado para otras traducciones, como la traduccion realizada por Marbo Babosa del articulo Deteccion Remota de SO via Reconocimiento de Pila TCP/IP[3] (documento traducido al espanol como se habla en Mexico). RESUMEN DE OPCIONES Cuando se ejecuta Nmap sin parametros se muestra este resumen de opciones. Puede encontrar siempre la ultima version en https://nmap.org/data/nmap.usage.txt. Aunque ayuda a recordar las opciones mas habituales no es un sustituto de la documentacion en detalle que acompana al resto de este manual. Algunas de las opciones menos conocidas no se incluyen aqui. Uso: nmap [Tipo(s) de Analisis] [Opciones] {especificacion de objetivos} ESPECIFICACION DE OBJETIVO: Se pueden indicar nombres de sistema, direcciones IP, redes, etc. Ej: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL : Lee una lista de sistemas/redes del archivo. -iR : Selecciona objetivos al azar --exclude : Excluye ciertos sistemas o redes --excludefile : Excluye los sistemas indicados en el fichero DESCUBRIMIENTO DE HOSTS: -sL: Sondeo de lista - Simplemente lista los objetivos a analizar -sP: Sondeo Ping - Solo determina si el objetivo esta vivo -P0: Asume que todos los objetivos estan vivos -PS/PA/PU [listadepuertos]: Analisis TCP SYN, ACK o UDP de los puertos indicados -PE/PP/PM: Solicita un analisis ICMP del tipo echo, marca de fecha y mascara de red -n/-R: No hacer resolucion DNS / Siempre resolver [por omision: a veces] --dns-servers : Especificar servidores DNS especificos --system-dns: Utilizar la resolucion del sistema operativo TECNICAS DE ANALISIS: -sS/sT/sA/sW/sM: Analisis TCP SYN/Connect()/ACK/Window/Maimon -sN/sF/sX: Analisis TCP Null, FIN, y Xmas --scanflags : Personalizar los indicadores TCP a utilizar -sI : Analisis pasivo (<>, N. del T.) -sO: Analisis de protocolo IP -b : Analisis por rebote FTP ESPECIFICACION DE PUERTOS Y ORDEN DE ANALISIS: -p : Solo sondear los puertos indicados Ej: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080 -F: Rapido - Analizar solo los puertos listados en el archivo nmap-services -r: Analizar los puertos secuencialmente, no al azar. DETECCION DE SERVICIO/VERSION: -sV: Sondear puertos abiertos, para obtener informacion de servicio/version --version-intensity : Fijar de 0 (ligero) a 9 (probar todas las sondas) --version-light: Limitar a las sondas mas probables (intensidad 2) --version-all: Utilizar todas las sondas (intensidad 9) --version-trace: Presentar actividad detallada del analisis (para depurar) DETECCION DE SISTEMA OPERATIVO -O: Activar la deteccion de sistema operativo (SO) --osscan-limit: Limitar la deteccion de SO a objetivos prometedores --osscan-guess: Adivinar el SO de la forma mas agresiva TEMPORIZADO Y RENDIMIENTO: -T[0-5]: Seleccionar plantilla de temporizado (los numeros altos son mas rapidos) --min-hostgroup/max-hostgroup : Paralelizar los sondeos --min-parallelism/max-parallelism : Paralelizacion de sondeos --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Indica el tiempo de ida y vuelta de la sonda --max-retries : Limita el numero maximo de retransmisiones de las sondas de analisis de puertos --host-timeout : Abandonar un objetivo pasado este tiempo --scan-delay/--max-scan-delay : Ajusta el retraso entre sondas EVASION Y FALSIFICACION PARA CORTAFUEGOS/IDS: -f; --mtu : fragmentar paquetes (opc. con el MTU indicado) -D : Disimular el analisis con senuelos N. del T.: <> es <> mismo. -S : Falsificar la direccion IP origen -e : Utilizar la interfaz indicada -g/--source-port : Utilizar el numero de puerto dado --data-length : Agregar datos al azar a los paquetes enviados --ttl : Fijar el valor del campo time-to-live (TTL) de IP --spoof-mac : Falsificar la direccion MAC --badsum: Enviar paquetes con una suma de comprobacion TCP/UDP falsa SALIDA: -oN/-oX/-oS/-oG : Guardar el sondeo en formato normal, XML, s|: Guardar en los tres formatos principales al mismo tiempo -v: Aumentar el nivel de mensajes detallados (-vv para aumentar el efecto) -d[nivel]: Fijar o incrementar el nivel de depuracion (Tiene sentido hasta 9) --packet-trace: Mostrar todos los paquetes enviados y recibidos --iflist: Mostrar interfaces y rutas (para depurar) --append-output: Agregar, en vez de sobreescribir, a los archivos indicados con -o. --resume : Retomar un analisis abortado/detenido --stylesheet : Convertir la salida XML a HTML segun la hoja de estilo XSL indicada --webxml: Referenciar a la hoja de estilo de Insecure.Org para tener un XML mas portable --no-stylesheet: No asociar la salida XML con ninguna hoja de estilos XSL MISCELANEO: -6: Habilitar analisis IPv6 -A: Habilita la deteccion de SO y de version --datadir : Indicar la ubicacion de los archivos de datos Nmap personalizados. --send-eth/--send-ip: Enviar paquetes utilizando tramas Ethernet o paquetes IP "crudos" --privileged: Asumir que el usuario tiene todos los privilegios -V: Muestra el numero de version -h: Muestra esta pagina resumen de la ayuda. EJEMPLOS: nmap -v -A scanme.nmap.org nmap -v -sP 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -P0 -p 80 ESPECIFICACION DE OBJETIVOS Todo lo que se escriba en la linea de parametros de Nmap que no sea una opcion se considera una especificacion de sistema objetivo. El caso mas sencillo es la indicacion de solo una IP, o nombre de sistema, para que sea analizado. Puede darse la situacion en que uno desee analizar una red completa de equipos adyacentes. Nmap soporta el direccionamiento estilo CIDR para estos casos. Puede anadir /numBits a una direccion IP o nombre de sistema para que Nmap sondee toda IP cuyos primeros numBits sean los mismos que los de la direccion IP o nombre de sistema indicado. Por ejemplo, 192.168.10.0/24 analizaria los 256 sistemas que existen entre la direccion 192.168.10.0 (que en binario se representa como 11000000 10101000 00001010 00000000) y la direccion 192.168.10.255 (binario: 11000000 10101000 00001010 11111111), ambas inclusives. De hecho, si usa 192.168.10.40/24 obtendria exactamente el mismo resultado. En el caso del sistema scanme.nmap.org que posee una direccion IP 205.217.153.62, la especificacion scanme.nmap.org/16 analizaria las 65.536 direcciones IP entre 205.217.0.0 y 205.217.255.255. La mascara mas pequena permitida es /1, que analizaria media Internet. La mas grande, /32, analizaria unicamente la IP o nombre de sistema indicados porque todos los bits estarian fijos. La notacion CDIR es breve pero no siempre es suficiemente flexible. Por ejemplo, puede querer sondear la red 192.168.0.0/16 pero omitir cualquier IP que termine por .0 o por .255 ya que son habitualmente direcciones de difusion. Es posible hacer esto con Nmap mediante el direccionamiento por octetos. En lugar de especificar una direccion IP normal puede especificar una lista separada por comas de numeros o rangos para cada octeto. Por ejemplo, si utiliza 192.168.0-255.1-254 se omitiran todas las direcciones del rango que terminen en .0 o .255. Los rangos no tienen por que estar limitados a los ultimos octetos. Por ejemplo, si especifica 0-255.0-255.13.37 se realizara un sondeo en todo Internet de las direcciones IP que terminan en 13.37. Este tipo de muestreo amplio puede ser util para encuestas en Internet y con fines de investigacion. Solo puede especificar direcciones IPv6 si utiliza su nombre IPv6 totalmente cualificado o su nombre de sistema. No se soporta el uso de CIDR o rangos de octetos para IPv6 porque raramente son utiles. Con Nmap puede especificar multiples sistemas en la linea de ordenes y no tienen por que ser del mismo tipo. Por ejemplo, la orden nmap scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255 hace lo que uno esperaria. Aunque habitualmente se especifican los objetivos en la linea de ordenes puede utilizar las siguientes opciones para controlar la seleccion de objetivos: -iL (Entrada de una lista) Toma la especificacion de objetivos del archivo archivo_entrada. Habitualmente es un tanto molesto especificar una lista de sistemas muy grande en la linea de ordenes, pero es algo que tambien uno quiere hacer. Por ejemplo, si tu servidor DHCP puede exportar un listado de las 10.000 direcciones entregadas IP que querria analizar. O tal vez quiera analizar todas las direcciones IP excepto esas mismas direcciones, para asi localizar sistemas que esten utilizando direcciones IP estaticas sin autorizacion. Para sondear un numero elevado de objetivos solo tiene que generar la lista en un archivo, y entregarselo a Nmap con la opcion -iL. Las entradas de ese archivo pueden estar en cualquiera de los formatos aceptados por Nmap en la linea de ordenes (direcciones IP, nombres de sistema, CIDR, IPv6 o rangos de octeto). Cada elemento debe estar separado por uno o mas espacios, tabuladores, o por lineas. Si quiere leer el archivo de la entrada estandar puede especificar un guion (-) como nombre de archivo. -iR (Elegir objetivos al azar) Cuando se quieren realizar encuestas que cubran toda Internet uno puede querer elegir objetivos al azar. La opcion cant. sistemas indica a Nmap cuantas direcciones IP debe generar aleatoriamente. Se filtran de forma automatica las direcciones no deseables, incluyendo las direcciones privadas, de multicast o direccionamiento no asignado. Si se utiliza el valor 0, Nmap realizara un analisis que no acabara nunca. Hay que tener en cuenta que a algunos administradores de red puede no gustarle que les analicen sus redes, y pueden llegar a quejarse !Utilice esta opcion bajo su propia responsabilidad! Si esta realmente aburrido un dia de tarde lluviosa, puede intentar la orden nmap -sS -PS80 -iR 0 -p 80 para encontrar servidores web al azar para navegar. --exclude (Excluir equipo o redes) Indica con una lista separada por comas los objetivos que deben excluirse del analisis. Se excluiran aunque se encuentren dentro de un rango especificado en la linea de ordenes. La lista que se indica utiliza la sintaxis normal de Nmap, por lo que puede incluir nombres de equipo, rangos de red CIDR, rangos de octeto, etc. Esto puede ser util cuando la red a analizar tiene objetivos que no se deben tocar, como puedan ser servidores de mision critica, que pueden reaccionar adversamente a un analisis de puertos, o si la red incluye subredes administradas por otras personas. --excludefile (Excluir desde una Lista) Al igual que --exclude, esta funcion permite excluir objetivos, pero en lugar de utilizar la linea de ordenes toma el listado de un archivo, que utiliza la misma sintaxis que la opcion -iL. DESCUBRIENDO SISTEMAS Uno de los primeros pasos en cualquier mision de reconocimiento de red es el de reducir un (muchas veces enorme) conjunto de rangos de direcciones IP en una lista de equipos activos o interesantes. Analizar cada puerto de cada una de las direcciones IP es lento, y usualmente innecesario. Por supuesto, lo que hace a un sistema interesante depende ampliamente del proposito del analisis. Los administradores de red pueden interesarse solo en equipos que esten ejecutando un cierto servicio, mientras que los auditores de seguridad pueden interesarse en todos y cada uno de los dispositivos que tengan una direccion IP. Un administrador puede sentirse comodo con obtener un listado de equipos en su red interna mediante un ping ICMP, mientras que un consultor en seguridad realizando un ataque externo puede llegar a utilizar un conjunto de docenas de sondas en su intento de saltarse las restricciones de los cortafuegos. Siendo tan diversas las necesidades de descubrimiento de sistemas, Nmap ofrece una gran variedad de opciones para personalizar las tecnicas utilizadas. Al descubrimiento de sistemas (<>) se lo suele llamar sondeo ping, pero va mas alla de la simple solicitud ICMP echo-request de los paquetes asociados al querido y nunca bien ponderado ping. Los usuarios pueden evitar el paso de ping utilizando un sondeo de lista (-sL) o deshabilitando el ping (-P0), o enviando combinaciones arbitrarias de sondas TCP SYN/ACK, UDP e ICMP a multiples puertos de la red remota. El proposito de estas sondas es el de solicitar respuestas que demuestren que una direccion IP se encuentra activa (esta siendo utilizada por un equipo o dispositivo de red). En varias redes solo un pequeno porcentaje de direcciones IP se encuentran activos en cierto momento. Esto es particularmente comun en las redes basadas en direccionamiento privado RFC1918, como la 10.0.0.0/8. Dicha red tiene mas de 16 millones de direcciones IP, pero la he visto siendo utilizada por empresas con menos de mil maquinas. El descubrimiento de sistemas puede encontrar dichas maquinas en un rango tan grande como el indicado. Si no se proveen opciones de descurbrimiento de sistemas, Nmap envia un paquete TCP ACK al puerto 80 y un ICMP Echo Request a cada maquina objetivo. Una excepcion a este comportamiento es cuando se utiliza un analisis ARP, para los objetivos que se encuentren en la red Ethernet local. Para usuarios de shell UNIX que no posean privilegios, un paquete SYN es enviado en vez del ACK, utilizando la llamada al sistema connect(). Estos valores por omision son el equivalente a las opciones -PA -PE. Este descubrimiento de sistemas es generalmente suficiente cuando se analizan redes locales, pero para auditorias de seguridad se recomienda utilizar un conjunto mas completo de sondas de descubrimiento. Las opciones -P* (que permiten seleccionar los tipos de ping) pueden combinarse. Puede aumentar sus probabilidades de penetrar cortafuegos estrictos enviando muchos tipos de sondas utilizando diferentes puertos o banderas TCP y codigos ICMP. Recuerde que el ARP discovery (-PR) se realiza por omision contra objetivos de la red Ethernet local incluso si se especifica otra de las opciones -P*, porque es generalmente mas rapido y efectivo. Las siguientes opciones controlan el descubrimiento de sistemas. -sL (Sondeo de lista) El sondeo de lista es un tipo de descubrimiento de sistemas que tan solo lista cada equipo de la/s red/es especificada/s, sin enviar paquetes de ningun tipo a los objetivos. Por omision, Nmap va a realizar una resolucion inversa DNS en los equipos, para obtener sus nombres. Es sorprendente cuanta informacion util se puede obtener del nombre de un sistema. Por ejemplo fw.chi.playboy.com es el cortafuegos de la oficina en Chicago de Playboy Enterprises. Adicionalmente, al final, Nmap reporta el numero total de direcciones IP. El sondeo de lista es una buena forma de asegurarse de que tenemos las direcciones IP correctas de nuestros objetivos. Si se encontraran nombres de dominio que no reconoces, vale la pena investigar un poco mas, para evitar realizar un analisis de la red de la empresa equivocada. Ya que la idea es simplemente emitir un listado de los sistemas objetivo, las opciones de mayor nivel de funcionalidad como analisis de puertos, deteccion de sistema operativo, o analisis ping no pueden combinarse con este sondeo. Si desea deshabilitar el analisis ping aun realizando dicha funcionalidad de mayor nivel, compruebe la documentacion de la opcion -P0. -sP (Sondeo ping) Esta opcion le indica a Nmap que unicamente realice descubrimiento de sistemas mediante un sondeo ping, y que luego emita un listado de los equipos que respondieron al mismo. No se realizan mas sondeos (como un analisis de puertos o deteccion de sistema operativo). A diferencia del sondeo de lista, el analisis ping es intrusivo, ya que envia paquetes a los objetivos, pero es usualmente utilizado con el mismo proposito. Permite un reconocimiento liviano de la red objetivo sin llamar mucho la atencion. El saber cuantos equipos se encuentran activos es de mayor valor para los atacantes que el listado de cada una de las IP y nombres proporcionado por el sondeo de lista. De la misma forma, los administradores de sistemas suelen encontrar valiosa esta opcion. Puede ser facilmente utilizada para contabilizar las maquinas disponibles en una red, o monitorizar servidores. A esto se lo suele llamar barrido ping, y es mas fiable que hacer ping a la direccion de broadcast, ya que algunos equipos no responden a ese tipo de consultas. La opcion -sP envia una solicitud de eco ICMP y un paquete TCP al puerto 80 por omision. Cuando un usuario sin privilegios ejecuta Nmap se envia un paquete SYN (utilizando la llamada connect()) al puerto 80 del objetivo. Cuando un usuario privilegiado intenta analizar objetivos en la red Ethernet local se utilizan solicitudes ARP (-PR) a no ser que se especifique la opcion --send-ip. La opcion -sP puede combinarse con cualquiera de las opciones de sondas de descubrimiento (las opciones -P*, excepto -P0) para disponer de mayor flexibilidad. Si se utilizan cualquiera de las opciones de sondas de descubrimiento y numero de puerto, se ignoran las sondas por omision (ACK y solicitud de eco ICMP). Se recomienda utilizar estas tecnicas si hay un cortafuegos con un filtrado estricto entre el sistema que ejecuta Nmap y la red objetivo. Si no se hace asi pueden llegar a pasarse por alto ciertos equipos, ya que el cortafuegos anularia las sondas o las respuestas a las mismas. -P0 (No realizar ping) Con esta opcion, Nmap no realiza la etapa de descubrimiento. Bajo circunstancias normales, Nmap utiliza dicha etapa para determinar que maquinas se encuentran activas para hacer un analisis mas agresivo. Por omision, Nmap solo realiza ese tipo de sondeos, como analisis de puertos, deteccion de version o de sistema operativo contra los equipos que se estan <>. Si se deshabilita el descubrimiento de sistemas con la opcion -P0 entonces Nmap utilizara las funciones de analisis solicitadas contra todas las direcciones IP especificadas. Por lo tanto, si se especifica una red del tamano de una clase B cuyo espacio de direccionamiento es de 16 bits, en la linea de ordenes, se analizara cada una de las 65.536 direcciones IP. El segundo caracter en la opcion -P0 es un cero, y no la letra O. Al igual que con el sondeo de lista, se evita el descubrimiento apropiado de sistemas, pero, en vez de detenerse y emitir un listado de objetivos, Nmap continua y realiza las funciones solicitadas como si cada IP objetivo se encontrara activa. -PS [lista de puertos] (Ping TCP SYN) Esta opcion envia un paquete TCP vacio con la bandera SYN puesta. El puerto destino por omision es el 80 (se puede configurar en tiempo de compilacion cambiando el valor de DEFAULT_TCP_PROBE_PORT en nmap.h), pero se puede anadir un puerto alternativo como parametro. Tambien se puede especificar una lista de puertos separados por comas (p.ej. -PS22,23,25,80,113,1050,35000). Si hace esto se enviaran sondas en paralelo a cada uno de los puertos. La bandera SYN indica al sistema remoto que quiere establecer una conexion. Normalmente, si el puerto destino esta cerrado se recibira un paquete RST (de <>). Si el puerto esta abierto entonces el objetivo respondera con el segundo paso del saludo en tres pasos TCP respondiendo con un paquete TCP SYN/ACK. El sistema donde se ejecuta Nmap rompera la conexion que se esta estableciendo enviando un paquete RST en lugar de enviar el paquete ACK que completaria el saludo TCP. Nmap no envia este paquete, sino que lo envia el nucleo del sistema donde se ejecuta Nmap respondiendo al paquete SYN/ACK que no esperaba. A Nmap no le importa si el puerto esta abierto o cerrado. Si, tal y como se acaba de describir, llega una respuesta RST o SYN/ACK entonces Nmap sabra que el sistema esta disponible y responde. En sistemas UNIX, generalmente solo el usuario privilegiado root puede enviar paquetes TCP crudos. Los usuarios no privilegiados tienen una forma de evitar esta restriccion utilizando la llamada al sistema <> contra el puerto destino. Esto hace que se envie el paquete SYN al sistema, para establecer la conexion. Si la llamada <> devuelve un resultado de exito rapidamente o un fallo ECONNREFUSED entonces se puede deducir que la pila TCP que tiene bajo esta ha recibido un SYN/ACK o un RST y que puede marcar el sistema como disponible. El sistema se puede marcar como no disponible si el intento de conexion se mantiene parado hasta que vence un temporizador. Esta es tambien la forma en la que se gestiona esto en conexiones IPv6 ya que Nmap aun no puede crear paquetes IPv6 crudos. -PA [lista de puertos] (Ping TCP ACK) El ping TCP ACK es muy parecido al ping SYN que se acaba de tratar. La diferencia es que en este caso se envia un paquete con la bandera ACK en lugar de la SYN. Este paquete indica que se han recibido datos en una conexion TCP establecida, pero se envian sabiendo que la conexion no existe. En este caso los sistemas deberian responder con un paquete RST, lo que sirve para determinar que estan vivos. La opcion -PA utiliza el mismo puerto por omision que la sonda SYN (el puerto 80) y tambien puede tomar una lista de puertos destino en el mismo formato. Si un usuario sin privilegios intenta hacer esto, o se especifica un objetivo IPv6, se utiliza el procedimiento descrito anteriormente. Aunque en este caso el procedimiento no es perfecto porque la llamada <> enviara un paquete SYN en lugar de un ACK. Se ofrecen tanto mecanismos de sondeo con ping SYN y ACK para maximizar las posibilidades de atravesar cortafuegos. Muchos administradores configuran los enrutadores y algunos cortafuegos sencillos para que se bloqueen los paquetes SYN salvo para aquellos destinados a los servicios publicos, como pudieran ser el servidor web o el servidor de correo de la organizacion. Esto evita que se realicen otras conexiones entrantes al mismo tiempo que permite a los usuarios realizar conexiones salientes a Internet. Este acercamiento de filtrado sin estados toma pocos recursos de los cortafuegos/enrutadores y esta ampliamente soportado por filtros hardware y software. El programa de cortafuegos Netfilter/iptables de Linux ofrece la opcion --syn para implementar este acercamiento sin estados. Cuando se han implementado reglas de filtrado como estas es posible que se bloqueen las sondas ping SYN (-PS) cuando estas se envien a un puerto cerrado. Sin embargo, en estos casos, las sondas ACK podrian saltarse las reglas y llegar a su destino. Otros tipos de cortafuegos comunes utilizan reglas con estados que descartan paquetes no esperados. Esta funcionalidad se encontraba antes fundamentalmente en los cortafuegos de gama alta pero se ha hecho cada vez mas comun. El sistema Netfilter/iptables de Linux soporta esta posibilidad a traves de la opcion --state, que hace categorias de paquetes en base a su estado de conexion. En estos sistemas es mas probable que funcione una sonda SYN, dado que los paquetes ACK no esperados se reconocen como falsos y se descartan. Una solucion a este dilema es enviar sondas SYN y ACK especificando tanto la opcion -PS como -PA. -PU [lista de puertos] (Ping UDP) El ping UDP es otra opcion para descubrir sistemas. Esta opcion envia un paquete UDP vacio (salvo que se especifique --data-length) a los puertos indicados. La lista de puertos se debe dar en el mismo formato que se ha indicado anteriormente para las opciones -PS y -PA . Si no se especifica ningun puerto se utiliza el puerto 31338 por omision. Se puede configurar este puerto por omision en el momento de compilar cambiando DEFAULT_UDP_PROBE_PORT en nmap.h. Se utiliza un puerto alto y poco comun por omision porque no es deseable enviar este sondeo a otro tipo de puertos. La sonda UDP deberia generar un paquete ICMP de puerto no alcanzable si da contra un puerto cerrado en el equipo objetivo. Si llega este entonces Nmap puede identificar ese sistema como vivo y alcanzable. Otros errores ICMP, como el de sistema o red inalcanzables o TTL excedido indican un sistema que esta muerto o que no es alcanzable. Si no llega ninguna respuesta tambien se entiende que el sistema no esta disponible. Si se alcanza un puerto abierto la mayoria de los servicios simplemente descartaran el paquete vacio y no devolveran ninguna respuesta. Esta es la razon por la que se utiliza el puerto por omision 31338 ya que es poco probable que este utilizandose. Algunos servicios, como chargen, responderan con un paquete UDP vacio lo que ayuda a Nmap a determinar que el sistema esta disponible. La principal ventaja de este tipo de sondeos es que atraviesan cortafuegos y filtros que solo analizan TCP. Yo, por ejemplo, una vez fui propietario de un encaminador de banda ancha inalambrico BEFW11S4. El interfaz externo de este dispositivo filtraba por omision todos los puertos TCP, pero las sondas UDP podian generar mensajes de puerto no alcanzable y permitian detectar al dispositivo. -PE; -PP; -PM (Tipos de ping ICMP) Nmap puede enviar los paquetes estandar que envia el programa ping ademas de los tipos de descubrimiento de equipos con TCP y UDP. Nmap envia paquetes ICMP tipo 7 (<>) a las direcciones IP objetivos y espera recibir un tipo 0 (<>) de los sistemas que esten disponibles. Lamentablemente para los exploradores de redes, muchos sistemas y cortafuegos ahora bloquean esos paquetes en lugar de responder como requiere el estandar RFC 1122[4]. Por esta razon los sondeos que solo utilizan el protocolo ICMP no son muy fiables para analizar sistemas desconocidos en Internet. Aunque pueda ser una forma eficiente y practica de hacerlo para administradores que tengan que monitorizar una red interna. Utilice la opcion -PE para activar este comportamiento de solicitud de eco. Nmap no hace solo esto, aunque la solicitud eco es la consulta estandar de ping ICMP. El estandar ICMP (RFC 792[5]) tambien especifica solicitudes de huellas de tiempo, de informacion y de mascara de red, que corresponden con los codigos 13, 15 y 17 respectivamente. Aunque el objetivo de estas solicitudes es obtener la mascara de red o fecha actual de un sistema tambien pueden utilizarse para descubrir sistemas. Un sistema que responde es por que esta vivo y disponible. Nmap no implementa los paquetes de solicitud de informacion en si, ya que no estan muy soportados. El estandar RFC 1122 insiste en que "un equipo NO DEBE implementar estos mensajes". Las consultas de huella de tiempo y mascara de red se pueden enviar con las opciones -PP y -PM, respectivamente. Si se recibe una respuesta de huella de tiempo (codigo ICMP 14) o de mascara de red (codigo 18) entonces es que el sistema esta disponible. Estas dos consultas pueden ser utiles cuando los administradores bloquean los paquetes de consulta eco explicitamente pero se olvidan de que se pueden utilizar otras consultas ICMP con el mismo fin. -PR (Ping ARP) Una de las formas de uso mas comunes de Nmap es el sondeo de una red de area local Ethernet. En la mayoria de las redes locales hay muchas direcciones IP sin usar en un momento determinado. Esto es asi especialmente en las que utilizan rangos de direcciones privadas definidas en el RFC1918. Cuando Nmap intenta enviar un paquete IP crudo, como pudiera ser una solicitud de eco ICMP, el sistema operativo debe determinar primero la direccion (ARP) correspondiente a la IP objetivo para poder dirigirse a ella en la trama Ethernet. Esto es habitualmente un proceso lento y problematico, dado que los sistemas operativos no se escribieron pensando en que tendrian que hacer millones de consultas ARP contra sistemas no disponibles en un corto periodo de tiempo. El sondeo ARP hace que sea Nmap y su algoritmo optimizado el que se encargue de las solicitudes ARP. Si recibe una respuesta, no se tiene ni que preocupar de los paquetes basados en IP dado que ya sabe que el sistema esta vivo. Esto hace que el sondeo ARP sea mucho mas rapido y fiable que los sondeos basados en IP. Por ello se utiliza por omision cuando se analizan sistemas Ethernet si Nmap detecta que estan en la red local. Nmap utiliza ARP para objetivos en la misma red local aun cuando se utilicen distintos tipos de ping (como -PE o -PS). Si no quiere hacer un sondeo ARP tiene que especificar la opcion --send-ip. -n (No realizar resolucion de nombres) Le indica a Nmap que nunca debe realizar resolucion DNS inversa de las direcciones IP activas que encuentre. Ya que DNS es generalmente lento, esto acelera un poco las cosas. -R (Realizar resolucion de nombres con todos los objetivos) Le indica a Nmap que debera realizar siempre la resolucion DNS inversa de las direcciones IP objetivo. Normalmente se realiza esto solo si se descubre que el objetivo se encuentra vivo. --system-dns (Utilizar resolucion DNS del sistema) Por omision, Nmap resuelve direcciones IP por si mismo enviando las consultas directamente a los servidores de nombres configurados en el sistema, y luego espera las respuestas. Varias solicitudes (generalmente docenas) son realizadas en paralelo para mejorar el rendimiento. Especifica esta opcion si desea que si utilice la resolucion del sistema (una IP por vez utilizando la llamada getnameinfo()). Este metodo es mas lento y raramente util, a no ser que hubiera un error en el codigo DNS de Nmap (por favor, notifiquelo si ese fuera el caso). Este es el metodo por omision para los sondeos IPv6. --dns-servers (Servidores a utilizar para las consultas DNS) Nmap generalmente determina los servidores DNS de su archivo resolv.conf (UNIX) o del registro (Win32). Puede utilizar esta opcion para especificar sus propios servidores. Esta opcion no se utiliza si utiliza la opcion --system-dns o esta realizando un sondeo IPv6. La resolucion a traves de mas de un servidor de DNS es generalmente mas rapida que la consulta a uno solo. INTRODUCCION AL ANALISIS DE PUERTOS Nmap comenzo como un analizador de puertos eficiente, aunque ha aumentado su funcionalidad a traves de los anos, aquella sigue siendo su funcion primaria. La sencilla orden nmap objetivo analiza mas de 1660 puertos TCP del equipo objetivo. Aunque muchos analizadores de puertos han agrupado tradicionalmente los puertos en dos estados: abierto o cerrado, Nmap es mucho mas descriptivo. Se dividen a los puertos en seis estados distintos: abierto, cerrado, filtrado, no filtrado, abierto|filtrado, o cerrado|filtrado. Estos estados no son propiedades intrinsecas del puerto en si, pero describen como los ve Nmap. Por ejemplo, un analisis con Nmap desde la misma red en la que se encuentra el objetivo puede mostrar el puerto 135/tcp como abierto, mientras que un analisis realizado al mismo tiempo y con las mismas opciones, pero desde Internet, puede presentarlo como filtrado. Los seis estados de un puerto, segun Nmap abierto Una aplicacion acepta conexiones TCP o paquetes UDP en este puerto. El encontrar esta clase de puertos es generalmente el objetivo primario de realizar un sondeo de puertos. Las personas orientadas a la seguridad saben que cada puerto abierto es un vector de ataque. Los atacantes y las personas que realizan pruebas de intrusion intentan aprovechar puertos abiertos, por lo que los administradores intentan cerrarlos, o protegerlos con cortafuegos, pero sin que los usuarios legitimos pierdan acceso al servicio. Los puertos abiertos tambien son interesantes en sondeos que no estan relacionados con la seguridad porque indican que servicios estan disponibles para ser utilizados en una red. cerrado Un puerto cerrado es accesible: recibe y responde a las sondas de Nmap, pero no tiene una aplicacion escuchando en el. Pueden ser utiles para determinar si un equipo esta activo en cierta direccion IP (mediante descubrimiento de sistemas, o sondeo ping), y es parte del proceso de deteccion de sistema operativo. Como los puertos cerrados son alcanzables, o sea, no se encuentran filtrados, puede merecer la pena analizarlos pasado un tiempo, en caso de que alguno se abra. Los administradores pueden querer considerar bloquear estos puertos con un cortafuegos. Si se bloquean aparecerian filtrados, como se discute a continuacion. filtrado Nmap no puede determinar si el puerto se encuentra abierto porque un filtrado de paquetes previene que sus sondas alcancen el puerto. El filtrado puede provenir de un dispositivo de cortafuegos dedicado, de las reglas de un enrutador, o por una aplicacion de cortafuegos instalada en el propio equipo. Estos puertos suelen frustrar a los atacantes, porque proporcionan muy poca informacion. A veces responden con mensajes de error ICMP del tipo 3, codigo 13 (destino inalcanzable: comunicacion prohibida por administradores), pero los filtros que sencillamente descartan las sondas sin responder son mucho mas comunes. Esto fuerza a Nmap a reintentar varias veces, considerando que la sonda pueda haberse descartado por congestion en la red en vez de haberse filtrado. Esto ralentiza drasticamente los sondeos. no filtrado Este estado indica que el puerto es accesible, pero que Nmap no puede determinar si se encuentra abierto o cerrado. Solamente el sondeo ACK, utilizado para determinar las reglas de un cortafuegos, clasifica a los puertos segun este estado. El analizar puertos no filtrados con otros tipos de analisis, como el sondeo Window, SYN o FIN, pueden ayudar a determinar si el puerto se encuentra abierto. abierto|filtrado Nmap marca a los puertos en este estado cuando no puede determinar si el puerto se encuentra abierto o filtrado. Esto ocurre para tipos de analisis donde no responden los puertos abiertos. La ausencia de respuesta puede tambien significar que un filtro de paquetes ha descartado la sonda, o que se elimina cualquier respuesta asociada. De esta forma, Nmap no puede saber con certeza si el puerto se encuentra abierto o filtrado. Los sondeos UDP, protocolo IP, FIN, Null y Xmas clasifican a los puertos de esta manera. cerrado|filtrado Este estado se utiliza cuando Nmap no puede determinar si un puerto se encuentra cerrado o filtrado, y puede aparecer aparecer solo durante un sondeo IPID pasivo. TECNICAS DE SONDEO DE PUERTOS Cuando intento realizar un arreglo de mi coche, siendo novato, puedo pasarme horas intentando utilizar mis herramientas rudimentarias (martillo, cinta aislante, llave inglesa, etc.). Cuando fallo miserablemente y llevo mi coche antiguo en grua al taller a un mecanico de verdad siempre pasa lo mismo: busca en su gran cajon de herramientas hasta que saca una herramienta que hace que la tarea se haga sin esfuerzo. El arte de sondear puertos es parecido. Los expertos conocen docenas de tecnicas de sondeo y eligen la mas apropiada (o una combinacion de estas) para la tarea que estan realizando. Los usuarios sin experiencia y los "script kiddies", sin embargo, intentan resolver cada problema con el sondeo SYN por omision. Dado que Nmap es libre, la unica barrera que existe para ser un experto en el sondeo de puertos es el conocimiento. Esto es mucho mejor que el mundo del automovil, donde puedes llegar a saber que necesitas un compresor de tuerca, pero tendras que pagar mil dolares por el. La mayoria de los distintos tipos de sondeo disponibles solo los puede llevar a cabo un usuario privilegiado. Esto es debido a que envian y reciben paquetes en crudo, lo que hace necesario tener acceso como administrador (root) en la mayoria de los sistemas UNIX. En los entornos Windows es recomendable utilizar una cuenta de administrador, aunque Nmap algunas veces funciona para usuarios no privilegiados en aquellas plataformas donde ya se haya instalado WinPcap. La necesidad de privilegios como usuario administrador era una limitacion importante cuando se empezo a distribuir Nmap en 1997, ya que muchos usuarios solo tenian acceso a cuentas compartidas en sistemas como usuarios normales. Ahora, las cosas son muy distintas. Los ordenadores son mas baratos, hay mas personas que tienen acceso permanente a Internet, y los sistemas UNIX (incluyendo Linux y MAC OS X) son mas comunes. Tambien se dispone de una version para Windows de Nmap, lo que permite que se ejecute en mas escritorios. Por todas estas razones, cada vez es menos necesario ejecutar Nmap utilizando cuentas de sistema compartidas. Esto es bueno, porque las opciones que requieren de mas privilegios hacen que Nmap sea mas potente y flexible. Aunque Nmap intenta generar resultados precisos, hay que tener en cuenta que estos resultados se basan en los paquetes que devuelve el sistema objetivo (o los cortafuegos que estan delante de estos). Estos sistemas pueden no ser fiables y enviar respuestas cuyo objetivo sea confundir a Nmap. Son aun mas comunes los sistemas que no cumplen con los estandares RFC, que no responden como deberian a las sondas de Nmap. Son especialmente susceptibles a este problema los sondeos FIN, Null y Xmas. Hay algunos problemas especificos a algunos tipos de sondeos que se discuten en las entradas dedicadas a sondeos concretos. Esta seccion documenta las aproximadamente doce tecnicas de sondeos de puertos que soporta Nmap. Solo puede utilizarse un metodo en un momento concreto, salvo por el sondeo UDP (-sU) que puede combinarse con cualquiera de los sondeos TCP. Para que sea facil de recordar, las opciones de los sondeos de puertos son del estilo -sC, donde C es una letra caracteristica del nombre del sondeo, habitualmente la primera. La unica excepcion a esta regla es la opcion obsoleta de sondeo FTP rebotado (-b). Nmap hace un sondeo SYN por omision, aunque lo cambia a un sondeo Connect() si el usuario no tiene los suficientes privilegios para enviar paquetes en crudo (requiere acceso de administrador en UNIX) o si se especificaron objetivos IPv6. De los sondeos que se listan en esta seccion los usuarios sin privilegios solo pueden ejecutar los sondeos Connect() o de rebote FTP. -sS (sondeo TCP SYN) El sondeo SYN es el utilizado por omision y el mas popular por buenas razones. Puede realizarse rapidamente, sondeando miles de puertos por segundo en una red rapida en la que no existan cortafuegos. El sondeo SYN es relativamente sigiloso y poco molesto, ya que no llega a completar las conexiones TCP. Tambien funciona contra cualquier pila TCP en lugar de depender de la idiosincrasia especifica de una plataforma concreta, al contrario de lo que pasa con los sondeos de Nmap Fin/Null/Xmas, Maimon o pasivo. Tambien muestra una clara y fiable diferenciacion entre los estados abierto, cerrado, y filtrado. A esta tecnica se la conoce habitualmente como sondeo medio abierto, porque no se llega a abrir una conexion TCP completa. Se envia un paquete SYN, como si se fuera a abrir una conexion real y despues se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el puerto esta 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 despues de realizar algunas retransmisiones entonces el puerto se marca como filtrado. Tambien se marca el puerto como filtrado si se recibe un error de tipo ICMP no alcanzable (tipo 3, codigos 1,2, 3, 9, 10, o 13). -sT (sondeo TCP connect()) El sondeo TCP Connect() es el sondeo TCP por omision cuando no se puede utilizar el sondeo SYN. Esto sucede, por ejemplo, cuando el usuario no tiene privilegios para enviar paquetes en crudo o cuando se estan sondeando redes IPv6. Nmap le pide al sistema operativo subyacente que establezcan una conexion con el sistema objetivo en el puerto indicado utilizando la llamada del sistema connect(), a diferencia de otros tipos de sondeo, que escriben los paquetes a bajo nivel. Esta es la misma llamada del sistema de alto nivel que la mayoria de las aplicaciones de red, como los navegadores web o los clientes P2P, utilizan para establecer una conexion. Esta llamada es parte del interfaz de programacion conocido como la API de conectores de Berkeley. Tambien, en lugar de leer las respuestas directamente de la linea, Nmap utiliza esta API para obtener la informacion de estado de cada intento de conexion. Generalmente es mejor utilizar un sondeo SYN, si este esta 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 conexion medio abierta como hace el sondeo SYN. Esto significa que se tarda mas tiempo y son necesarios mas paquetes para obtener la informacion, pero tambien significa que los sistemas objetivos van a registrar probablemente la conexion. Un IDS decente detectara cualquiera de los dos, pero la mayoria de los equipos no tienen este tipo de sistemas de alarma. Sin embargo, muchos servicios de los sistemas UNIX habituales anadiran una nota en el syslog, y algunas veces con un mensaje de error extrano, dado que Nmap realiza la conexion y luego la cierra sin enviar ningun dato. Los servicios realmente pateticos moriran cuando esto pasa, aunque esto no es habitual. Un administrador que vea muchos intentos de conexion en sus registros que provengan de un unico sistema deberia saber que ha sido sondeado con este metodo. -sU (sondeos UDP) Aunque la mayoria de los servicios mas habituales en Internet utilizan el protocolo TCP, los servicios UDP[6] tambien son muy comunes. Tres de los mas comunes son los servicios DNS, SNMP, y DHCP (puertos registrados 53, 161/162, y 67/68 respectivamente). Dado que el sondeo UDP es generalmente mas lento y mas dificil que TCP, algunos auditores de seguridad ignoran estos puertos. Esto es un error, porque es muy frecuente encontrarse servicios UDP vulnerables y los atacantes no ignoran estos protocolos. Afortunadamente, Nmap puede utilizarse para hacer un inventario de puertos UDP. El sondeo UDP se activa con la opcion -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 envio (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, codigo 3) entonces se marca el puerto como cerrado. Si se recibe cualquier error ICMP no alcanzable (tipo 3, codigos 1, 2, 9, 10, o 13) se marca el puerto como filtrado. En algunas ocasiones se recibira una respuesta al paquete UDP, lo que prueba que el puerto esta abierto. Si no se ha recibido ninguna respuesta despues de algunas retransmisiones entonces se clasifica el puerto como abierto|filtrado. Esto significa que el puerto podria estar abierto o que hay un filtro de paquetes bloqueando la comunicacion. Puede utilizarse el sondeo de version (-sV) para diferenciar de verdad los puertos abiertos de los filtrados. Uno de las grandes problemas con el sondeo UDP es hacerlo rapidamente. 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 aun mas comunes y son un problema mayor. Generalmente envian un error ICMP de puerto no alcanzable. Pero, a diferencia de los paquetes RST que envian los puertos TCP cerrados cuando responden a un sondeo SYN o Connect, muchos sistemas imponen una tasa maxima de mensajes ICMP de puerto inalcanzable por omision. Linux y Solaris son muy estrictos con esto. Por ejemplo, el nucleo de Linux version 2.4.20 limita la tasa de envio 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 inutiles que el equipo destino acabara descartando. Desafortunadamente, un limite como el que hace el nucleo de Linux de un paquete por segundo hace que un sondeo de 65536 puertos tarde mas de 18 horas. Puede acelerar sus sondeos UDP incluyendo mas de un sistema para sondearlos en paralelo, haciendo un sondeo rapido inicial de los puertos mas comunes, sondeando detras de un cortafuegos, o utilizando la opcion --host-timeout para omitir los sistemas que respondan con lentitud. -sN; -sF; -sX (sondeos TCP Null, FIN, y Xmas) Estos tres tipos de sondeos (aunque puede hacer muchos mas a traves de la opcion --scanflags que se describe en la proxima seccion) aprovechan una indefinicion en la RFC de TCP[7] que diferencia los puertos abiertos y cerrados. La pagina 65 dice que "si el estado del puerto [destino] es CERRADO .... un segmento entrante que contiene un RST hace que se envie un RST en la respuesta." Despues la pagina siguiente discute los paquetes que se envian a puertos abiertos sin fijar los bits SYN, RST, o ACK, diciendo: "es improbable que llegue aqui, 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 resultara en el envio de un RST si el puerto esta cerrado. Mientras que no se enviara una respuesta si el puerto esta cerrado. Siempre y cuando se incluyan esos tres bits es valida la combinacion de cualquiera de los otros tres (FIN, PSH, y URG). Nmap aprovecha esto con tres tipos de sondeo: Sondeo Null(-sN) No fija ningun 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 arbol de Navidad. Estos tres tipos de sondeos son exactamente los mismos en comportamiento salvo por las banderas TCP que se fijen en los paquetes sonda. Si se recibe un paquete RST entonces se considera que el puerto esta 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, codigo 1, 2, 3, 9, 10, o 13). La ventaja fundamental de este tipo de sondeos es que pueden atravesar algunos cortafuegos que no hagan inspeccion de estados o encaminadores que hagan filtrado de paquetes. Otra ventaja es que este tipo de sondeos son algo mas sigilosos que, incluso, un sondeo SYN. Sin embargo, no cuente con que pase siempre esto ya que la mayoria de los productos IDS pueden configurarse para detectarlos. El problema es que no todos los sistemas siguen el estandar RFC 793 al pie de la letra. Algunos sistemas envian respuestas RST a las sondas independientemente de si el puerto esta o no cerrado. Esto hace que la mayoria de los puertos se marquen como cerrados. Algunos sistemas operativos muy utilizados que hacen esto 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 puertos filtrados, lo que resulta en la respuesta abierto|filtrado. -sA (sondeo TCP ACK) Este sondeo es distinto de otros que se han discutido hasta ahora en que no puede determinar puertos abiertos (o incluso abiertos|filtrados). Se utiliza para mapear reglas de cortafuegos, y para determinar si son cortafuegos con inspeccion de estados y que puertos estan filtrados. La sonda de un sondeo ACK solo tiene fijada la bandera ACK (a menos que utilice --scanflags). Cuando se sondean sistemas no filtrados los puertos abiertos y cerrados devolveran 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 estan abiertos o cerrados. Los puertos que no responden o que envian mensajes de error ICMP en respuesta (tipo 3, codigo 1, 2, 3, 9, 10, o 13), se marcan como filtrados. -sW (sondeo de ventana TCP) El sondeo de ventana (<>, N. del T.) es exactamente igual al sondeo ACK que se aprovecha de un detalle de implementacion de algunos sistemas que permite diferenciar puertos abiertos de los cerrados, en lugar de imprimir no filtrado cuando se devuelve un RST. Hace esto examinando el campo de ventana TCP del paquete RST devuelto. Algunos sistemas fijan un tamano de ventana positivo para puertos abiertos (incluso para paquetes RST) mientras que se utiliza una ventana de tamano cero para los cerrados. Asi, 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 funcion de si el valor de la ventana TCP en ese paquete RST es positivo o cero, respectivamente. Este sondeo depende de un detalle de implementacion de una minoria de sistemas q que existen en Internet, asi que no es siempre fiable. Los sistemas que no hacen esto habitualmente haran que se muestren los puertos como cerrados. Por supuesto, es posible que el sistema no tenga ningun puerto abierto. Si la mayoria de los puertos estan cerrados pero alguno de los numeros de puertos comunes (como pueda ser el 22, 25 o 53) estan filtrados, entonces el sistema es posible que sea susceptible a esto. Algunas veces hay sistemas que mostraran el comportamiento justo contrario. Si su sondeo muestra 1000 puertos abiertos y 3 puertos cerrados o filtrados entonces es posible que sean estos ultimos los que estan abiertos en realidad. -sM (sondeo TCP Maimon) El sondeo Maimon debe su nombre a la persona que lo descubrio: Uriel Maimon. Describio la tecnica en la revista Phrack numero 49 (noviembre de 1996). Nmap, que incluye esta tecnica, se publico dos numeros mas tarde. Esta tecnica es exactamente la misma a los sondeos Null, FIN, y Xmas, pero en los que se envia una sonda FIN/ACK. Segun el RFC 793 (TCP), se deberia generar un paquete RST cuando se responde a dicha sonda independientemente de si el puerto esta cerrado o abierto. Uriel se dio cuenta, sin embargo, de que muchos sistemas derivados de BSD simplemente descartan el paquete si el puerto esta abierto. --scanflags (Sondeo TCP a medida) Los usuarios realmente avanzados de Nmap no tienen por que limitarse a los tipos de sondeos preparados que se ofrecen. La opcion --scanflags le permite disenar su propio sondeo mediante la especificacion de banderas TCP arbitrarias. Deje volar a su imaginacion al tiempo que evita las reglas de los sistemas de deteccion de intrusos cuyos fabricantes solo echaron un vistazo a la pagina de manual de Nmap y anadieron reglas especificas para detectarlo. La opcion --scanflags puede ser un valor numerico como el 9 (PSH y FIN), aunque es mas sencillo utilizar nombres simbolicos. Solo tienes que juntar una combinacion de URG, ACK, PSH, RST, SYN, y FIN. Por ejemplo, la configuracion --scanflags URGACKPSHRSTSYNFIN fija todas las banderas, aunque no es muy util para sondear. No importa el orden en que se especifiquen los nombres. Ademas de poder especificar las banderas que desee se puede especificar el tipo de sondeo TCP (como -sA o -sF). Esto le dice a Nmap como debe interpretar las respuestas. Por ejemplo, un sondeo SYN considera que si no se recibe respuesta el puerto esta filtrado mientras que si no se recibe una respuesta en un sondeo FIN se trata como abierto|filtrado. Nmap se comportara igual que para el sondeo tipo base, con la diferencia de que utilizara las banderas TCP que usted especifique. Se utiliza el sondeo SYN si no se especifica ningun tipo base. -sI (Sondeo ocioso) Este es un metodo de sondeo avanzado que le permite hacer un sondeo de puertos TCP a ciegas de verdad (lo que significa que no se envia ningun paquete al sistema objetivo desde su direccion IP real). En lugar de esto se utiliza un ataque con un canal alternativo que se aprovecha de la generacion de la secuencia de los identificadores de fragmentacion IP del sistema zombi para obtener informacion de los puertos abiertos en el objetivo. Los sistemas IDS mostraran que el sondeo lo esta realizando el sistema zombi que especifique (que debe estar vivo y cumplir algunos requisitos). Este tipo de sondeo tan fascinante es demasiado complejo como para describirlo por completo en esta guia de referencia por lo que escribi y publique un documento informal que contiene todos los detalles, el documento esta disponible en https://nmap.org/book/idlescan.html. Ademas 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. Asi que puede analizar el mismo objetivo con zombis distintos que cree que podrian ser de confianza para este (a traves de las reglas de filtrados de los paquetes o reglas de filtrados de encaminadores). Puede anadir un numero de puerto separado por dos puntos del sistema zombi si desea analizar un puerto especifico del zombi para consultar los cambios IPID. Si no lo hace Nmap utilizara el puerto que utiliza para pings TCP por omision (el puerto 80). -sO (sondeo de protocolo IP) El sondeo de protocolo IP le permite determinar que protocolos (TCP, ICMP, IGMP, etc.) soportan los sistemas objetivo. Esto no es, tecnicamente, un sondeo de puertos, dado que cambia los numeros de protocolo IP en lugar de los numeros de puerto TCP o UDP. Pero tambien se puede utilizar la opcion -p para seleccionar los numeros 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 metodos de sondeo de puertos reales. Es tan parecido a un sondeo de puertos que debe tratarse aqui. El sondeo de protocolos, ademas de ser util en si mismo, demuestra el poder del software de fuentes abiertas (<>, N. del T.). Aunque la idea fundamental era bastante sencilla, no habia pensado anadirla ni tampoco habia habido personas que solicitaran esta funcionalidad. Entonces, en el verano de 2000, se le ocurrio la idea a Gerhard Rieger y la implemento escribiendo un parche excelente, enviandolo posteriormente a la lista de correo de nmap-hackers. Incorpore ese parche en el arbol de codigo de Nmap y publique una nueva version ese mismo dia. !Pocas piezas de programas comerciales tienen usuarios tan entusiastas que disenan y contribuyen sus propias mejoras! El sondeo de protocolos utiliza mecanismos parecidos al sondeo UDP. Envia cabeceras de paquetes IP iterando por el campo de 8 bits que indica el protocolo IP, en lugar de iterar por el campo de numero de puerto de un paquete UDP. Las cabeceras generalmente estan vacias 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 valida para estos porque algunos sistemas no los enviaran sin ellas y porque Nmap ya tiene funciones para crearlas. El sondeo de protocolos espera la recepcion de mensajes de ICMP protocolo 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, codigo 2). Si se reciben otros errores ICMP no alcanzable (tipo 3, codigos 1, 3, 9, 10, o 13) se marca el protocolo como filtrado (aunque al mismo tiempo indican que el protocolo ICMP esta abierto). El protocolo se marca como abierto|filtrado si no se recibe ninguna respuesta despues de las retransmisiones. -b (sondeo de rebote FTP) Una funcionalidad interesante en el protocolo FTP (RFC 959[8]) es la posibilidad de utilizar conexiones FTP de pasarela. Esta opcion puede abusarse a muchos niveles asi que muchos servidores han dejado de soportarla. Una de las formas de abusar de esta es utilizar el servidor de FTP para hacer un sondeo de puertos a otro sistema. Simplemente hace falta decirle al servidor de FTP que envie un fichero a cada puerto interesante del servidor objetivo cada vez. El mensaje de error devuelto indicara si el puerto esta abierto o no. Esta es una buena manera de atravesar cortafuegos porque, habitualmente, los servidores de FTP de una organizacion estan ubicados en un lugar en el que tienen mas acceso a otros sistemas internos que el acceso que tiene un equipo en Internet. Nmap puede hacer sondeos con rebotes de FTP con la opcion -b. Esta opcion toma un argumento como: usuario:contrasena@servidor:puerto. Servidor es el nombre de la direccion IP del servidor FTP vulnerable. Al igual que con una URL normal, se puede omitir usuario:contrasena, en caso de que se deseen utilizar credenciales de acceso anonimo (usuario: anonymous contrasena:wwwuser@) Tambien se puede omitir el numero de puerto (y los dos puntos que lo preceden). Si se omiten se utilizara el puerto FTP estandar (21) en servidor. Esta vulnerabilidad era muy habitual en 1997, el ano que se publico Nmap, pero ya ha sido arreglada en muchos sitios. Aun siguen existiendo servidores vulnerables asi que merece la pena probar este sondeo si lo demas 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 deteccion de versiones). Despues intente un sondeo de rebote utilizando cada uno. Nmap le indicara si el sistema es o no vulnerable. Si esta intentado ocultar sus huellas no tiene que (y de hecho no deberia) 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 apreciaran el que abuse de sus servidores de esta forma. ESPECIFICACION DE PUERTOS Y ORDEN DE SONDEO Nmap ofrece distintas opciones para especificar los puertos que se van a sondear y si el orden de los sondeos es aleatorio o secuencial. Estas opciones se anaden a los metodos de sondeos que se han discutido previamente. Nmap, por omision, sondea todos los puertos hasta el 1024 ademas de algunos puertos con numeros altos listados en el fichero nmap-services para los protocolos que se sondeen. -p (Solo sondea unos puertos especificos) Esta opcion especifica los puertos que desea sondear y toma precedencia sobre los valores por omision. Puede especificar tanto numeros de puerto de forma individual, asi como rangos de puertos separados por un guion (p. ej. 1-1023). Puede omitir el valor inicial y/o el valor final del rango. Nmap utilizara 1 o 65535 respectivamente. De esta forma, puede especificar -p- para sondear todos los puertos desde el 1 al 65535. Se permite sondear el puerto cero siempre que lo especifique explicitamente. Esta opcion especifica el numero de protocolo que quiere sondear (de 0 a 255) en el caso de que este sondeando protocolos IP (-sO). Puede especificar un protocolo especifico cuando sondee puertos TCP y UDP si precede el numero de puerto con T: o U:. El calificador dura hasta que especifique otro calificador. Por ejemplo, la opcion -p U:53,111,137,T:21-25,80,139,8080 sondearia los puertos UDP 53,111, y 137, asi como los puertos TCP listados. Tenga en cuenta que para sondear tanto UDP como TCP debera especificar la opcion -sU y al menos un tipo de sondeo TCP (como -sS, -sF, o -sT). Si no se da un calificador de protocolo se anadiran los numeros de puerto a las listas de todos los protocolos. -F (Sondeo rapido (puertos limitados)) Indica que solo quiere sondear los puertos listados en el fichero nmap-services que se incluye con nmap (o el fichero de protocolos si indica -sO). Esto es mas rapido que sondear todos los 65535 puertos de un sistema. La diferencia de velocidad con el sondeo TCP por omision (unos 1650 puertos) no es muy alta dado que esta lista contiene muchos puertos TCP (mas de 1200). La diferencia puede ser muy grande si especifica su propio fichero nmap-services mas pequeno si utiliza la opcion --datadir. -r (No aleatorizar los puertos) Nmap ordena de forma aleatoria los puertos a sondear por omision (aunque algunos puertos comunmente accesibles se ponen al principio por razones de eficiencia). Esta aleatorizacion generalmente es deseable, pero si lo desea puede especificar la opcion -r para analizar de forma secuencial los puertos. DETECCION DE SERVICIOS Y DE VERSIONES Si le indica a Nmap que mire un sistema remoto le podra decir que tiene abiertos los puertos 25/tcp, 80/tcp y 53/udp. Informara que esos puertos se corresponden habitualmente con un servidor de correo (SMTP), servidor de web (HTTP) o servidor de nombres (DNS), respectivamente, si utilizas su base de datos nmap-services con mas de 2.200 puertos conocidos. Generalmente este informe es correo dado que la gran mayoria de demonios que escuchan en el puerto 25 TCP son, en realidad, servidores de correo. !Pero no debe confiar su seguridad en este hecho! La gente ejecuta a veces servicios distintos en puertos inesperados Aun en el caso de que Nmap tenga razon y el servidor de ejemplo indicado arriba esta ejecutando servidores de SMTP, HTTP y DNS esto no dice mucho. Cuando haga un analisis de vulnerabilidades (o tan solo un inventario de red) en su propia empresa o en su cliente lo que habitualmente tambien quiere saber es que version se esta utilizando del servidor de correcto y de DNS. Puede ayudar mucho a la hora de determinar que ataques pueden afectar a un servidor el saber el numero de version exacto de este. La deteccion de versiones le ayuda a obtener esta informacion. La deteccion de versiones pregunta para obtener mas informacion de lo que realmente se esta ejecutando una vez se han detectado los puertos TCP y/o UDP con alguno de los metodos de sondeo. La base de datos nmap-service-probes contiene sondas para consultar distintos servicios y reconocer y tratar distintas respuestas en base a una serie de expresiones. Nmap intenta determinar el protocolo del servicio (p. ej. ftp, ssh, telnet o http), el nombre de la aplicacion (p. ej. Bind de ISC, http de Apache, telnetd de Solaris), un numero de version, un tipo de dispositivo (p. ej. impresora o router), la familia de sistema operativo (p. ej. Windows o Linux) y algunas veces algunos detalles miscelaneos como, por ejemplo, si un servidor X acepta cualquier conexion externa, la version de protocolo SSH o el nombre de usuario Kazaa). Por supuesto, la mayoria de los servicios no ofrecen toda esta informacion. Si se ha compilado Nmap con soporte OpenSSL se conectara tambien a servidores SSL para determinar que servicio escucha detras de la capa de cifrado. Se utiliza la herramienta de pruebas RPC de Nmap (-sR) de forma automatica para determinar el programa RPC y el numero de version si se descubren servicios RPC. Algunos puertos UDP se quedan en estado open|filtered (N. del T., 'abierto|filtrado') si un barrido de puertos UDP no puede determinar si el puerto esta abierto o filtrado. La deteccion de versiones intentara obtener una respuesta de estos puertos (igual que hace con puertos abiertos) y cambiara el estado a abierto si lo consigue. Los puertos TCP en estado open|filtered se tratan de forma similar. Tenga en cuenta que la opcion -A de Nmap actualiza la deteccion de versiones entre otras cosas. Puede encontrar un documento describiendo el funcionamiento, modo de uso, y particularizacion de la deteccion de versiones en https://nmap.org/vscan/. Cuando Nmap obtiene una respuesta de un servicio pero no encuentra una definicion coincidente en la base de datos se imprimira una firma especial y un URL para que la envie si sabe lo que esta ejecutandose detras de ese puerto. Por favor, tomese unos minutos para enviar esta informacion para ayudar a todo el mundo. Gracias a estos envios Nmap tiene ahora alrededor de 3.000 patrones para mas de 350 protocolos distintos como smtp, ftp, http, etc. La deteccion de versiones se activa y controla con la siguientes opciones: -sV (Deteccion de versiones) Activa la deteccion de versiones como se ha descrito previamente. Puede utilizar la opcion -A en su lugar para activar tanto la deteccion de versiones como la deteccion de sistema operativo. --allports (No excluir ningun puerto de la deteccion de versiones) La deteccion de versiones de Nmap omite el puerto TCP 9100 por omision porque algunas impresoras imprimen cualquier cosa que reciben en este puerto, lo que da lugar a la impresion de multiples paginas con solicitudes HTTP get, intentos de conexion de SSL, etc. Este comportamiento puede cambiarse modificando o eliminando la directiva Exclude en nmap-service-probes, o especificando --allports para sondear todos los puertos independientemente de lo definido en la directiva Exclude. --version-intensity (Fijar la intensidad de la deteccion de versiones) Nmap envia una serie de sondas cuando se activa la deteccion de versiones (-sV) con un nivel de rareza preasignado y variable de 1 a 9. Las sondas con un numero bajo son efectivas contra un amplio numero de servicios comunes, mientras que las de numeros mas altos se utilizan rara vez. El nivel de intensidad indica que sondas deberian utilizarse. Cuanto mas alto sea el numero, mayor las probabilidades de identificar el servicio. Sin embargo, los sondeos de alta intensidad tardan mas tiempo. El valor de intensidad puede variar de 0 a 9. El valor por omision es 7. Se probara una sonda independientemente del nivel de intensidad cuando esta se registra para el puerto objetivo a traves de la directiva nmap-service-probes ports. De esta forma se asegura que las sondas de DNS se probaran contra cualquier puerto abierto 53, las sondas SSL contra el puerto 443, etc. --version-light (Activar modo ligero) Este es un alias conveniente para --version-intensity 2. Este modo ligero hace que la deteccion de versiones sea mas rapida pero tambien hace que sea menos probable identificar algunos servicios. --version-all (Utilizar todas las sondas) Este es un alias para --version-intensity 9, hace que se utilicen todas las sondas contra cada puerto. --version-trace (Trazar actividad de sondeo de versiones) Esta opcion hace que Nmap imprima informacion de depuracion detallada explicando lo que esta haciendo el sondeo de versiones. Es un conjunto de lo que obtendria si utilizara la opcion --packet-trace. -sR (Sondeo RPC) Este metodo funciona conjuntamente con los distintos metodos de sondeo de puertos de Nmap. Toma todos los puertos TCP/UDP que se han encontrado y los inunda con ordenes de programa NULL SunRPC con el objetivo de determinar si son puertos RPC y, si es asi, los programas y numero de version que estan detras. Asi, puede obtener de una forma efectiva la misma informacion que rpcinfo -p aunque el mapeador de puertos (<>, N. del T.) esta detras de un cortafuegos (o protegido por TCP wrappers). Los senuelos no funcionan con el sondeo RPC actualmente. Esta opcion se activa automaticamente como parte de la deteccion de versiones (-sV) si la ha seleccionado. Rara vez se utiliza la opcion -sR dado que la deteccion de versiones lo incluye y es mas completa. DETECCION DE SISTEMA OPERATIVO Uno de los aspectos mas conocidos de Nmap es la deteccion del sistema operativo (SO) en base a la comprobacion de huellas TCP/IP. Nmap envia una serie de paquetes TCP y UDP al sistema remoto y analiza practicamente todos los bits de las respuestas. Nmap compara los resultados de una docena de pruebas como puedan ser el analisis de ISN de TCP, el soporte de opciones TCP y su orden, el analisis de IPID y las comprobaciones de tamano inicial de ventana, con su base de datos nmap-os-fingerprints. Esta base de datos consta de mas de 1500 huellas de sistema operativo y cuando existe una coincidencia se presentan los detalles del sistema operativo. Cada huella contiene una descripcion en texto libre del sistema operativo, una clasificacion que indica el nombre del proveedor (por ejemplo, Sun), el sistema operativo subyacente (por ejemplo, Solaris), la version del SO (por ejemplo, 10) y el tipo de dispositivo (proposito general, encaminador, conmutador, consola de videojuegos, etc.). Nmap le indicara una URL donde puede enviar las huellas si conoce (con seguridad) el sistema operativo que utiliza el equipo si no puede adivinar el sistema operativo de este y las condiciones son optimas (encontro al menos un puerto abierto y otro cerrado). Si envia esta informacion contribuira al conjunto de sistemas operativos que Nmap conoce y la herramienta sera asi mas exacta para todo el mundo. La deteccion de sistema operativo activa, en cualquier caso, una serie de pruebas que hacen uso de la informacion que esta recoge. Una de estas pruebas es la medicion de tiempo de actividad, que utiliza la opcion de marca de tiempo TCP (RFC 1323) para adivinar cuanto hace que un equipo fue reiniciado. Esta prueba solo funciona en sistemas que ofrecen esta informacion. Otra prueba que se realiza es la clasificacion de prediccion de numero de secuencia TCP. Esta prueba mide de forma aproximada cuanto de dificil es crear una conexion TCP falsa contra el sistema remoto. Se utiliza cuando se quiere hacer uso de relaciones de confianza basadas en la direccion IP origen (como es el caso de rlogin, filtros de cortafuegos, etc.) para ocultar la fuente de un ataque. Ya no se hace habitualmente este tipo de malversacion pero aun existen muchos equipos que son vulnerables a esta. Generalmente es mejor utilizar la clasificacion en ingles como: "worthy challenge" (<>, N. del T.) o "trivial joke" (<>, N. del T.). Esta informacion solo se ofrece en la salida normal en el modo detallado (-v). Tambien se informa de la generacion de numeros de secuencia IPID cuando se activa el modo detallado conjuntamente con la opcion -O. La mayoria de los equipos estaran en la clase "incremental", lo que significa que incrementan el campo ID en la cabecera IP para cada paquete que envian. Esto hace que sean vulnerables a algunos ataques avanzados de obtencion de informacion y de falseo de direccion. Puede encontrar un trabajo traducido a una docena de idiomas que detalla el modo de funcionamiento, utilizacion y ajuste de la deteccion de versiones en https://nmap.org/osdetect/. La deteccion de sistema operativo se activa y controla con las siguientes opciones: -O (Activa la deteccion de sistema operativo) Tal y como se indica previamente, activa la deteccion de sistema operativo. Tambien se puede utilizar la opcion -A para activar la deteccion de sistema operativo y de versiones. --osscan-limit (Limitar la deteccion de sistema operativo a los objetivos prometedores) La deteccion de sistema operativo funcionara mejor si se dispone de un puerto TCP abierto y otro cerrado. Defina esta opcion si no quiere que Nmap intente siquiera la deteccion de sistema operativo contra sistemas que no cumplan este criterio. Esta opcion puede ahorrar mucho tiempo, sobre todo si esta realizando sondeos -P0 sobre muchos sistemas. Solo es de aplicacion cuando se ha solicitado la deteccion de sistema operativo con la opcion -O o -A. --osscan-guess; --fuzzy (Aproximar los resultados de la deteccion de sistema operativo) Cuando Nmap no puede detectar un sistema operativo que encaje perfectamente a veces ofrecera posibilidades que se aproximen lo suficiente. Las opciones tienen que aproximarse mucho al detectado para que Nmap haga esto por omision. Cualquiera de estas dos opciones (equivalentes) haran que Nmap intente aproximar los resultados de una forma mas agresiva. CONTROL DE TIEMPO Y RENDIMIENTO Una de las prioridades durante el desarrollo de Nmap ha sido siempre el rendimiento. Un sondeo por omision (nmap nombre_de_sistema) de cualquier sistema en una red local tarda un quinto de segundo. Esto es menos que el tiempo que uno tarda en parpadear, pero se va sumando al tiempo que se tarda cuando se realiza un sondeo sobre decenas o centenares o miles de equipos. Ademas, ciertas opciones de sondeo como puedan ser el sondeo UDP y la deteccion de versiones pueden incrementar los tiempos de sondeos de forma sustancial. Tambien puede afectar a este tiempo algunas configuraciones de sistemas cortafuegos, especialmente cuando implementan limitaciones a la tasa de respuestas. Aunque Nmap trabaja en paralelo y tiene muchos algoritmos avanzados para acelerar estos sondeos, el usuario tiene el control en ultima instancia de como funciona este. Los usuarios con experiencia pueden definir las ordenes a Nmap cuidadosamente para obtener solo la informacion que necesitan mientras que, al mismo tiempo, cumplen las limitaciones de tiempo que tengan. Algunas tecnicas que pueden ayudar a mejorar los tiempos de sondeo son el limitar el numero de pruebas que no sean criticas y actualizar a la ultima version de Nmap (se hacen mejoras de rendimiento con cierta frecuencia). La optimizacion de los parametros de control de tiempo pueden introducir tambien diferencias significativas. Las opciones aplicables se detallan a continuacion. Algunas opciones aceptan un parametro tiempo. Este valor se especifica, por omision, en milisegundos, aunque puede seguirlo de `s', `m', o `h' para indicar segundos, minutos, u horas. Por tanto, el valor 900000, 900s, y 15m hacen exactamente lo mismo al aplicarse a la opcion --host-timeout. --min-hostgroup ; --max-hostgroup (Ajustar el tamano del grupo para los sondeos paralelos) Nmap tiene la capacidad de hacer un sondeo de puertos o versiones sobre multiples sistemas en paralelo. Hace eso dividiendo el espacio de direcciones IP en grupos y analizando un grupo cada vez. Habitualmente es mas eficiente utilizar grupos grandes. La contrapartida es que los resultados por sistema no se pueden dar hasta que se ha terminado de analizar todo el grupo. En este caso, si Nmap empezara con un tamano de grupo de 50, el usuario no obtendria ningun resultado hasta que termine con los primeros 50 (excepto las actualizaciones que envia el modo detallado) Nmap tiene una implementacion de compromiso por omision para resolver este conflicto. Empieza los sondeos con un tamano de grupo inferior a cinco para que los primeros resultados se obtengan con rapidez y despues se incrementa el tamano de grupo hasta, como mucho, 1024. El numero exacto por omision depende de las opciones dadas en la ejecucion. Nmap utiliza grupos mas grandes para los sondeos UDP y para aquellos sondeos TCP con pocos puertos por razones de eficiencia. Nmap nunca excede el tamano indicado cuando este se especifica con --max-hostgroup. Si se indica un valor minimo en --min-hostgroup Nmap intentara mantener el tamano de los grupos por encima de ese nivel. Nmap puede tener que utilizar grupos mas pequenos si no hay suficientes sistemas objetivo en una interfaz dada para cumplir el minimo especificado. Se pueden especificar ambos valores para mantener el tamano de grupo dentro de un rango especifico, aunque esto es poco habitual. El uso principal de esta opcion es el de especificar el tamano de grupo minimo para que los sondeos se ejecuten mas rapidamente. 256 es un valor habitual para sondear la red en trozos del tamano de una clase C. Si se trata de un sondeo con muchos puertos no sirve de mucho incrementar ese numero. Si los sondeos son de pocos puertos puede ayudar utilizar un tamano de grupo de 2048 o mas elementos. --min-parallelism ; --max-parallelism (Ajustar el numero de sondas enviadas en paralelo) Esta opcion controla el numero de sondas activas para un grupo de sistemas. Estas se utilizan para los sondeos de puertos y el descubrimiento de equipos. Por omision, Nmap calcula un valor ideal del numero de sondas a enviar en paralelo basado en el rendimiento de la red. Si se pierden paquetes Nmap reduce este valor para ir mas lento y permitir menos sondas activas. El valor ideal de las sondas se incrementara a medida que la red muestre que puede utilizarse de nuevo. Estas opciones ponen un valor minimo o maximo a esa variable. Por omision, el valor ideal puede ser inferior a 1 si la red no es fiable e incrementarse a varios cientos si esta funciona correctamente. Lo mas habitual es fijar el valor --min-parallelism a un numero mayor que uno para que los sondeos contra sistemas o redes poco eficientes sean rapidos. Esta es una opcion que tiene sus riesgos, ya que si se define un valor demasiado elevado se puede reducir la precision del sondeo. Si se fija tambien se impide a Nmap controlar el paralelismo de forma dinamica basandose en las condiciones de la red. Un valor razonable puede ser diez, aunque solo debe ajustarse como ultimo recurso. A veces se fija la opcion --max-parallelism a uno para evitar que Nmap envie mas de una sonda a la vez a los sistemas. Esto puede ser util conjuntamente con --scan-delay (del que se habla mas adelante), aunque habitualmente es suficiente con utilizar este ultimo por si solo. --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout (Ajustar expiracion de sondas) Nmap mantiene un valor de expiracion en ejecucion para saber cuanto tiempo debe esperar para recibir la respuesta a una sonda o para retransmitir la sonda. Este valor esta calculado en base a los tiempos de respuesta de las sondas previamente enviadas. El valor de expiracion puede llegar a ser de varios segundos si se demuestra que la latencia de la red es significativa y variable. Tambien empieza en un valor conservador (alto) y puede mantenerse en ese valor durante un tiempo cuando Nmap sondee equipos que no respondan. Se pueden recortar los tiempos de analisis de forma apreciable si se especifican valores para --max-rtt-timeout y --initial-rtt-timeout por debajo de los de por omision. Esto es especialmente verdadero en sondeos en los que no se envian paquetes ICMP (-P0) y en aquellos realizados en redes con mucho filtrado. Sin embargo, no se deberia establecer a valores muy agresivos. El sondeo puede acabar tardando mas de lo esperado si se especifica un valor bajo que hace que las sondas expiren y se retransmitan mientras esta llegando la respuesta. En el caso de que todos los sistemas esten en una red local al equipo que sondea, un valor razonablemente agresivo para --max-rtt-timeout es 100 milisegundos. Si se esta rutando, primero envie un ping a un equipo en la red con la herramienta ICMP ping, o con una herramienta para construir paquetes a medida como hping2 dado que es mas probable que atraviese cualquier cortafuegos. Consulte el tiempo maximo de la ronda (tiempo entre solicitud y respuesta) despues de haber enviado unos diez paquetes. Una vez obtenido ese valor puede utilizarlo el doble de este para --initial-rtt-timeout y triplicarlo o cuadruplicarlo para --max-rtt-timeout. Yo no configuro habitualmente el valor maximo rtt por debajo de 100ms, independientemente del valor que den los ping. Ni tampoco lo pongo por encima de 1000ms. La opcion --min-rtt-timeout se utiliza rara vez, aunque puede ser util cuando la red es tan poco fiable que incluso los valores por omision son demasiado agresivos. Dado que Nmap solo reduce el tiempo al minimo cuando la red parece fiable este valor es poco habitual y deberia reportarse como una errata en la lista de correo nmap-dev. --max-retries (Especifica el numero maximo de sondas de puertos que se retransmiten) Un puerto podria estar filtrado si Nmap no recibe ninguna respuesta a una sonda de analisis de puertos. O puede que la sonda o la respuesta a esta se perdiera en la red. Tambien puede darse el caso de que el sistema objetivo tenga una limitacion de tasa de trafico que haga que la respuesta quede bloqueada temporalmente. Asi, Nmap lo intenta de nuevo retransmitiendo la sonda inicial. Puede que lo haga mas de una vez, si Nmap detecta que hay problemas en el funcionamiento de la red, antes de abandonar los sondeos de un puerto. Cuando el rendimiento es critico, se pueden acelerar los sondeos limitando el numero de retransmisiones permitidas. Puede especificar --max-retries 0 para que no se haga ninguna retransmision, aunque no se recomienda. El valor por omision (cuando no hay una plantilla -T) es permitir las retransmisiones. Nmap generalmente solo hara una retransmision si la red parece fiable y el sistema objetivo no tiene una limitacion de tasa de trafico. Es por esto por lo que la mayoria de los sondeos no se veran afectados si reduce el valor de --max-retries a un valor pequeno, como pudiera ser tres. Estos valores pueden hacer que los sondeos a equipos lentos (limitados en tasa) sean mas rapidos. Puede que pierda informacion cuando Nmap de por finalizado el analisis de un puerto antes de tiempo, aunque eso puede ser mejor que hacer que la expire el --host-timeout y se pierda toda la informacion del objetivo. --host-timeout (Abandona equipos objetivo lentos) Hay algunos equipos en los que simplemente se tarda demasiado en sondearlos. Esto puede deberse a hardware de red de bajo rendimiento o poco fiable o bien a software, limitaciones de tasas de paquetes o un cortafuegos demasiado restrictivo. Puede llegar a darse que Nmap dedica la mayor parte del tiempo de analisis en sondear un porcentaje reducido de sistemas. A veces es mejor reducir las bajas y saltarse esos sistemas inicialmente. Esto puede hacerse con la opcion --host-timeout, indicando el tiempo maximo que esta dispuesto a esperar. Yo especifico habitualmente 30m para asegurarse de que Nmap no gasta mas de media hora en un solo sistema. Tenga en cuenta que Nmap puede estar sondeando otros equipos al mismo tiempo durante esa media hora, por lo que no se pierde todo ese tiempo. Cualquier sistema que expire se salta. No se imprimira la tabla de puertos, la deteccion de sistema operativo o la deteccion de versiones para ese sistema. --scan-delay ; --max-scan-delay (Ajusta la demora entre sondas) Esta opcion hace que Nmap espere al menos el tiempo indicado entre cada sonda enviada a un sistema determinado. Esto es muy util cuando se quiere limitar la tasa de trafico. Los sistemas Solaris (entre otros) responderan a paquetes de sondeos UDP con solo un mensaje ICMP por segundo. Enviar mas que eso con Nmap seria perder el tiempo. Un valor de 1s para --scan-delay hara que Nmap se mantenga a esa velocidad reducida. Nmap intenta detectar limitaciones de tasa y ajustar la demora del sondeo como considere necesario, pero a veces viene bien especificarlo de forma explicita si ya sabe que valor es mejor. El sondeo se ralentiza de forma drastica cuando Nmap incrementa el valor del tiempo de espera para poder tratar las limitaciones de tasa. Puede utilizar la opcion --max-scan-delay para indicar el tiempo maximo de espera que permitira Nmap. Si especifica un valor muy pequeno tendra retransmisiones inutiles de paquetes y posiblemente no detecte puertos para los que el objetivo implemente tasas de trafico estrictas. Tambien se puede usar --scan-delay para evitar sistemas de deteccion y prevencion de intrusos (IDS/IPS) basados en umbrales. -T (Fija una plantilla de tiempos) Algunas personas encuentran confusos los controles de grano fino explicados previamente, aunque estos sean muy potentes y efectivos. Ademas, se puede a veces tardar mas tiempo en encontrar los valores mas apropiados que en hacer el analisis que se quiere optimizar. Nmap ofrece un acercamiento mas sencillo, basado en seis plantillas de tiempos. Puede especificar cualquiera de estas con la opcion -T seguido de un numero o su nombre. Los nombre de las plantillas son: paranoico (0), sigiloso (1), amable (2), normal (3), agresivo (4) y loco (5) (respectivamente "paranoid", "sneaky", "polite", "normal", "aggressive" e "insane", N. de. T.). Las primeras dos se utilizan para evadir IDS. El modo amable reduce el sondeo para que este utilice menos ancho de banda y menos recursos de los sistemas analizados. El modo normal es el valor por omision, asi que la opcion -T3 no hace nada realmente. El modo agresivo hace que los sondeos sean mas rapidos al asumir que esta en una red razonablemente mas rapida y fiable. En modo loco asume que esta en una red extraordinariamente rapida o que esta dispuesto a sacrificar fiabilidad por velocidad. Estas plantillas permiten que el usuario especifique cuan agresivo quiere ser, al mismo tiempo que deja que sea Nmap el que escoja los valores exactos de tiempos. Las plantillas hacen tambien algunos ajustes menores de velocidad para los cuales no existe aun una opcion de control de grano fino. Por ejemplo, -T4 prohibe que la expiracion en sondeos dinamicos exceda los 10ms para puertos TCP y -T5 limita ese valor a 5 milisegundos. Las plantillas pueden utilizarse combinadas con controles de grano fino, siempre que se especifique primero la plantilla. Si no lo hace asi los valores especificados por la plantilla modificaran los valores que defina como opcion. Le recomiendo utilizar -T4 cuando sondee redes razonablemente modernas y fiables. Mantenga esa opcion al principio de la linea de ordenes aun cuando especifique otras opciones de control de grano fino para poder beneficiarse de las optimizaciones menores que activa. Le recomiendo que empiece siempre con -T4 si esta utilizando una conexion de banda ancha o conexion Ethernet decente. Algunas personas adoran la opcion -T5 aunque es demasiado agresiva para mi gusto. Otras personas especifican la opcion -T2 porque piensan que es menos probable que bloqueen sistemas o porque se consideran a si mismos amables en general. Muchas veces no se dan cuenta de lo lenta que -T Polite es realmente. Su sondeo puede llegar a tardar diez veces mas que un sondeo por omision. Dado que las caidas de sistemas y problemas de ancho de banda son raros con las opciones de tiempos por omision (-T3), lo recomiendo habitualmente para las personas cuidadosas. Para reducir estos problemas es mas efectivo omitir la deteccion de versiones que jugar con los valores de tiempos. Mientras que puede ser util evitar alarmas de IDS con -T0 y -T1, este tardara mucho mas tiempo para sondear miles de sistemas o puertos. Para este tipo de sondeos puede que prefiera fijar los valores exactos de tiempos que necesita antes que utilizar los valores predefinidos para -T0 y -T1. Los efectos principales del uso de T0 es la serializacion de los sondeos de forma que solo se sondea un puerto cada vez, y se espera cinco minutos antes de enviar cada sonda. Las opciones T1 y T2 son similares pero solo esperan 15 y 0.4 segundos entre sondas, respectivamente. El comportamiento por omision de Nmap es T3, que incluye sondeos en paralelo. T4 es equivalente a especificar --max-rtt-timeout 1250 --initial-rtt-timeout 500 --max-retries 6 y fija el valor maximo para las demoras de sondeos TCP a 10 milisegundos. T5 hace lo mismo que --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m asi como definir el valor maximo para las demoras de sondeos TCP a 5ms. EVASION DE CORTAFUEGOS/IDS Y FALSIFICACION Muchos pioneros de Internet habian previsto una red global abierta con un espacio de direcciones IP universal que permitiese conexiones virtuales entre dos nodos cualquiera. Esto permitiria a los equipos actuar como verdaderos iguales, sirviendo y recuperando informacion el uno del otro. La gente podria acceder a todos los sistemas de su casa desde el trabajo, cambiando las propiedades del control del clima o desbloqueando puertas. Esta vision de una conectividad universal fue sofocada por la escasez del espacio de direcciones y los problemas de seguridad. Al comienzo de la decada de los anos 90, las organizaciones empezaron a replegar cortafuegos con el proposito de reducir la conectividad. Se acordonaron redes enormes para protegerlas de la Internet no filtrada con pasarelas (<>, N. del T.) de aplicacion, sistemas de traduccion de direcciones de red y filtros de paquetes. Del flujo sin restricciones de la informacion se paso a una regulacion estricta de los canales de comunicacion aprobados y del contenido que pasa por ellos. Los filtros de red como los cortafuegos pueden hacer muy dificil el analisis de una red. Esto no va a ser mas facil en el futuro, ya que uno de los objetivos de estos dispositivos es generalmente limitar el reconocimiento casual de la red. En cualquier caso, Nmap ofrece varias funcionalidades para ayudar a entender estas redes complejas, y que tambien sirven para verificar que los filtros funcionan como se espera de ellos. Incluso tiene mecanismos para saltarse las defensas que no hayan sido implementadas del todo correctamente. Uno de los mejores metodos de entender la posicion de la seguridad de su red es intentar comprometerla. Empiece a pensar como un atacante, e intenta utilizar las tecnicas de esta seccion contra sus propias redes. Lance un sondeo de rebote FTP, un sondeo pasivo, un ataque de fragmentacion, o intente realizar un tunel desde una de sus propias pasarelas. Las companias, ademas de restringir la actividad de red, estan monitorizando cada vez mas el trafico con sistemas de deteccion de intrusos (IDS, <>, N. del T.). Todos los IDS principales vienen preinstalados con reglas disenadas para detectar sondeos de Nmap porque, a veces, se realizan sondeos previos a un ataque. Muchos de estos productos han mutado recientemente para convertirse en sistemas de prevencion de intrusiones (IPS) que bloquean activamente el trafico reconocido como maligno. Desafortunadamente para los administradores de redes y para los fabricantes de IDS es muy dificil detectar las malas intenciones analizando los datos de los paquetes. Los atacantes con paciencia, habilidad y con la ayuda de ciertas opciones de Nmap pueden, generalmente, esquivar el analisis de los IDS sin ser detectados. Mientras tanto, los administradores deben lidiar con un alto numero de falsos positivos debido a que algunas actividades inocentes se diagnostican erroneamente y generan alarmas o se bloquean. Algunas personas sugieren que Nmap no deberia ofrecer funcionalidades de evasion de cortafuegos o para esquivar los IDS, argumentando que es igual de probable que las funcionalidades las utilicen los atacantes como que las utilicen los administradores para mejorar la seguridad. El problema con esta forma de pensar es que los atacantes van a utilizar estos metodos de todas formas: encontrarian otra herramienta para hacerlo o parchearian a Nmap para anadirsela. Al mismo tiempo, los administradores tendrian muchos mas problemas para hacer su trabajo. Es mucho mejor defensa utilizar servidores FTP modernos y parcheados que intentar prevenir la distribucion de herramientas que permitan la implementacion de ataques de rebote FTP. No hay ninguna herramienta magica (u opcion de Nmap) que permita detectar y evitar cortafuegos y sistemas IDS. Esto requiere habilidad y experiencia. Un tutorial va mas alla del alcance de esta guia de referencia, que solo lista las opciones relevantes y describe lo que hacen. -f (fragmentar los paquetes); --mtu (utilizar el MTU especificado) La opcion -f hace que el sondeo solicitado (incluyendo los sondeos ping) utilicen paquetes IP fragmentados pequenos. La idea es dividir la cabecera del paquete TCP entre varios paquetes para hacer mas dificil que los filtros de paquetes, sistemas de deteccion de intrusos y otras molestias detecten lo que se esta haciendo. !Tenga cuidado con esta opcion! Algunos programas tienen problemas para manejar estos paquetes tan pequenos. El viejo sniffer llamado Sniffit da un fallo de segmentacion inmediatamente despues de recibir el primero de estos pequenos fragmentos. Especifica esta opcion una sola vez y Nmap dividira los paquetes en ocho bytes o menos despues de la cabecera de IP. De esta forma, una cabecera TCP de veinte bytes se dividiria en 3 paquetes. Dos con ocho bytes de cabecera TCP y uno con los ultimos ocho. Obviamente, cada fragmento tiene su propia cabecera IP. Especifica la opcion -f otra vez para utilizar fragmentos de dieciseis bytes (reduciendo la cantidad de fragmentos). O puedes especificar tu propio tamano con la opcion --mtu. No utilice la opcion -f si utiliza --mtu. El tamano debe ser multiplo de ocho. Aunque la utilizacion de paquetes fragmentados no le ayudara a saltar los filtros de paquetes y cortafuegos que encolen todos los fragmentos IP (como cuando se utiliza la opcion CONFIG_IP_ALWAYS_DEFRAG del nucleo de Linux), algunas redes no pueden tolerar la perdida de rendimiento que esto produce y deshabilitan esa opcion. Otros no pueden habilitar esta opcion porque los fragmentos pueden tomar distintas rutas para entrar en su red. Algunos sistemas defragmentan los paquetes salientes en el nucleo. Un ejemplo de esto es Linux con el modulo de seguimiento de conexiones de iptables. Realice un sondeo con un programa de captura de trafico, como Ethereal, para asegurar que los paquetes que se envian estan fragmentandose. Intente utilizar la opcion --send-eth, si su sistema operativo le esta causando problemas, para saltarse la capa IP y enviar tramas directamente a la capa Ethernet en crudo. -D (Esconde un sondeo con senuelos) Realiza un sondeo con senuelos. Esto hace creer que el/los equipo/s que utilice como senuelos estan tambien haciendo un sondeo de la red. De esta manera sus IDS pueden llegar a informar de que se estan realizando de 5 a 10 sondeos de puertos desde distintas direcciones IP, pero no sabran que direccion IP esta realizando el analisis y cuales son senuelos inocentes. Aunque esta tecnica puede vencerse mediante el seguimiento del camino de los encaminadores, descarte de respuesta (<>, N. del T.), y otros mecanismos activos, generalmente es una tecnica efectiva para esconder su direccion IP. Se debe separar cada equipo de distraccion mediante comas, y puede utilizar ME (<>, N. del T.) como uno de los senuelos para representar la posicion de su verdadera direccion IP. Si pone ME en la sexta posicion o superior es probable que algunos detectores de sondeos de puertos habituales (como el excelente scanlogd de Solar Designer) ni siquiera muestren su direccion IP. Si no utiliza ME, Nmap le pondra en una posicion aleatoria. Tenga en cuenta que los equipos que utilice como distraccion deberian estar conectados o puede que accidentalmente causes un ataque de inundacion SYN a sus objetivos. Ademas, seria bastante sencillo determinar que equipo esta realmente haciendo el sondeo si solo uno esta disponible en la red. Puede que quiera utilizar direcciones IP en lugar de nombres (de manera que no aparezca en los registros del servidor de nombres de los sistemas utilizados como senuelo). Se utilizan los senuelos tanto para el sondeo de ping inicial (si se utiliza ICMP, SYN, ACK, o cualquier otro) como durante la fase de sondeo. Tambien se utilizan los senuelos durante la deteccion de sistema operativo (-O). Los senuelos no funcionaran con la deteccion de version o el sondeo TCP connect(). Vale la pena tener en cuenta que utilizar demasiados senuelos puede ralentizar el sondeo y potencialmente hacerlo menos exacto. Ademas, algunos proveedores de acceso a Internet filtraran los paquetes falsificados, aunque hay muchos que no lo hacen. -S (Falsifica la direccion de origen) Nmap puede que no sea capaz de determinar tu direccion IP en algunas ocasiones (Nmap se lo dira si pasa). En esta situacion, puede utilizar la opcion -S con la direccion IP de la interfaz a traves de la cual quieres enviar los paquetes. Otro uso alternativo de esta opcion es la de falsificar la direccion para que los objetivos del analisis piensen que algun otro los esta sondeando. !Imagine una compania a los que les sondea repetidamente la competencia! Generalmente es necesaria la opcion -e si lo quiere utilizar asi, y tambien seria recomendable la opcion -P0. -e (Utilizar la interfaz especificada) Indica a Nmap a traves de que interfaz debe enviar y recibir los paquetes. Nmap deberia detectar esto automaticamente, pero se lo dira si no. --source-port ; -g (Falsificar el puerto de origen) Un error de configuracion sorprendentemente comun es confiar en el trafico basandose unicamente en el numero de puerto origen. Es facil entender por que pasa esto. Un administrador que esta configurando su nuevo y flamante cortafuegos, recibe de repente quejas de todos sus usuarios desagradecidos que le dicen que sus aplicaciones han dejado de funcionar. En particular, puede romperse el DNS porque las respuestas UDP de DNS de servidores externos ya no pueden entrar en la red. Otro ejemplo habitual es el caso del FTP. En una transferencia activa de FTP, el servidor remoto intenta establecer una conexion de vuelta con el cliente para transferir el archivo solicitado. Existen soluciones seguras para estos problemas, como las pasarelas en el nivel de aplicacion o los modulos de cortafuegos que realizan un analisis del protocolo. Desgraciadamente, tambien hay soluciones mas faciles y menos seguras. Al darse cuenta que las respuestas de DNS vienen del puerto 53 y que las conexiones activas de FTP vienen del puerto 20, muchos administradores caen en la trampa de configurar su sistema de filtrado para permitir el trafico entrante desde estos puertos. Generalmente asumen que ningun atacante se dara cuenta de estos agujeros en el cortafuegos ni los aprovechara. En otros casos, los administradores consideran esto una solucion a corto plazo hasta que puedan implementar una solucion mas segura. Y despues se olvidan de hacer la mejora de la seguridad. Los administradores de red con mucho trabajo no son los unicos que caen en esta trampa. Muchos productos se lanzan al mercado con estas reglas inseguras. Hasta Microsoft lo ha hecho. Los filtros de IPsec que se preinstalan con Windows 2000 y Windows XP contienen una regla implicita que permite todo el trafico TCP o UDP desde el puerto 88 (Kerberos). Otro caso conocido es el de las versiones de Zone Alarm Firewall Personal que, hasta la version 2.1.25, permitian cualquier paquete entrante UDP desde el puerto 53 (DNS) o 67 (DHCP). Nmap ofrece las opciones -g y --source-port (son equivalentes) para aprovecharse de estas debilidades. Simplemente indique el numero de puerto y Nmap enviara los paquetes desde ese puerto cuando sea posible. Nmap debe utilizar distintos numeros de puerto para ciertos tipos de prueba en la deteccion de sistema operativo para que funcionen correctamente, y las solicitudes de DNS ignoran la opcion --source-port porque Nmap depende de las librerias del sistema para hacerlas. Esta opcion se soporta completamente en muchos sondeos TCP, incluyendo el sondeo SYN, al igual que los sondeos UDP. --data-length (Anadir datos aleatorios a los paquetes enviados) Normalmente Nmap envia paquetes minimos que contienen solo la cabecera. Asi, los paquetes TCP que envia son generalmente de 40 bytes y las solicitudes echo de ICMP son de tan solo 28. Esta opcion le dice a Nmap que anada el numero indicado de bytes aleatorios a la mayoria de los paquetes que envia. Esta opcion no afecta a los paquetes enviados para la deteccion de sistema operativo (-O), pero si a la mayoria de los paquetes de ping y de sondeo de puertos. Esta opcion hace que el sondeo sea un poco mas lento, pero tambien que el sondeo sea un poco mas dificil de detectar. --ttl (Indica el valor del campo tiempo-de-vida de la cabecera IP) Establece el campo tiempo-de-vida (<>, N. del T.) en la cabecera de los paquetes IPv4 al valor especificado. --randomize-hosts (Mezclar aleatoriamente la lista de equipos a sondear) Indica a Nmap que debe mezclar aleatoriamente cada grupo de hasta 8096 equipos antes de hacer un sondeo. Esto puede hacer que el sondeo sea menos obvio para algunos sistemas de monitorizacion de la red, especialmente cuando se combina con las opciones que ralentizan el sondeo. Si quiere mezclar aleatoriamente listas mas grandes, incremente el valor de la constante PING_GROUP_SZ en nmap.h y recompile el programa. Una solucion alternativa es generar la lista de sistemas a sondear con un sondeo de lista (-sL -n -oN fichero), ordenarlo aleatoriamente con un script de Perl, y luego darle a Nmap la lista entera con la opcion -iL. --spoof-mac (Falsifica la direccion MAC) Solicita a Nmap que utilice la MAC dada para todas las tramas de Ethernet enviadas. Esta opcion activa implicitamente la opcion --send-eth para asegurar que Nmap envia los paquetes del nivel Ethernet. La MAC dada puede tener varios formatos. Nmap elegira una MAC completamente aleatoria para la sesion si se utiliza el valor "0". Nmap utilizara la MAC indicada si el parametro es un numero par de digitos hexadecimales (separando opcionalmente cada dos digitos con dos puntos). Nmap rellenara los 6 bytes restantes con valores aleatorios si se dan menos de 12 digitos hexadecimales. Si el argumento no es ni 0 ni un conjunto de digitos hexadecimales, Nmap mirara en nmap-mac-prefixes para encontrar un fabricante cuyo nombre coincida con el parametro utilizado (en esta busqueda no diferenciara entre mayusculas y minusculas). Si se encuentra algun fabricante, Nmap utilizara el OUI del fabricante (prefijo de 3 bytes) y rellenara los otros 3 bytes aleatoriamente. Ejemplos de argumentos --spoof-mac son: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, y Cisco. --badsum (Envia paquetes con sumas de comprobacion TCP/UDP erroneas) Esta opcion le indica a Nmap que debe generar sumas de comprobacion invalidas para los paquetes que se envien a los equipos objetivos. Cualquier respuesta que se reciba vendra de un cortafuegos o un IDS que no comprobo la suma, dado que la mayoria de las pilas IP descartan estos paquetes. Para obtener mas informacion de esta tecnica puede consultar https://nmap.org/p60-12.txt SALIDA La utilidad de una herramienta de seguridad esta limitada por la salida que genera. De poco sirven pruebas y algoritmos complejos si luego no se presentan de una forma organizada y comprensible. Dada la cantidad de formas en las que puede utilizarse Nmap, tanto por personas como por otros programas, no es posible complacer a todos con un unico formato. Por ello Nmap ofrece varios formatos, incluyendo el modo interactivo para que los humanos lo lean directamente y un formato XML para que sea interpretado por otros programas. Ademas de ofrecer distintos formatos de salida, Nmap ofrece opciones adicionales para controlar cuanta informacion de mas se muestra en la salida, asi como opciones para controlar los mensajes de depuracion que se muestran. Los tipos de salida pueden enviarse a la salida estandar o a algun archivo especificando su nombre. Nmap puede anadir informacion al archivo o sobreescribirlo. Los formatos de salida pueden utilizarse tambien para retomar un sondeo que se haya interrumpido. Nmap puede generar la salida en cinco formatos distintos. El formato por omision es el llamado salida interactiva, y se envia a la salida estandar (<>). Tambien esta la salida normal, que es similar a la salida interactiva salvo que muestra menos informacion de ejecucion y menos advertencias, ya que se espera que se analice una vez que el sondeo haya terminado en lugar de ser analizada interactivamente. La salida XML es uno de los formatos de salida mas importantes, ya que puede convertirse a HTML, los programas (como la interfaz de usuario de Nmap) pueden interpretarla facilmente o puede importarse a una base de datos. Los dos tipos de salida restantes son la sencilla salida para grep (o <>) que incluye la mayoria de la informacion de un sistema analizado en una sola linea, y la s4L1d4 sCRiPt KiDDi3 para usuarios que se consideran a si mismos |<-r4d. Aunque se utiliza la salida interactiva por omision y no tiene ninguna opcion de la linea de ordenes, los demas formatos utilizan la misma sintaxis. Toman un solo argumento, que es el archivo donde se guardaran los resultados. Pueden especificarse multiples formatos al mismo tiempo, pero solo puede especificar el mismo formato una vez. Por ejemplo, puede querer guardar la salida normal para su propia visualizacion mientras se guarda la informacion del mismo sondeo en formato XML para realizar un analisis posterior con un programa. Para hacer esto debe utilizar las opciones -oX misondeo.xml -oN misondeo.nmap. Se recomienda utilizar nombres mas descriptivos, si bien este capitulo utiliza nombres sencillos como misondeo.xml por razones de brevedad. Los nombres elegidos son una cuestion de preferencia personal. Yo utilizo nombres largos que incluyen la fecha del analisis y una palabra o dos describiendo el sondeo, dentro de un directorio con el nombre de la empresa que estoy analizando. Nmap seguira imprimiendo la salida interactiva en <> como lo hace habitualmente aunque se guarden en archivos la salida con estas opciones. Por ejemplo, la orden nmap -oX misondeo.xml destino imprime XML en misondeo.xml y llena la salida estandar con los mismos resultados interactivos que habria impreso si no se hubiese especificado la opcion -oX. Puedes cambiar este comportamiento dando un guion como argumento a una de las opciones de salida. Esto hace que Nmap desactive la salida interactiva y que imprima en su lugar los resultados en el formato especificado en la salida estandar. Con lo que la orden nmap -oX - destino enviara unicamente la salida XML a la salida estandar (<>). Los errores graves seguiran presentandose, posiblemente, en la salida normal de error, <>. A diferencia de algunos argumentos de Nmap, es obligatorio separar con un espacio la opcion de salida (como -oX) y el nombre del archivo o el guion. Si los omite y pone el argumento como -oG- o -oXsondeo.xml, una funcionalidad de compatibilidad con versiones anteriores hara que se cree una salida normal en los ficheros llamados G- y Xscan.xml respectivamente. Nmap tambien ofrece opciones para controlar la informacion extra que se ofrece sobre el sondeo y anadirlo a los archivos de salida en lugar de sobreescribirlos. Todas estas opciones se describen a continuacion. Formatos de salida de Nmap -oN (Salida normal) Solicita que la salida normal sea redirigida al archivo especificado. Como se ha dicho anteriormente, esto difiere un poco de la salida interactiva. -oX (salida XML) Solicita que la salida en XML se redirigida al archivo especificado. Nmap incluye un DTD que pueden utilizar los interpretes de XML para validar la salida XML. Aunque esta dirigida a que la utilicen programas, tambien puede ayudar a que una persona interprete la salida de Nmap. El DTD define los elementos legales del formato, y generalmente enumera los atributos y valores que pueden tener. La ultima version esta siempre disponible en https://nmap.org/data/nmap.dtd. XML ofrece un formato estable que es facilmente interpretado por cualquier programa. Hay interpretes libres de XML para los lenguajes de ordenador mas importantes, incluyendo C/C++, Perl, Python, y Java. La gente ha escrito librerias para la mayoria de estos lenguajes que manejan especificamente la salida de Nmap. Por ejemplo Nmap::Scanner[9] y Nmap::Parser[10] en el CPAN de Perl. XML es el formato preferente en la mayoria de los casos en que una aplicacion no trivial quiere utilizar Nmap. La salida de XML hace referencia a la hoja de estilo XSL que puede utilizarse para formatear los resultados en HTML. La forma mas facil de utilizarla es simplemente cargar la salida XML en un navegador web como Firefox o IE. Por omision, esto solo funcionara en el equipo en el que ejecuto Nmap (o uno configurado igual que dicho equipo) ya que la ruta de nmap.xsl se incluye directamente dentro del archivo. Puede utilizar la opcion --webxml o --stylesheet para crear un XML portable que pueda mostrarse como HTML en cualquier ordenador conectado a la web. -oS (SaLiDa ScRipT KIdd|3) La salida <