Está en la página 1de 36

NMAP – TRYHACKME

TIPOS DE SCAN:

• TCP Connect Scans (-sT)


• SYN "Half-open" Scans (-sS)
• UDP Scans (-sU)

Additionally there are several less common port scan types, some of which we
will also cover (albeit in less detail). These are:

• TCP Null Scans (-sN)


• TCP FIN Scans (-sF)
• TCP Xmas Scans (-sX)

Para poner el firewall para que conteste a los TCP con reset --> iptables -I INPUT
-p tcp --dport <port> -j REJECT --reject-with tcp-reset
Si ponemos -sS --> Este parámetro indica a nmap que realice un escaneo TCP
SYN. Durante un escaneo TCP SYN, nmap envía paquetes SYN (solicitud de
sincronización) a los puertos de destino. Si el puerto está abierto, el objetivo
responderá con un paquete SYN/ACK (solicitud de sincronización / confirmación
de sincronización), lo que indica que el puerto está en modo escucha y
esperando una conexión. Si el puerto está cerrado, el objetivo responderá con
un paquete RST (reinicio) para indicar que el puerto está cerrado y no está
esperando conexiones. Si el puerto está filtrado por un firewall, el objetivo no
responderá a los paquetes SYN, lo que indica que el estado del puerto es
incierto.

Para UDP --> -SU


Para ver top ports --> nmap -sU --top-ports 20 IP
Si el puerto UDP no responde es que está open | filtered.

El escaneo NULL --> -sN --> Ocurre cuando la solicitud TCP se envía sin
establecer ninguna bandera en absoluto ( vacío). Según el RFC, el host de

1
destino debería responder con un RST si el puerto está cerrado. La flag es None
y pone none y responde con RST , ACK.
En el escaneo FIN --> -sF --> Se envía con un FIN flag.
En el escaneo XMAS --> -sX --> Se envían paquetes malformados TCP y se
esperan respuestas RST de los puertos rezados. Las banderas PSH, URG y
FINN aparecen con un 1.
** Estos escaneos se utilizan para evitar los Firewalls --> Firewall evasion.
** Microsoft Windows suele responder a estos escaneos RST para cada puerto.

Antes de nada, debemos ver si hay puertos activos. Para ello utilizamos -sn con
nmap --> nmap -sn IP - Subred o IP/subred.

"El interruptor -sn indica a Nmap que no escanee ningún puerto, lo que le obliga
a depender principalmente de paquetes de eco ICMP (o solicitudes ARP en una
red local, si se ejecuta con sudo o directamente como usuario root) para
identificar objetivos. Además de las solicitudes de eco ICMP, el interruptor -sn
también hará que Nmap envíe un paquete TCP SYN al puerto 443 del objetivo,
así como un paquete TCP ACK (o TCP SYN si no se ejecuta como root) al puerto
80 del objetivo."
El puerto 443 generalmente se asocia con conexiones seguras a través de
HTTPS, mientras que el puerto 80 se asocia con conexiones no cifradas a través
de HTTP. Sin embargo, en algunos casos, los servicios en estos puertos pueden
variar dependiendo de la configuración del servidor.

NSE Scripts
Hay diferentes categorías:

• safe:- Won't affect the target


• intrusive:- Not safe: likely to affect the target
• vuln:- Scan for vulnerabilities
• exploit:- Attempt to exploit a vulnerability
• auth:- Attempt to bypass authentication for running services (e.g. Log into
an FTP server anonymously)
• brute:- Attempt to bruteforce credentials for running services

2
• discovery:- Attempt to query running services for further information about
the network (e.g. query an SNMP server).

