Vous êtes sur la page 1sur 5

Formas interesantes de usar Nmap

1.- Obtener información de un host remoto y detección del SO:


nmap -sS -P0 -sV -O [dirección]

Donde [dirección] es la IP del servidor/nodo o una subnet.

-sS = escaneo TCP SYN (o escaneo sigiloso)


-P0 = no se envían pings ICMP
-sV = detecta las versiones
-O = se intenta identificar el Sistema Operativo

Otras opciones:

-A = habilita OS fingerprinting y detección de versión


-v = usar dos veces -v para obtener mas detalles

2.- Listar servidores con un puerto especifico abierto:


nmap -sT -p 80 -oG – 192.168.1.* | grep open

Cambiar el argumento -p por el numero del puerto.

3.- Detectar IP’s activas en una red:


nmap -sP 192.168.0.*

Otra opción para subnets es:

nmap -sP 192.168.0.0/24

4.- Hacer ping a un rango de IP’s:


nmap -sP 192.168.1.100-254

Nmap acepta una gran variedad de rangos, notación de direcciones, objetivos múltiples,
etc.
5.- Encontrar IP’s no usadas en una subnet:
nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp

6.- Escanear en busca del virus Conficker:


nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –script-args safe=1 192.168.0.1-
254

Reemplazar 192.168.0.1-254 con las IP’s que se quiere escanear.

7.- Escanear red en busca de AP falsos:


nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –max-rtt-timeout 2000 –
initial-rtt-timeout 300 –max-retries 3 –host-timeout 20m –max-scan-delay 1000 -oA
wapscan 10.0.0.0/8

Funciona incluso en grandes redes.

8.- Crear un señuelo durante el escaneo de puertos para evitar ser


detectado:
sudo nmap -sS 192.168.0.10 -D 192.168.0.2

Escanea los puertos del nodo 192.168.1.10 mientras spoofea la IP 192.168.0.2 como nodo
atacante (esta IP debe estar activa) así parecerá que el escaneo se ejecuta desde la IP
192.168.0.2 (la ip spoofeada). Comprobar los logs en /var/log/secure para comprobar si ha
funcionado correctamente.

9.- Listar los registros DNS inversos de una subred:


