Nmap ofrece varias maneras de evitar las reglas de los firewalls y evadir los sistemas IDS/IPS, como la fragmentación de paquetes, el uso de señuelos (decoys) y otros métodos que se explican a continuación.
Firewalls
Un firewall es una medida de seguridad que evita conexiones no autorizadas desde redes externas. Su funcionamiento se basa en un software que supervisa el tráfico de red y decide, según las reglas establecidas, cómo tratar cada conexión. Puede permitir, ignorar o bloquear paquetes de red, previniendo conexiones peligrosas.
IDS/IPS
Los sistemas IDS (sistema de detección de intrusos) e IPS (sistema de prevención de intrusos) también son componentes de software. El IDS monitorea la red para detectar posibles ataques, los analiza y reporta cualquier actividad sospechosa. El IPS complementa al IDS, actuando de forma automática cuando detecta una amenaza, tomando medidas como bloquear la conexión. Ambos sistemas funcionan comparando patrones de tráfico con firmas conocidas de ataques.
Determinar la presencia de firewalls y sus reglas
Cuando un puerto aparece como “filtrado” en un escaneo, puede ser por varias razones, pero comúnmente es porque el firewall tiene reglas para bloquear ciertos paquetes. Los paquetes pueden ser “caídos” (ignorados sin respuesta) o “rechazados” (recibiendo una respuesta con un código de error).
Existen varios códigos de error posibles, como:
· Red inalcanzable
· Puerto inalcanzable
· Protocolo inalcanzable, entre otros.
El Escaneo de tipo TCP ACK de Nmap (-sA) es mucho más difícil de filtrar para firewalls y sistemas IDS/IPS que el SYN normal (-sS) o Connect scans (sT) porque solo envían un paquete TCP con la flag ACK. Cuando un puerto está cerrado o abierto, el host debe responder con un Flag RST
. A diferencia de las conexiones salientes, todos los intentos de conexión (con el SYN
flag) de redes externas generalmente están bloqueados por firewalls. Sin embargo, en los paquetes con el flag ACK
el firewall suele ignorar el flag no puede determinar si la conexión se estableció primero desde la red externa o la red interna.
Si observamos estos escaneos podemos ver diferentes resultados.
SYN-Scan
sudo nmap 10.129.2.28 -p 21,22,25 -sS -Pn -n --disable-arp-ping --packet-trace
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-21 14:56 CEST
SENT (0.0278s) TCP 10.10.14.2:57347 > 10.129.2.28:22 S ttl=53 id=22412 iplen=44 seq=4092255222 win=1024 <mss 1460>
SENT (0.0278s) TCP 10.10.14.2:57347 > 10.129.2.28:25 S ttl=50 id=62291 iplen=44 seq=4092255222 win=1024 <mss 1460>
SENT (0.0278s) TCP 10.10.14.2:57347 > 10.129.2.28:21 S ttl=58 id=38696 iplen=44 seq=4092255222 win=1024 <mss 1460>
RCVD (0.0329s) ICMP [10.129.2.28 > 10.10.14.2 Port 21 unreachable (type=3/code=3) ] IP [ttl=64 id=40884 iplen=72 ]
RCVD (0.0341s) TCP 10.129.2.28:22 > 10.10.14.2:57347 SA ttl=64 id=0 iplen=44 seq=1153454414 win=64240 <mss 1460>
RCVD (1.0386s) TCP 10.129.2.28:22 > 10.10.14.2:57347 SA ttl=64 id=0 iplen=44 seq=1153454414 win=64240 <mss 1460>
SENT (1.1366s) TCP 10.10.14.2:57348 > 10.129.2.28:25 S ttl=44 id=6796 iplen=44 seq=4092320759 win=1024 <mss 1460>
Nmap scan report for 10.129.2.28
Host is up (0.0053s latency).
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp open ssh
25/tcp filtered smtp
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
ACK-Scan
sudo nmap 10.129.2.28 -p 21,22,25 -sA -Pn -n --disable-arp-ping --packet-trace
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-21 14:57 CEST
SENT (0.0422s) TCP 10.10.14.2:49343 > 10.129.2.28:21 A ttl=49 id=12381 iplen=40 seq=0 win=1024
SENT (0.0423s) TCP 10.10.14.2:49343 > 10.129.2.28:22 A ttl=41 id=5146 iplen=40 seq=0 win=1024
SENT (0.0423s) TCP 10.10.14.2:49343 > 10.129.2.28:25 A ttl=49 id=5800 iplen=40 seq=0 win=1024
RCVD (0.1252s) ICMP [10.129.2.28 > 10.10.14.2 Port 21 unreachable (type=3/code=3) ] IP [ttl=64 id=55628 iplen=68 ]
RCVD (0.1268s) TCP 10.129.2.28:22 > 10.10.14.2:49343 R ttl=64 id=0 iplen=40 seq=1660784500 win=0
SENT (1.3837s) TCP 10.10.14.2:49344 > 10.129.2.28:25 A ttl=59 id=21915 iplen=40 seq=0 win=1024
Nmap scan report for 10.129.2.28
Host is up (0.083s latency).
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp unfiltered ssh
25/tcp filtered smtp
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Entre los dos ejemplos, debemos prestar atención a los paquetes RCVD y su flag establecida que recibimos de nuestro objetivo. Con el escaneo SYN (-sS) nuestro objetivo intenta establecer la conexión TCP enviando un paquete con el SYN-ACK (SA) flags configurados, y con el escaneo ACK (-sA) obtenemos el flag RST porque el puerto TCP 22 está abierto. Para el puerto TCP 25, no recibimos ningún paquete, lo que indica que los paquetes se descartarán.
Evasión de firewalls con NMap
Un método útil es el escaneo TCP ACK de Nmap (-sa). Este tipo de escaneo es más difícil de detectar por los firewalls que los escaneos tradicionales como SYN (-sS) o Connect (-sT), porque solo envía un paquete con la bandera ACK. Los firewalls suelen bloquear conexiones entrantes (con la bandera SYN), pero las conexiones con la bandera ACK pueden ser pasadas por alto porque el firewall no sabe si la conexión comenzó internamente o externamente.
Detección de IDS/IPS
A diferencia de los firewalls,
Los IDS/IPS son sistemas pasivos que monitorean todo el tráfico entre los hosts. El IDS detecta paquetes sospechosos y alerta al administrador, mientras que el IPS puede bloquear el tráfico automáticamente. Estos sistemas son más difíciles de detectar.
Una estrategia para averiguar si existe un IDS/IPS es realizar escaneos desde diferentes servidores (VPS). Si uno de ellos es bloqueado, es probable que el sistema de seguridad haya detectado un ataque. En este caso, se puede continuar el análisis con otro VPS y, además, realizar los escaneos de forma más sigilosa para no activar los mecanismos de seguridad.
Uso de señuelos (decoys)
Si un administrador bloquea rangos de IP específicos, los escaneos con señuelos (decoys) pueden ayudar a ocultar la IP real del atacante. NMap permite generar direcciones IP falsas que se intercalan con la IP real para confundir al firewall o al IDS/IPS, haciendo más difícil rastrear la fuente del escaneo.
Escanear con otras técnicas
Nmap también permite usar puertos específicos (como el puerto 53 de DNS) para realizar escaneos. Esto es útil porque algunos firewalls permiten el tráfico de ciertos puertos que necesitan para su funcionamiento normal.
sudo nmap 10.129.2.28 -p 80 -sS -Pn -n --disable-arp-ping --packet-trace -D RND:5
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-21 16:14 CEST
SENT (0.0378s) TCP 102.52.161.59:59289 > 10.129.2.28:80 S ttl=42 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0378s) TCP 10.10.14.2:59289 > 10.129.2.28:80 S ttl=59 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 210.120.38.29:59289 > 10.129.2.28:80 S ttl=37 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 191.6.64.171:59289 > 10.129.2.28:80 S ttl=38 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 184.178.194.209:59289 > 10.129.2.28:80 S ttl=39 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
SENT (0.0379s) TCP 43.21.121.33:59289 > 10.129.2.28:80 S ttl=55 id=29822 iplen=44 seq=3687542010 win=1024 <mss 1460>
RCVD (0.1370s) TCP 10.129.2.28:80 > 10.10.14.2:59289 SA ttl=64 id=0 iplen=44 seq=4056111701 win=64240 <mss 1460>
Nmap scan report for 10.129.2.28
Host is up (0.099s latency).
PORT STATE SERVICE
80/tcp open http
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Los ISP y los enrutadores suelen filtrar los paquetes falsificados, aunque provengan del mismo rango de red. Por lo tanto, también podemos especificar las direcciones IP de nuestros servidores VPS y usarlas en combinación con “IP ID
” manipulaciones en los encabezados de IP para escanear el objetivo.
Otro escenario sería que sólo las subredes individuales no tuvieran acceso a los servicios específicos del servidor. Entonces también podemos especificar manualmente la dirección IP de origen (-S
) para probar si obtenemos mejores resultados. Los señuelos se pueden utilizar para escaneos SYN, ACK, ICMP y escaneos de detección de sistema operativo.
Escanear utilizando una IP de origen diferente
sudo nmap 10.129.2.28 -n -Pn -p 445 -O -S 10.129.2.200 -e tun0
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-22 01:16 CEST
Nmap scan report for 10.129.2.28
Host is up (0.010s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 2.6.32 (96%), Linux 3.2 - 4.9 (96%), Linux 2.6.32 - 3.10 (96%), Linux 3.4 - 3.10 (95%), Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), Synology DiskStation Manager 5.2-5644 (94%), Linux 2.6.32 - 2.6.35 (94%), Linux 2.6.32 - 3.5 (94%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.11 seconds
En el ejemplo usamos las siguientes opciones:
10.129.2.28 | Escanea el objetivo especificado. |
-n | Desactiva la resolución DNS. |
-Pn | Deshabilita las solicitudes de eco ICMP. |
-p 445 | Explora sólo los puertos especificados. |
-O | Realiza un análisis de detección del sistema operativo. |
-S | Escanea el objetivo utilizando una dirección IP de origen diferente. |
10.129.2.200 | Especifica la dirección IP de origen. |
-e tuno | Envía todas las solicitudes a través de la interfaz especificada. |
Proxy DNS
Por defecto, Nmap
realiza una resolución DNS inversa a menos que se especifique lo contrario para encontrar la información más importante sobre nuestro objetivo. Las consultas DNS se realizan a través del puerto UDP 53. El puerto TCP
53 Anteriormente sólo se utilizaba para transferencias de zona “Zone transfers
” entre los servidores DNS o transferencias de datos de más de 512 bytes. Esto cambió con el uso de IPv6 y DNSSEC. Estos cambios hacen que muchas solicitudes de DNS se realicen a través del puerto TCP 53.
Sin embargo, Nmap
todavía nos ofrece la forma de especificar servidores DNS nosotros mismos (--dns-server <ns>,<ns>
). Este método es fundamental para nosotros si nos encontramos en una DMZ. Como Los servidores DNS de una empresa suelen ser más seguros que los de Internet; podríamos utilizarlos para interactuar con los hosts de la red interna. También podemos usar el puerto TCP 53 como puerto de origen (--source-port
) para nuestros escaneos. Si el administrador usa el firewall para controlar este puerto y no filtra IDS/IPS correctamente, nuestros paquetes TCP pasarán como de confianza y no serán detectados.
SYN-Scan de un puerto filtrado
sudo nmap 10.129.2.28 -p50000 -sS -Pn -n --disable-arp-ping --packet-trace
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-21 22:50 CEST
SENT (0.0417s) TCP 10.10.14.2:33436 > 10.129.2.28:50000 S ttl=41 id=21939 iplen=44 seq=736533153 win=1024 <mss 1460>
SENT (1.0481s) TCP 10.10.14.2:33437 > 10.129.2.28:50000 S ttl=46 id=6446 iplen=44 seq=736598688 win=1024 <mss 1460>
Nmap scan report for 10.129.2.28
Host is up.
PORT STATE SERVICE
50000/tcp filtered ibm-db2
Nmap done: 1 IP address (1 host up) scanned in 2.06 seconds
SYN-Scan desde el puerto DNS
sudo nmap 10.129.2.28 -p50000 -sS -Pn -n –disable-arp-ping –packet-trace –source-port 53 SENT (0.0482s) TCP 10.10.14.2:53 > 10.129.2.28:50000 S ttl=58 id=27470 iplen=44 seq=4003923435 win=1024 <mss 1460> RCVD (0.0608s) TCP 10.129.2.28:50000 > 10.10.14.2:53 SA ttl=64 id=0 iplen=44 seq=540635485 win=64240 <mss 1460> Nmap scan report for 10.129.2.28 Host is up (0.013s latency). PORT STATE SERVICE 50000/tcp open ibm-db2 MAC Address: DE:AD:00:00:BE:EF (Intel Corporate) Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
Ahora que hemos descubierto que el firewall acepta el puerto TCP 53, es muy probable que también podamos pasar los filtros IDS/IPS. Intentaremos conectarnos a un puerto usando NetCat.
ncat -nv --source-port 53 10.129.2.28 50000
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Connected to 10.129.2.28:50000.
220 ProFTPd
Otro ejemplo:
nmap -T4 -sV -v 10.129.39.227 -D RND:5 –stats-every=5s
T4: La velocidad de escaneo establecida.
-sV hace el scaneo más suave
-v: aumenta el nivel de detalle
-D RND:5: Establece el número de señuelos (Decoy) aleatorios que se utilizarán para escanear el objetivo.
–stats-every=5s: Esta opción devuelve información sobre la operación que estamos realizando.