Algunos scripts requieren argumentos (por ejemplo, credenciales, si están


explotando una vulnerabilidad autenticada). Estos se pueden proporcionar
mediante el interruptor --script-args de Nmap. Un ejemplo de esto sería con el
script http-put (utilizado para cargar archivos utilizando el método PUT). Este
script requiere dos argumentos: la URL a la que cargar el archivo y la ubicación
del archivo en el disco.
nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-
put.file='./shell.php'
Para poner la categoría --> --script=vuln o --script=safe.
Para correr un script específico --> --script = hhtp-fileupload-exploited ( nombre
del script).
Si queremos poner varios juntos, se separan por una coma.
Los scripts los puedo encontrar aquí --> /usr/share/nmap/scripts
Para buscarlos, usamos este directorio --> /usr/share/nmap/scripts/script.db
- Con GREP --> grep "ftp" /usr/share/nmap/scripts/script.db
- Con ls --> ls -l /usr/share/nmap/scripts/*ftp*
- Con * --> grep "safe" /usr/share/nmap/scripts/script.db
Para instalar nuevos scripts:
- sudo apt update && sudo apt install nmap
- sudo wget -O /usr/share/nmap/scripts/<script-name>.nse
https://svn.nmap.org/nmap/scripts/<script-name>.ns
- nmap --script-updatedb

Para evadir los firewalls -->


- Pn --> No hace ping. Para los ICMP.
- f --> Fragmenta paquetes.
--mtu --> Mete el número de tranmisiones máxima por tamaño.
--scan-delay TIME ms
--badsum--> Esto se utiliza para generar un checksum inválido en los paquetes.
Cualquier pila real de TCP/IP descartaría este paquete, sin embargo, los firewalls
podrían responder automáticamente sin molestarse en verificar el checksum del

3
paquete. Por lo tanto, este interruptor se puede utilizar para determinar la
presencia de un firewall o sistema de detección de intrusiones (IDS).
--data-lenght se puede usar también para cambiar el tamaño de los datos.

NMAP - TRYHACKME

ENUMERATING TARGET

4
Mencionamos las diferentes técnicas que podemos utilizar para el escaneo en la
Tarea 1. Antes de explicar cada una en detalle y ponerla en práctica contra un
objetivo en vivo, necesitamos especificar los objetivos que queremos escanear.
En términos generales, puedes proporcionar una lista, un rango o una subred
como objetivos. Ejemplos de especificación de objetivos son:

• Lista: MACHINE_IP scanme.nmap.org example.com escaneará 3


direcciones IP.
• Rango: 10.11.12.15-20 escaneará 6 direcciones IP: 10.11.12.15,
10.11.12.16,... y 10.11.12.20.
• Subred: MACHINE_IP/30 escaneará 4 direcciones IP.También puedes
proporcionar un archivo como entrada para tu lista de objetivos, nmap -iL
list_of_hosts.txt.

Si deseas verificar la lista de hosts que Nmap escaneará, puedes usar nmap -sL
TARGETS. Esta opción te dará una lista detallada de los hosts que Nmap
escaneará sin escanearlos; sin embargo, Nmap intentará realizar una resolución
inversa de DNS en todos los objetivos para obtener sus nombres. Los nombres
podrían revelar información variada al pentester. (Si no deseas que Nmap
consulte al servidor DNS, puedes agregar -n).
Ejercicios:

• Nos pide que digamos que IP analiza primero nmap --> nmap -sL -n
10.10.12.13/29

El comando nmap -sL -n 10.10.12.13/29 ejecuta una operación de escaneo de


DNS inverso en un rango de direcciones IP. Aquí está desglosado:

• nmap: El comando para ejecutar Nmap.


• -sL: Indica a Nmap que realice un escaneo de resolución de DNS inverso.
En este caso, en lugar de escanear los puertos y servicios en las
direcciones IP, Nmap solo realizará resoluciones de DNS inverso para
mostrar los nombres asociados con las direcciones IP en el rango
especificado.

5
• -n: Esta opción indica a Nmap que no realice consultas de resolución de
DNS inverso en las direcciones IP. En otras palabras, no intentará resolver
los nombres de host correspondientes a las direcciones IP, lo que puede
acelerar el proceso y reducir la carga en el servidor DNS.
• 10.10.12.13/29: Esto especifica el rango de direcciones IP que se
escanearán. En este caso, se escanearán todas las direcciones IP en el
rango desde 10.10.12.13 hasta 10.10.12.20, ya que es un rango de
tamaño /29 (que incluye 8 direcciones IP en total).

1. Nos pide ahora un rango --> nmap -sL -n 10.10.0-255.101-125

DESCUBRIR LIVE HOSTS


Lo podemos hacer con:
- Arp
- ICMP
- TCP
- UDP

ARP :
¿Cómo sabrías qué hosts están activos y en funcionamiento? Es esencial evitar
perder tiempo escaneando puertos en un host sin conexión o una dirección IP

6
que no se esté utilizando. Hay varias formas de descubrir hosts en línea. Cuando
no se proporcionan opciones de descubrimiento de hosts, Nmap sigue los
siguientes enfoques para descubrir hosts en vivo:
Cuando un usuario con privilegios intenta escanear objetivos en una red local
(Ethernet), Nmap utiliza solicitudes ARP. Un usuario con privilegios es root o un
usuario que pertenece a sudoers y puede ejecutar sudo.Cuando un usuario con
privilegios intenta escanear objetivos fuera de la red local, Nmap utiliza
solicitudes ICMP echo, TCP ACK (Acknowledge) al puerto 80, TCP SYN
(Synchronize) al puerto 443 y solicitudes de marca de tiempo ICMP.Cuando un
usuario sin privilegios intenta escanear objetivos fuera de la red local, Nmap
recurre a un apretón de manos TCP de tres pasos enviando paquetes SYN a los
puertos 80 y 443.Nmap, de forma predeterminada, utiliza un escaneo de ping
para encontrar hosts en vivo y luego procede a escanear solo los hosts en vivo.
Si deseas utilizar Nmap para descubrir hosts en línea sin escanear los sistemas
en vivo, puedes emitir nmap -sn OBJETIVOS. Profundicemos para comprender
mejor las diferentes técnicas utilizadas.
El escaneo ARP es posible solo si estás en la misma subred que los sistemas
de destino. En una red Ethernet (802.3) y WiFi (802.11), necesitas conocer la
dirección MAC de cualquier sistema antes de poder comunicarte con él. La
dirección MAC es necesaria para la cabecera de la capa de enlace; la cabecera
contiene la dirección MAC de origen y la dirección MAC de destino, entre otros
campos. Para obtener la dirección MAC, el sistema operativo envía una consulta
ARP. Un host que responde a las consultas ARP está activo. La consulta ARP
solo funciona si el objetivo está en la misma subred que tú, es decir, en la misma
Ethernet/WiFi. Debes esperar ver muchas consultas ARP generadas durante un
escaneo Nmap de una red local. Si deseas que Nmap solo realice un escaneo
ARP sin escanear puertos, puedes usar nmap -PR -sn OBJETIVOS, donde -PR
indica que solo deseas un escaneo ARP. El siguiente ejemplo muestra a Nmap
utilizando ARP para el descubrimiento de hosts sin ningún escaneo de puertos.
Ejecutamos nmap -PR -sn IP_MÁQUINA/24 para descubrir todos los sistemas
en vivo en la misma subred que nuestra máquina objetivo.

7
sudo nmap -PR -sn 10.10.210.6/24

Si observamos los paquetes generados utilizando una herramienta como


tcpdump o Wireshark, veremos tráfico de red similar a la figura que se muestra
a continuación. En la figura, Wireshark muestra la dirección MAC de origen, la
dirección MAC de destino, el protocolo y la consulta relacionada con cada
solicitud ARP. La dirección de origen es la dirección MAC de nuestra AttackBox,
mientras que la dirección de destino es la dirección de difusión ya que no
conocemos la dirección MAC del objetivo. Sin embargo, vemos la dirección IP
del objetivo, que aparece en la columna "Info". En la figura, podemos observar
que estamos solicitando las direcciones MAC de todas las direcciones IP en la
subred, comenzando con 10.10.210.1. El host con la dirección IP que estamos
consultando enviará una respuesta ARP con su dirección MAC, y así es como
sabremos que está en línea.

Hablando de escaneos ARP, debemos mencionar un escáner construido en


torno a consultas ARP: arp-scan; proporciona muchas opciones para
personalizar tu escaneo. Visita la wiki de arp-scan para obtener información
detallada. Una elección popular es arp-scan --localnet o simplemente arp-scan -

8
l. Este comando enviará consultas ARP a todas las direcciones IP válidas en tus
redes locales. Además, si tu sistema tiene más de una interfaz y estás interesado
en descubrir los hosts activos en una de ellas, puedes especificar la interfaz
utilizando -I. Por ejemplo, sudo arp-scan -I eth0 -l enviará consultas ARP para
todas las direcciones IP válidas en la interfaz eth0.

sudo arp-scan 10.10.210.6/24

ICMP:

nmap -PE -sn MACHINE_IP/24

1. nmap: Es el comando principal de la herramienta Nmap.


2. -PE: Este es un argumento que indica a Nmap que realice un escaneo de
tipo "ping" utilizando protocolo ICMP Echo. Básicamente, Nmap enviará
paquetes ICMP Echo Request a las direcciones IP objetivo y esperará
respuestas ICMP Echo Reply para determinar si los hosts están vivos y
accesibles en la red.
3. -sn: Este argumento es para indicar a Nmap que realice un "escaneo sin
puertos" o "escaneo de hosts" en lugar de un escaneo de puertos. Esto
significa que Nmap no intentará determinar qué puertos están abiertos en
los hosts, sino que simplemente se centrará en determinar si los hosts
están activos y disponibles en la red.
4. MACHINE_IP/24: Esto se refiere a la dirección IP del dispositivo desde el
cual estás ejecutando el comando, junto con la notación CIDR "/24"

** En Wireshark se vería como ECHO PING


ICMP con Timestamp:
nmap -PP -sn MACHINE_IP/24

1. nmap: Es el comando principal de la herramienta Nmap.


2. -PP: Este argumento indica a Nmap que utilice una técnica de escaneo
de hosts llamada "TCP Ping". En este caso, Nmap enviará paquetes TCP
SYN a puertos cerrados en los hosts objetivo. Si recibe una respuesta
TCP RST (reset) significa que el host está activo, mientras que si no recibe

9
respuesta, el host se considera inactivo. Este tipo de escaneo puede ser
útil para identificar hosts en redes que filtran o bloquean paquetes ICMP
(como los utilizados en el escaneo de tipo -PE).
3. -sn: Similar al comando anterior, este argumento indica que Nmap realice
un "escaneo sin puertos" o "escaneo de hosts", enfocándose en
determinar la disponibilidad de los hosts en lugar de explorar los puertos.
4. MACHINE_IP/24: Al igual que antes, esto se refiere a la dirección IP del
dispositivo desde el cual estás ejecutando el comando, junto con la
notación CIDR "/24".

** En Wiereshark se vería como Timestamp request.

ICMP con address mask requests:


nmap -PM -sn MACHINE_IP/24

1. nmap: Como siempre, este es el comando principal de la herramienta


Nmap.
2. -PM: Este argumento indica a Nmap que utilice una técnica de escaneo
de hosts llamada "SCTP INIT Ping". SCTP (Stream Control Transmission
Protocol) es un protocolo de transporte similar a TCP y UDP. Con este
argumento, Nmap enviará paquetes SCTP INIT a los hosts objetivo. Si
recibe una respuesta SCTP INIT ACK, eso significa que el host está
activo. Esta técnica de escaneo puede ser útil para identificar hosts que
responden a paquetes SCTP.
3. -sn: Como antes, este argumento indica que Nmap realice un "escaneo
sin puertos" o "escaneo de hosts", centrándose en determinar la
disponibilidad de los hosts en la red en lugar de explorar los puertos.
4. MACHINE_IP/24: Esto se refiere a la dirección IP del dispositivo desde el
cual estás ejecutando el comando, junto con la notación CIDR "/24"

** En WireShark se ve como Protocol ICMP / Info Address mask request.

NMAP HOST DISCOVERY USING ICMP

Para los hosts, utilizamos -PS+puerto --> -PS21 o -PS21-25, -PS80,443,8080.

10
nmap -PS -sn MACHINE_IP/24

1. nmap: Como siempre, este es el comando principal de la herramienta


Nmap.
2. -PS: Este argumento indica a Nmap que utilice una técnica de escaneo
de hosts llamada "TCP SYN Ping". En este caso, Nmap enviará paquetes
TCP SYN a los puertos especificados. Si recibe una respuesta SYN-ACK,
eso indica que el puerto está abierto y el host está activo. Si recibe una
respuesta RST, significa que el puerto está cerrado y el host está activo.
Este tipo de escaneo se utiliza para determinar la disponibilidad de hosts
a través del análisis de puertos.
3. -sn: Como antes, este argumento indica que Nmap realice un "escaneo
sin puertos" o "escaneo de hosts", enfocándose en determinar la
disponibilidad de los hosts en la red en lugar de explorar los puertos.
4. MACHINE_IP/24: Esto se refiere a la dirección IP del dispositivo desde el
cual estás ejecutando el comando, junto con la notación CIDR "/24".

11
TCP ACK PING
Como has supuesto, esto envía un paquete con el flag ACK configurado. Debes
estar ejecutando Nmap como un usuario con privilegios para lograr esto. Si lo
intentas como un usuario sin privilegios, Nmap intentará un handshake de 3
pasos.
Por defecto, se utiliza el puerto 80. La sintaxis es similar a la del ping TCP SYN.
-PA debe ir seguido de un número de puerto, un rango, una lista o una
combinación de ellos. Por ejemplo, considera -PA21, -PA21-25 y -
PA80,443,8080. Si no se especifica ningún puerto, se usará el puerto 80.
La siguiente figura muestra que cualquier paquete TCP con un flag ACK debería
recibir un paquete TCP de vuelta con el flag RST configurado. El objetivo
responde con el flag RST porque el paquete TCP con el flag ACK no forma parte
de ninguna conexión en curso. La respuesta esperada se utiliza para detectar si
el host de destino está activo.

sudo nmap -PA -sn MACHINE_IP/24

1. nmap: Es el comando principal de la herramienta Nmap.


2. -PA: Este argumento indica a Nmap que utilice una técnica de escaneo
de hosts llamada "TCP ACK Ping". Cuando se utiliza -PA, Nmap enviará
paquetes TCP con el flag ACK (Acknowledgment) configurado. El flag
ACK se utiliza normalmente para confirmar la recepción de datos en una
conexión TCP. En este caso, Nmap no intenta establecer una conexión
completa, sino que solo envía el paquete ACK y espera una respuesta de
tipo RST (Reset) si el host está activo y no tiene una conexión abierta en
ese puerto. Este tipo de escaneo es menos invasivo que un escaneo de
puertos completo, ya que no establece una conexión completa.
3. -sn: Como se ha mencionado en respuestas anteriores, este argumento
indica que Nmap realice un "escaneo sin puertos" o "escaneo de hosts",
enfocándose en determinar la disponibilidad de los hosts en la red en lugar
de explorar los puertos.

12
4. MACHINE_IP/24: Esto se refiere a la dirección IP del dispositivo desde el
cual estás ejecutando el comando, junto con la notación CIDR "/24".

UDP PING

Finalmente, podemos utilizar UDP para descubrir si el host está en línea. A


diferencia del ping TCP SYN, enviar un paquete UDP a un puerto abierto no se
espera que genere ninguna respuesta. Sin embargo, si enviamos un paquete
UDP a un puerto UDP cerrado, esperamos recibir un paquete ICMP con el
mensaje "puerto inaccesible"; esto indica que el sistema objetivo está activo y
disponible.
En la siguiente figura, observamos un paquete UDP enviado a un puerto UDP
abierto que no desencadena ninguna respuesta. Sin embargo, enviar un paquete
UDP a cualquier puerto UDP cerrado puede generar una respuesta que indica
indirectamente que el objetivo está en línea.

13
Masscan utiliza un enfoque similar para descubrir los sistemas disponibles. Sin
embargo, para completar su escaneo de red rápidamente, Masscan es bastante
agresivo en la velocidad de generación de paquetes. La sintaxis es bastante
similar: -p puede ir seguido de un número de puerto, una lista o un rango.
Considera los siguientes ejemplos:

14
• masscan MACHINE_IP/24 -p443
• masscan MACHINE_IP/24 -p80,443
• masscan MACHINE_IP/24 -p22-25
• masscan MACHINE_IP/24 --top-ports 100

DNS INVERSO - REVERSE - DNS LOOKUP


El comportamiento predeterminado de Nmap es utilizar DNS inverso en los hosts
en línea. Dado que los nombres de host pueden revelar mucha información, este
paso puede ser útil. Sin embargo, si no deseas enviar tales consultas DNS,
puedes utilizar -n para omitir este paso.
Por defecto, Nmap buscará hosts en línea; sin embargo, puedes usar la opción
-R para consultar el servidor DNS incluso para los hosts fuera de línea. Si deseas
utilizar un servidor DNS específico, puedes agregar la opción --dns-servers
DNS_SERVER.

RESUMEN :

Recuerda agregar -sn si solo estás interesado en descubrir hosts sin explorar
puertos. Omitir -sn hará que Nmap por defecto realice exploración de puertos en
los hosts activos.

15
ESCANEO DE PUERTOS

TCP - UDP Ports


Nmap considera los siguientes seis estados:

• Abierto (Open): indica que un servicio está escuchando en el puerto


especificado.
• Cerrado (Closed): indica que ningún servicio está escuchando en el
puerto especificado, aunque el puerto es accesible. Por "accesible" nos
referimos a que es alcanzable y no está bloqueado por un firewall u otros
dispositivos o programas de seguridad.
• Filtrado (Filtered): significa que Nmap no puede determinar si el puerto
está abierto o cerrado porque el puerto no es accesible. Este estado suele
deberse a un firewall que impide que Nmap alcance ese puerto. Los
paquetes de Nmap pueden estar siendo bloqueados para llegar al puerto;
alternativamente, las respuestas pueden estar siendo bloqueadas para
llegar al host de Nmap.
• No Filtrado (Unfiltered): significa que Nmap no puede determinar si el
puerto está abierto o cerrado, aunque el puerto es accesible. Este estado
se encuentra al usar un escaneo ACK -sA.
• Abierto|Filtrado (Open|Filtered): Esto significa que Nmap no puede
determinar si el puerto está abierto o filtrado.
• Cerrado|Filtrado (Closed|Filtered): Esto significa que Nmap no puede
decidir si un puerto está cerrado o filtrado.

** DNS --> Puerto 53


Nmap admite diferentes tipos de escaneos de puertos TCP. Para comprender la
diferencia entre estos escaneos de puertos, es necesario revisar el encabezado
TCP. El encabezado TCP consiste en los primeros 24 bytes de un segmento
TCP. La siguiente figura muestra el encabezado TCP tal como se define en el
RFC 793. Esta figura puede parecer complicada al principio, pero en realidad es

16
bastante sencilla de entender. En la primera fila, tenemos el número de puerto
TCP de origen y el número de puerto de destino. Podemos observar que el
número de puerto se representa con 16 bits (2 bytes). En la segunda y tercera
filas, encontramos el número de secuencia y el número de acuse de recibo. Cada
fila tiene asignados 32 bits (4 bytes), con un total de seis filas, lo que suma 24
bytes en total.

En particular, debemos centrarnos en las banderas que Nmap puede activar o


desactivar. Hemos resaltado las banderas TCP en rojo. Establecer un bit de
bandera significa asignar su valor a 1. De izquierda a derecha, las banderas en
el encabezado TCP son:

• URG: La bandera de urgencia indica que el campo de puntero urgente es


significativo. El puntero urgente indica que los datos entrantes son
urgentes y que un segmento TCP con la bandera URG configurada se
procesa de inmediato sin tener que esperar a segmentos TCP enviados
previamente.

17
• ACK: La bandera de acuse de recibo indica que el número de acuse de
recibo es significativo. Se utiliza para confirmar la recepción de un
segmento TCP.
• PSH: La bandera de push solicita a TCP que pase los datos a la aplicación
de manera rápida.
• RST: La bandera de reinicio se usa para restablecer la conexión. Otro
dispositivo, como un firewall, podría enviarla para cerrar una conexión
TCP. Esta bandera también se utiliza cuando se envían datos a un host y
no hay un servicio en el extremo receptor para responder.
• SYN: La bandera de sincronización se utiliza para iniciar un apretón de
manos TCP de 3 vías y sincronizar los números de secuencia con el otro
host. El número de secuencia debe establecerse al azar durante el
establecimiento de la conexión TCP.
• FIN: El emisor no tiene más datos para enviar.

RECORDAMOS:
TCP --> 3 Way Handshake

Abierto cuando hacemos un Nmap normal.


Si usamos el flga -sT:

18
Es importante destacar que si no eres un usuario con privilegios (root o sudo),
un escaneo de conexión TCP es la única opción posible para descubrir puertos
TCP abiertos.
En la siguiente ventana de captura de paquetes de Wireshark, vemos a Nmap
enviando paquetes TCP con la bandera SYN configurada a varios puertos, como
256, 443, 143, y así sucesivamente. Por defecto, Nmap intentará conectarse a
los 1000 puertos más comunes. Un puerto TCP cerrado responde a un paquete
SYN con RST/ACK para indicar que no está abierto. Este patrón se repetirá para
todos los puertos cerrados a medida que intentemos iniciar un apretón de manos
TCP de 3 vías con ellos.

19
Notamos que el puerto 143 está abierto, por lo que respondió con un SYN/ACK,
y Nmap completó el apretón de manos de 3 vías enviando un ACK. La figura a
continuación muestra todos los paquetes intercambiados entre nuestro host de
Nmap y el puerto 143 del sistema objetivo. Los primeros tres paquetes son la
finalización del apretón de manos TCP de 3 vías. Luego, el cuarto paquete lo
deshace con un paquete RST/ACK.

Ten en cuenta que podemos usar -F para habilitar el modo rápido y reducir el
número de puertos escaneados de 1000 a los 100 puertos más comunes.
Vale la pena mencionar que también se puede agregar la opción -r para escanear
los puertos en orden consecutivo en lugar de en orden aleatorio. Esta opción es
útil cuando se prueba si los puertos se abren de manera consistente, por
ejemplo, al iniciar un objetivo.

TCP SYN
Los usuarios sin privilegios están limitados al escaneo de tipo "connect". Sin
embargo, el modo de escaneo predeterminado es el escaneo SYN, y requiere
que el usuario tenga privilegios (root o sudo) para ejecutarlo. El escaneo SYN no
necesita completar el apretón de manos TCP de 3 vías; en cambio, deshace la
conexión una vez que recibe una respuesta del servidor. Debido a que no

20
establecemos una conexión TCP, esto disminuye las posibilidades de que el
escaneo quede registrado. Podemos seleccionar este tipo de escaneo utilizando
la opción -sS. La figura a continuación muestra cómo funciona el escaneo TCP
SYN sin completar el apretón de manos TCP de 3 vías.

UDP
UDP es un protocolo sin conexión y, por lo tanto, no requiere un apretón de
manos para establecer una conexión. No podemos garantizar que un servicio
que escucha en un puerto UDP respondería a nuestros paquetes. Sin embargo,
si se envía un paquete UDP a un puerto cerrado, se devuelve un error ICMP de
puerto inaccesible (tipo 3, código 3). Puedes seleccionar el escaneo UDP
utilizando la opción -sU; además, puedes combinarlo con otro escaneo TCP.
La siguiente figura muestra que si enviamos un paquete UDP a un puerto UDP
abierto, no podemos esperar ninguna respuesta a cambio. Por lo tanto, enviar
un paquete UDP a un puerto abierto no nos dirá nada.

21
Sin embargo, como se muestra en la figura a continuación, esperamos recibir un
paquete ICMP de tipo 3, que indica "destino inaccesible", y código 3, que indica
"puerto inaccesible". En otras palabras, los puertos UDP que no generan ninguna
respuesta son los que Nmap indicará como abiertos.

TUNELLING

Puedes especificar los puertos que deseas escanear en lugar de los 1000
puertos por defecto. A estas alturas, especificar los puertos es intuitivo. Veamos
algunos ejemplos:

• Lista de puertos: -p22,80,443 escaneará los puertos 22, 80 y 443.


• Rango de puertos: -p1-1023 escaneará todos los puertos entre 1 y 1023
inclusivos, mientras que -p20-25 escaneará los puertos entre 20 y 25
inclusivos.
• Puedes solicitar el escaneo de todos los puertos utilizando -p-, lo que
escaneará los 65535 puertos. Si deseas escanear los 100 puertos más
comunes, agrega -F. Utilizando --top-ports 10 revisará los diez puertos
más comunes.

22
Puedes controlar el ritmo de escaneo usando -T<0-5>. -T0 es el más lento
(paranoico), mientras que -T5 es el más rápido. Según la página de manual de
Nmap, existen seis plantillas:

• paranoico (0)
• sigiloso (1)
• cortés (2)
• normal (3)
• agresivo (4)
• insano (5)

Para evitar alertas de IDS, podrías considerar -T0 o -T1. Por ejemplo, -T0
escanea un puerto a la vez y espera 5 minutos entre el envío de cada sonda, por
lo que puedes imaginar cuánto tiempo llevaría escanear un objetivo para
finalizar. Si no especificas ningún tiempo, Nmap usa el normal -T3. Ten en cuenta
que -T5 es el más agresivo en términos de velocidad; sin embargo, esto puede
afectar la precisión de los resultados del escaneo debido a la mayor probabilidad
de pérdida de paquetes. -T4 a menudo se utiliza durante CTFs (Capture The
Flag) y al aprender a escanear en objetivos de práctica, mientras que -T1 se
utiliza frecuentemente durante compromisos reales donde la furtividad es más
importante.
Alternativamente, puedes optar por controlar la velocidad de los paquetes
usando --min-rate <número> y --max-rate <número>. Por ejemplo, --max-rate 10
o --max-rate=10 asegura que tu escáner no esté enviando más de diez paquetes
por segundo.
Además, puedes controlar la paralelización de las sondas usando --min-
parallelism <numprobes> y --max-parallelism <numprobes>. Nmap sondea los
objetivos para descubrir qué hosts están activos y qué puertos están abiertos; la
paralelización de las sondas especifica el número de esas sondas que pueden
ejecutarse en paralelo. Por ejemplo, --min-parallelism=512 indica a Nmap que
mantenga al menos 512 sondas en paralelo; estas 512 sondas están
relacionadas con el descubrimiento de hosts y puertos abiertos.

RESUMEN:

23
PORT SCAN PLUS

NULL SCAN

- sN

24
FIN SCAN
- sF

XMAS SCAN
-sX

TCP MAIMON SCAN


En este escaneo, se establecen los bits FIN y ACK. El objetivo debe enviar un
paquete RST como respuesta. Sin embargo, ciertos sistemas derivados de BSD
descartan el paquete si se trata de un puerto abierto que expone los puertos
abiertos. Este escaneo no funcionará en la mayoría de los objetivos encontrados

25
en redes modernas; sin embargo, lo incluimos en esta sala para comprender
mejor el mecanismo de escaneo de puertos y la mentalidad de hacking. Para
seleccionar este tipo de escaneo, utiliza la opción -sM.
La mayoría de los sistemas objetivo responden con un paquete RST
independientemente de si el puerto TCP está abierto. En tal caso, no podremos
descubrir los puertos abiertos. La figura a continuación muestra el
comportamiento esperado en los casos de puertos TCP abiertos y cerrados.

TCP ACK SCAN


Comencemos con el escaneo TCP ACK. Como su nombre indica, un escaneo
ACK enviará un paquete TCP con el indicador ACK configurado. Utiliza la opción
-sA para seleccionar este tipo de escaneo. Como mostramos en la figura a
continuación, el objetivo respondería al ACK con un RST, independientemente
del estado del puerto. Este comportamiento ocurre porque un paquete TCP con
el indicador ACK configurado debería enviarse solo en respuesta a un paquete
TCP recibido para reconocer la recepción de algún dato, a diferencia de nuestro
caso. Por lo tanto, este escaneo no nos dirá si el puerto de destino está abierto
en una configuración simple.

Este tipo de escaneo sería útil si hay un firewall en frente del objetivo. En
consecuencia, basándote en qué paquetes ACK obtuvieron respuestas,
aprenderás qué puertos no fueron bloqueados por el firewall. En otras palabras,
este tipo de escaneo es más adecuado para descubrir conjuntos de reglas y la
configuración del firewall.

26
WINDOW SCAN
Otro escaneo similar es el escaneo de ventana TCP. El escaneo de ventana TCP
es casi igual que el escaneo ACK; sin embargo, examina el campo de Ventana
TCP de los paquetes RST devueltos. En sistemas específicos, esto puede
revelar que el puerto está abierto. Puedes seleccionar este tipo de escaneo con
la opción -sW. Como se muestra en la figura a continuación, esperamos recibir
un paquete RST en respuesta a nuestros paquetes ACK "no invitados",
independientemente de si el puerto está abierto o cerrado.

Sin embargo, como cabría esperar, si repetimos nuestro escaneo de ventana


TCP en un servidor detrás de un firewall, esperamos obtener resultados más
satisfactorios. En la salida de la consola que se muestra a continuación, el
escaneo de ventana TCP señaló que tres puertos son detectados como
cerrados. (Esto contrasta con el escaneo ACK que etiquetó los mismos tres
puertos como no filtrados). Aunque sabemos que estos tres puertos no están
cerrados, nos damos cuenta de que respondieron de manera diferente, lo que
indica que el firewall no los está bloqueando.
*** Se debe repetir el escaneo para ver puertos.

CUSTOM SCAN
Si deseas experimentar con una nueva combinación de indicadores TCP más
allá de los tipos de escaneo TCP integrados, puedes hacerlo utilizando --
scanflags. Por ejemplo, si deseas establecer SYN, RST y FIN simultáneamente,
puedes hacerlo utilizando --scanflags RSTSYNFIN. Como se muestra en la figura
a continuación, si desarrollas tu escaneo personalizado, debes saber cómo se
comportarán los diferentes puertos para interpretar correctamente los resultados
en diferentes escenarios.

27
SPOOFING AND DECOYS

En algunas configuraciones de redes, podrás escanear un sistema objetivo


utilizando una dirección IP falsificada e incluso una dirección MAC falsificada.
Este tipo de escaneo solo es beneficioso en situaciones en las que puedas
garantizar la captura de la respuesta. Si intentas escanear un objetivo desde una
red aleatoria utilizando una dirección IP falsificada, es probable que no recibas
ninguna respuesta enrutada hacia ti, y los resultados del escaneo podrían ser
poco confiables.
La siguiente figura muestra al atacante lanzando el comando nmap -S
IP_FALSIFICADA 10.10.123.78. Como resultado, Nmap generará todos los
paquetes utilizando la dirección IP de origen proporcionada, IP_FALSIFICADA.
La máquina objetivo responderá a los paquetes entrantes y enviará las
respuestas a la dirección IP de destino IP_FALSIFICADA. Para que este
escaneo funcione y ofrezca resultados precisos, el atacante debe monitorizar el
tráfico de la red para analizar las respuestas.

28
En resumen, escanear con una dirección IP falsificada implica tres pasos:

1. El atacante envía un paquete con una dirección IP de origen falsificada a


la máquina objetivo.
2. La máquina objetivo responde a la dirección IP falsificada como destino.
3. El atacante captura las respuestas para determinar los puertos abiertos.

En general, es de esperar que especifiques la interfaz de red utilizando -e y


desactives explícitamente el escaneo de ping con -Pn. Por lo tanto, en lugar de
nmap -S IP_FALSIFICADA 10.10.123.78, necesitarás utilizar nmap -e
INTERFAZ_RED -Pn -S IP_FALSIFICADA 10.10.123.78 para indicarle a Nmap
explícitamente qué interfaz de red usar y que no espere recibir una respuesta de
ping. Vale la pena repetir que este escaneo será inútil si el sistema del atacante
no puede monitorear la red en busca de respuestas.

29
Cuando te encuentres en la misma subred que la máquina objetivo, también
podrás falsificar tu dirección MAC. Puedes especificar la dirección MAC de origen
utilizando --spoof-mac DIRECCION_MAC_FALSIFICADA. Esta falsificación de
direcciones solo es posible si el atacante y la máquina objetivo están en la misma
red Ethernet (802.3) o en la misma red WiFi (802.11).
La falsificación solo funciona en un número limitado de casos en los que se
cumplen ciertas condiciones. Por lo tanto, el atacante podría recurrir al uso de
señuelos (decoys) para hacer que sea más difícil identificarlo. El concepto es
simple: hacer que el escaneo parezca estar viniendo de muchas direcciones IP
diferentes para que la dirección IP del atacante se pierda entre ellas. Como se
muestra en la figura a continuación, el escaneo de la máquina objetivo parecerá
provenir de 3 fuentes diferentes y, en consecuencia, las respuestas también irán
a los señuelos.

30
Puedes lanzar un escaneo con señuelos especificando una dirección IP
específica o aleatoria después de -D. Por ejemplo, nmap -D
10.10.0.1,10.10.0.2,YO 10.10.123.78 hará que el escaneo de 10.10.123.78
parezca provenir de las direcciones IP 10.10.0.1, 10.10.0.2 y luego ME para
indicar que tu dirección IP debería aparecer en tercer lugar. Otro ejemplo de
comando sería nmap -D 10.10.0.1,10.10.0.2,RND,RND,ME 10.10.123.78, donde
las terceras y cuartas direcciones IP de origen se asignan al azar, mientras que
la quinta fuente será la dirección IP del atacante. En otras palabras, cada vez
que ejecutes el último comando, esperarías que dos nuevas direcciones IP
aleatorias sean la tercera y cuarta fuente de señuelo.

FRAGMENTED PACKETS
Nmap ofrece la opción -f para fragmentar paquetes. Una vez seleccionada, los
datos IP se dividirán en fragmentos de 8 bytes o menos. Añadir otro -f (-f -f o -ff)
dividirá los datos en fragmentos de 16 bytes en lugar de 8. Puedes cambiar el
valor predeterminado utilizando --mtu; sin embargo, siempre debes elegir un
múltiplo de 8.
Se puede usar --data-length NUM también para cambiar el tamaño de los datas.

IDLE/ ZOMBIE SCAN


Falsificar la dirección IP de origen puede ser un enfoque efectivo para realizar
un escaneo de manera sigilosa. Sin embargo, la falsificación solo funcionará en
configuraciones de red específicas. Requiere que te encuentres en una posición
donde puedas monitorear el tráfico. Dado estas limitaciones, falsificar tu
dirección IP puede tener poco uso; sin embargo, podemos mejorar esto con el
escaneo ocioso.
El escaneo ocioso, también conocido como escaneo zombie, requiere un
sistema inactivo conectado a la red con el que puedas comunicarte. En la
práctica, Nmap hará que cada sonda parezca provenir del host inactivo (zombie),
luego verificará si hay indicadores de que el host inactivo (zombie) recibió alguna

31
respuesta a la sonda falsificada. Esto se logra al verificar el valor de identificación
de IP (IP ID) en el encabezado IP. Puedes ejecutar un escaneo ocioso utilizando
nmap -sI IP_ZOMBIE 10.10.123.78, donde IP_ZOMBIE es la dirección IP del
host inactivo (zombie).
El escaneo ocioso (zombie) requiere los siguientes tres pasos para descubrir si
un puerto está abierto:

1. Disparar una respuesta del host inactivo para registrar el valor actual del
IP ID en el host inactivo.
2. Enviar un paquete SYN a un puerto TCP en el objetivo. El paquete debe
estar falsificado para parecer que proviene de la dirección IP del host
inactivo (zombie).
3. Disparar nuevamente la respuesta del host inactivo para poder comparar
el nuevo valor del IP ID con el recibido anteriormente.

Permíteme explicarlo con figuras. En la figura a continuación, tenemos al sistema


atacante sondeando a un equipo inactivo, una impresora multifunción. Al enviar
un SYN/ACK, la impresora responde con un paquete RST que contiene su valor
de IP ID incrementado.

32
En el siguiente paso, el atacante enviará un paquete SYN al puerto TCP que
desean verificar en la máquina objetivo. Sin embargo, este paquete utilizará la
dirección IP del host inactivo (zombie) como origen. Surgirán tres escenarios. En
el primer escenario, como se muestra en la figura a continuación, el puerto TCP
está cerrado; por lo tanto, la máquina objetivo responde al host inactivo con un
paquete RST. El host inactivo no responde; por lo tanto, su valor de IP ID no se
incrementa.

33
En el segundo escenario, como se muestra a continuación, el puerto TCP está
abierto, por lo que la máquina objetivo responde con un SYN/ACK al host inactivo
(zombie). El host inactivo responde a este paquete inesperado con un paquete
RST, lo que incrementa su valor de IP ID.

34
En el tercer escenario, la máquina objetivo no responde en absoluto debido a
reglas de firewall. Esta falta de respuesta conducirá al mismo resultado que con
el puerto cerrado; el host inactivo no aumentará el valor del IP ID.
Para el paso final, el atacante envía otro SYN/ACK al host inactivo. El host
inactivo responde con un paquete RST, incrementando nuevamente el valor del
IP ID. El atacante debe comparar el valor del IP ID del paquete RST recibido en
el primer paso con el valor del IP ID del paquete RST recibido en este tercer
paso. Si la diferencia es 1, significa que el puerto en la máquina objetivo estaba
cerrado o filtrado. Sin embargo, si la diferencia es 2, significa que el puerto en el
objetivo estaba abierto.
Vale la pena repetir que este escaneo se llama escaneo ocioso porque elegir un
host inactivo es indispensable para la precisión del escaneo. Si el "host inactivo"
está ocupado, todos los valores de IP ID recibidos serían inútiles.

MORE DETAILS
--reason --> Para ver detalles.
-v --> verbose
-vv --> Más verbose.
-d --> debugging
-dd--> Más debugging.

RESUMEN:
Port Scan Type Example Command
TCP Null Scan sudo nmap -sN 10.10.123.78
TCP FIN Scan sudo nmap -sF 10.10.123.78
TCP Xmas Scan sudo nmap -sX 10.10.123.78
TCP Maimon Scan sudo nmap -sM 10.10.123.78
TCP ACK Scan sudo nmap -sA 10.10.123.78
TCP Window Scan sudo nmap -sW 10.10.123.78
sudo nmap --scanflags URGACKPSHRSTSYNFIN
Custom TCP Scan
10.10.123.78
Spoofed Source IP sudo nmap -S SPOOFED_IP 10.10.123.78
Spoofed MAC Address --spoof-mac SPOOFED_MAC

35
Port Scan Type Example Command
Decoy Scan nmap -D DECOY_IP,ME 10.10.123.78
Idle (Zombie) Scan sudo nmap -sI ZOMBIE_IP 10.10.123.78
Fragment IP data into 8
-f
bytes
Fragment IP data into 16
-ff
bytes
Option Purpose
--source-port PORT_NUM specify source port number
--data-length NUM append random data to reach given length
These scan types rely on setting TCP flags in unexpected ways to prompt ports
for a reply. Null, FIN, and Xmas scan provoke a response from closed ports, while
Maimon, ACK, and Window scans provoke a response from open and closed
ports.
Option Purpose
--reason explains how Nmap made its conclusion
-v verbose
-vv very verbose
-d debugging
-dd more details for debugging

36

También podría gustarte