nmap -R -sL 209.85.229.99/27 | awk ‘{if($3==”not”)print”(“$2″) no PTR”;else print$3″ is
“$2}’ | grep ‘(‘

Este comando hace un reverse DNS lookup en una subred, se crea una lista con las
direcciones IP de los registros PTR en la subred indicada. Se puede insertar la subred en
notación CDIR (ejemplo: /24 para la Clase C). Puedes agregar “-dns-servers x.x.x.x”
después del parámetro “-sL” si quieres realizar el listado sobre un servidor DNS especifico.

10.- Cuántos nodos con Linux y cuántos con Windows hay en una
red:
sudo nmap -F -O 192.168.0.1-255 | grep “Running: ” > /tmp/os; echo “$(cat /tmp/os |
grep Linux | wc -l) Linux device(s)”; echo “$(cat /tmp/os | grep Windows | wc -l)
Window(s) devices”

11.- Detectar Sniffer en un Red:


nmap --script=sniffer-detect 192.168.8.0/24
Cómo Optimizar el Host Discovery en Nmap
Fyodor publicó el video de su presentación en la última Defcon, y una de las cosas
más interesante es cómo optimizar la etapa de Host Discovery en Nmap.

¿ Porqué Optimizar el Host Discovery ?

Antes de realizar un escaneo de puertos, Nmap intentará descubrir si los hosts


objetivo se encuentran vivos. Por esta razón es que se vuelve fundamental que Nmap
haga el descubrimiento lo mejor posible, ya que de lo contrario estaríamos
escaneando los puertos a muchos menos hosts de los que realmente se encuentran
vivos.

¿ Cómo Funciona el Host Discovery por Default ?

El Host Discovery de Nmap se conoce como "Nmap Ping", y básicamente lo que hace
es enviar al objetivo un ICMP Echo Request (PING) y un paquete ACK al puerto 80.

El Nmap Ping tiene alrededor de 10 años de antigüedad, y era muy efectivo en la


época en la que no había firewalls stateful.

La idea del ICMP Echo Request era recibir un ICMP Echo Reply, un PING, pero en la
actualidad la mayoría de los firewalls tienen filtrado el PING. Mientras que la idea del
ACK al puerto 80 era pasar el control de un firewall no-stateful (stateless), pero como
se pueden imaginar hoy en día la mayoría de los firewalls son stateful.

Un firewall stateless, para permitir una conexión verificara la IP y los puertos de


origen y destino, y si el paquete es un SYN. En el caso de denegar una conexión,
verificara exactamente lo mismo, por lo que si enviamos un ACK, el firewall creerá
que es una conexión ya establecida porque no tiene una tabla de estado para
comprobar lo contrario, y lo dejara pasar.

¿ Cómo Optimizar el Host Discovery ?

Básicamente la idea sería crear nuestro propio "Nmap Ping", optimizándolo con
diferentes técnicas que nos permitan obtener algún tipo de respuesta con la que
podamos identificar a un host vivo.

En principio si queremos descubrir hosts detrás de un firewall stateful deberíamos


utilizar paquetes SYN, ya que si utilizamos paquetes ACK y no hay un registro previo
en la tabla de estado del firewall, el ACK sería descartado.
Esto lo podemos hacer con el switch "-PS". Ejemplo: "-PS80,25,22,443,21"

Por otro lado si queremos descubrir hosts detrás de un firewall stateless nos conviene
utilizar paquetes ACK, ya que al no poseer una tabla de estado el firewall creerá que
el paquete pertenece a una conexión ya establecida y lo dejará pasar.

Esto lo podemos hacer con el switch "-PA". Ejemplo: "-PA80,25,22,443,21"

En ambos casos, la pregunta clave es que puertos utilizar. En esta misma


presentación, Fyodor público un listado de los 10 puertos más utilizados en Internet.

Otra opción podría ser realizar el Discovery mediante puertos UDP, pero en este caso
la idea sería buscar puertos cerrados que nos devuelvan un error ICMP Port
Unreachable, ya que si enviamos un paquete sin contenido a un puerto UDP abierto,
el sistema que lo reciba no sabrá qué hacer con él y simplemente lo descartará.

Entonces la recomendación seria elegir un puerto UDP alto que probablemente no


esté en uso. Fyodor también recomienda sumar el puerto 53 (DNS), ya que muchos
administradores suelen permitir este puerto en todo su rango de redes.

Esto lo podemos hacer con el switch "-PU". Ejemplo: "-PU33221,53"

Como vimos al comienzo, el clásico "Nmap Ping" utiliza un ICMP Echo Request que
suele estar filtrado en los firewalls, por lo que es recomendable sumar al Echo
Request otro tipo diferente de paquete ICMP, como por ejemplo Timestamp Request
o Netmask Request.

Esto lo podemos hacer con los switchs "-PE" (Echo Req), "-PP" (Timestamp Req) o
"-PM" (Netmask Req).

Otra opción también puede ser realizar un Protocol Ping. La idea aquí es enviar
paquetes que utilicen diferentes protocolos, por default Nmap enviara 3 pruebas, un
paquete ICMP (1), IGMP (2) y IP-in-IP (4), si estos protocolos no son soportados por
el sistema operativo deberíamos recibir un error ICMP Protocol Unreachable, que nos
permitirá conocer que el host esta vivo.

Esto lo podemos hacer con el switch "-PO".


En Conclusión
Si juntamos todo, lo que más recomendable que deberíamos utilizar seria algo como
esto:
“nmap -sP -PE -PP -PS21,22,23,25,80,113,31339 -PA80,113,443,10042 --
source-port 53 -T4 IP_DE_Victima”
Aquí estamos realizando un Nmap Ping pero con paquetes ICMP Echo Request y
Timestamp Request, también enviamos paquetes SYN y ACK a diferentes puertos del
Top 10, y como recomendación de Fyodor también configuramos que todas las
pruebas sean enviadas desde el puerto de origen 53 (DNS), esto con el switch "--
source-port 53", ya que muchos firewalls pueden permitir conexiones desde este
puerto.

WINDOWS
TCP: 135,139,445,1025-1030,3389
UDP: 137,138,445,1025-1030

UNIX/LINUX
TCP: 21,22,23,25,80,111
UDP: 53,67-69,111,161,514

“nmap –n –sP –PSlista_puertos_tcp –PUlista_puertos_udp –PE –PP –PM


IP/CIDR”