
Evasión de cortafuegos/IDS y falsificaciónMuchos pioneros de Internet habían previsto una red global abierta
con un espacio de direcciones IP universal que permitiese conexiones
virtuales entre dos nodos cualquiera. Esto permitiría a los equipos actuar
como verdaderos iguales, sirviendo y recuperando información el
uno del otro. La gente podría acceder a todos los sistemas de su casa desde
el trabajo, cambiando las propiedades del control del clima o desbloqueando
puertas. Esta visión de una conectividad universal fue sofocada por
la escasez del espacio de direcciones y los problemas de seguridad. Al
comienzo de la década de los años 90, las organizaciones empezaron a replegar
cortafuegos con el propósito de reducir la conectividad. Se acordonaron redes
enormes para protegerlas de la Internet no filtrada con
pasarelas («proxies», N. del T.) de aplicación, sistemas de traducción
de direcciones de red y filtros de paquetes. Del flujo sin restricciones
de la información se pasó a una regulación estricta de los canales de
comunicación aprobados y del contenido que pasa por ellos. Los filtros de red como los cortafuegos pueden hacer muy
difícil el análisis de una red. Esto no va a ser más fácil 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 también 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
métodos de entender la posición de la seguridad de su red es intentar
comprometerla. Empiece a pensar como un atacante, e intenta
utilizar las técnicas de esta sección contra sus propias redes. Lance
un sondeo de rebote FTP, un sondeo pasivo, un ataque de fragmentación,
o intente realizar un túnel desde una de sus propias pasarelas. Las compañías, además de restringir la actividad de red, están
monitorizando cada vez más el tráfico con sistemas de detección de intrusos (IDS, «Intrusion Detection Systems», N. del T.). Todos los IDS principales vienen preinstalados con reglas diseñadas 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
prevención de intrusiones (IPS) que bloquean activamente
el tráfico reconocido como maligno. Desafortunadamente para los administradores
de redes y para los fabricantes de IDS es muy difícil 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 análisis de los IDS sin ser detectados.
Mientras tanto, los administradores deben lidiar con un alto número de falsos positivos
debido a que algunas actividades inocentes se diagnostican erróneamente y generan
alarmas o se bloquean. Algunas personas sugieren que Nmap no debería ofrecer
funcionalidades de evasión 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 métodos de todas formas: encontrarían
otra herramienta para hacerlo o parchearían a Nmap para añadírsela. Al
mismo tiempo, los administradores tendrían muchos más problemas para
hacer su trabajo. Es mucho mejor defensa utilizar servidores FTP
modernos y parcheados que intentar prevenir la distribución de
herramientas que permitan la implementación de ataques de rebote
FTP. No hay ninguna herramienta mágica (u opción de Nmap) que permita
detectar y evitar cortafuegos y sistemas IDS. Esto requiere habilidad
y experiencia. Un tutorial va más allá del alcance de esta guía de
referencia, que sólo lista las opciones relevantes y describe lo que
hacen. -
-f (fragmentar los paquetes);
--mtu (utilizar el MTU especificado)
La opción -f hace que el sondeo
solicitado (incluyendo los sondeos ping) utilicen paquetes
IP fragmentados pequeños. La idea es dividir la cabecera del
paquete TCP entre varios paquetes para hacer más difícil que
los filtros de paquetes, sistemas de detección de intrusos y
otras molestias detecten lo que se está haciendo. ¡Tenga
cuidado con esta opción! Algunos programas tienen problemas
para manejar estos paquetes tan pequeños. El viejo sniffer
llamado Sniffit da un fallo de segmentación inmediatamente
después de recibir el primero de estos pequeños
fragmentos. Especifica esta opción una sola vez y Nmap
dividirá los paquetes en ocho bytes o menos después de la
cabecera de IP. De esta forma, una cabecera TCP de veinte
bytes se dividiría en 3 paquetes. Dos con ocho bytes de
cabecera TCP y uno con los últimos ocho. Obviamente, cada
fragmento tiene su propia cabecera IP. Especifica la opción
-f otra vez para utilizar fragmentos de
dieciséis bytes (reduciendo la cantidad de fragmentos). O
puedes especificar tu propio tamaño con la opción
--mtu. No utilice la opción -f si
utiliza --mtu. El tamaño debe ser múltiplo
de ocho. Aunque la utilización de paquetes fragmentados no
le ayudará a saltar los filtros de paquetes y cortafuegos
que encolen todos los fragmentos IP (como cuando se utiliza
la opción CONFIG_IP_ALWAYS_DEFRAG del núcleo de Linux),
algunas redes no pueden tolerar la pérdida de rendimiento
que esto produce y deshabilitan esa opción. Otros no pueden
habilitar esta opción porque los fragmentos pueden tomar
distintas rutas para entrar en su red. Algunos sistemas
defragmentan los paquetes salientes en el núcleo. Un ejemplo
de ésto es Linux con el módulo de seguimiento de conexiones
de iptables. Realice un sondeo con un programa de captura de
tráfico, como Ethereal, para asegurar que los paquetes que
se envían están fragmentándose. Intente utilizar la opción
--send-eth, si su sistema operativo le está
causando problemas, para saltarse la capa IP y enviar tramas
directamente a la capa Ethernet en crudo. -
-D <señuelo1 [,señuelo2][,ME],...>
(Esconde un sondeo con señuelos)
Realiza un sondeo con señuelos. Esto hace creer que
el/los equipo/s que utilice como señuelos están también
haciendo un sondeo de la red. De esta manera sus IDS pueden
llegar a informar de que se están realizando de 5 a 10
sondeos de puertos desde distintas direcciones IP, pero no
sabrán qué dirección IP está realizando el análisis y cuáles
son señuelos inocentes. Aunque esta técnica puede
vencerse mediante el seguimiento del camino de los encaminadores,
descarte de respuesta («response-dropping», N. del T.), y
otros mecanismos activos, generalmente es una técnica
efectiva para esconder su dirección IP. Se debe separar cada equipo de distracción mediante
comas, y puede utilizar ME («YO», N. del T.) como uno de
los señuelos para representar la posición de su verdadera
dirección IP. Si pone ME
en la sexta posición o superior es probable que algunos
detectores de sondeos de puertos habituales (como el
excelente scanlogd de Solar Designer) ni siquiera muestren
su dirección IP. Si no utiliza ME, Nmap le pondrá en una posición
aleatoria. Tenga en cuenta que los equipos que utilice como
distracción deberían estar conectados o puede que
accidentalmente causes un ataque de inundación SYN a sus
objetivos. Además, sería bastante sencillo determinar qué
equipo está realmente haciendo el sondeo si sólo uno está
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 señuelo). Se utilizan los señuelos tanto para el sondeo de ping
inicial (si se utiliza ICMP, SYN, ACK, o cualquier otro)
como durante la fase de sondeo. También se utilizan los
señuelos durante la detección de sistema operativo
(-O). Los señuelos no funcionarán con la
detección de versión o el sondeo TCP connect(). Vale la pena tener en cuenta que utilizar demasiados
señuelos puede ralentizar el sondeo y potencialmente hacerlo
menos exacto. Además, algunos proveedores de acceso a
Internet filtrarán los paquetes falsificados, aunque hay
muchos que no lo hacen. -
-S <Dirección_IP> (Falsifica la dirección de origen)
Nmap puede que no sea capaz de determinar tu dirección
IP en algunas ocasiones (Nmap se lo dirá si pasa). En esta
situación, puede utilizar la opción -S
con la dirección IP de la interfaz a través de la cual
quieres enviar los paquetes. Otro uso alternativo de esta opción es la de
falsificar la dirección para que los objetivos del análisis
piensen que algún otro los está
sondeando. ¡Imagine una compañía a los que les sondea
repetidamente la competencia! Generalmente es necesaria la
opción -e si lo quiere utilizar así, y
también sería recomendable la opción
-P0. -
-e <interfaz> (Utilizar la interfaz especificada)
Indica a Nmap a través de qué interfaz debe enviar y
recibir los paquetes. Nmap debería detectar esto
automáticamente, pero se lo dirá si no. -
--source-port <número_de_puerto>;
-g <número_de_puerto> (Falsificar el puerto de origen)
Un error de configuración sorprendentemente común es
confiar en el tráfico basándose únicamente en el número de
puerto origen. Es fácil entender por qué pasa esto. Un
administrador que está 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 conexión de vuelta con el cliente para
transferir el archivo solicitado. Existen soluciones seguras para estos problemas,
como las pasarelas en el nivel de aplicación o
los módulos de cortafuegos que realizan un análisis del
protocolo. Desgraciadamente, también hay soluciones más fáciles
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 tráfico
entrante desde estos puertos. Generalmente asumen que ningún
atacante se dará cuenta de estos agujeros en el cortafuegos ni
los aprovechará. En otros casos, los administradores consideran
esto una solución a corto plazo hasta que puedan implementar
una solución más segura. Y después se olvidan de hacer la
mejora de la seguridad. Los administradores de red con mucho trabajo no son los
únicos 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 implícita que permite
todo el tráfico TCP o UDP desde el puerto 88 (Kerberos). Otro
caso conocido es el de las versiones de Zone Alarm Firewall
Personal que, hasta la versión 2.1.25, permitían 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
número de puerto y Nmap enviará los paquetes desde ese puerto
cuando sea posible. Nmap debe utilizar distintos números de
puerto para ciertos tipos de prueba en la detección de sistema
operativo para que funcionen correctamente, y las solicitudes
de DNS ignoran la opción --source-port porque
Nmap depende de las librerías del sistema para hacerlas. Esta
opción se soporta completamente en muchos sondeos TCP,
incluyendo el sondeo SYN, al igual que los sondeos UDP. -
--data-length <número> (Añadir datos aleatorios a los paquetes enviados)
Normalmente Nmap envía paquetes mínimos que contienen
sólo la cabecera. Así, los paquetes TCP que envía son
generalmente de 40 bytes y las solicitudes echo de ICMP son
de tan sólo 28. Esta opción le dice a Nmap que añada el
número indicado de bytes aleatorios a la mayoría de los
paquetes que envía. Esta opción no afecta a los paquetes
enviados para la detección de sistema operativo
(-O), pero sí a la mayoría de los paquetes
de ping y de sondeo de puertos. Esta opción hace que el
sondeo sea un poco más lento, pero también que el sondeo sea
un poco más difícil de detectar. -
--ttl <valor> (Indica el valor del campo tiempo-de-vida de la cabecera IP)
Establece el campo tiempo-de-vida («time-to-live»,
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 monitorización de la red, especialmente cuando
se combina con las opciones que ralentizan el sondeo. Si
quiere mezclar aleatoriamente listas más grandes, incremente
el valor de la constante PING_GROUP_SZ en nmap.h y recompile el programa.
Una solución 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 opción -iL. -
--spoof-mac <dirección MAC, prefijo o nombre del fabricante> (Falsifica la dirección MAC)
Solicita a Nmap que utilice la MAC dada para todas las
tramas de Ethernet enviadas. Esta opción activa
implícitamente la opción --send-eth para
asegurar que Nmap envía los paquetes del nivel Ethernet. La
MAC dada puede tener varios formatos. Nmap elegirá una MAC
completamente aleatoria para la sesión si se utiliza el
valor “0”. Nmap utilizará la MAC indicada si
el parámetro es un número par de dígitos hexadecimales
(separando opcionalmente cada dos dígitos con dos puntos).
Nmap rellenará los 6 bytes restantes con
valores aleatorios si se dan menos de 12 dígitos
hexadecimales. Si el argumento no es ni 0 ni un conjunto de
dígitos hexadecimales, Nmap mirará en nmap-mac-prefixes para encontrar
un fabricante cuyo nombre coincida con el parámetro
utilizado (en esta búsqueda no diferenciará entre mayúsculas
y minúsculas). Si se encuentra algún fabricante, Nmap
utilizará el OUI del fabricante (prefijo de 3 bytes) y
rellenará los otros 3 bytes aleatoriamente. Ejemplos de
argumentos --spoof-mac son: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, y Cisco. -
--badsum (Envía paquetes con sumas de comprobación TCP/UDP erróneas)
Esta opción le indica a Nmap que debe generar sumas de
comprobación inválidas para los paquetes que se envíen a los equipos
objetivos. Cualquier respuesta que se reciba vendrá de un cortafuegos
o un IDS que no comprobó la suma, dado que la mayoría de las pilas IP
descartan estos paquetes. Para obtener más información de esta
técnica puede consultar http://nmap.org/p60-12.txt
|
|