La lista de servicios de nmap se encuentra en: /usr/share/nmap/nmap-services
Top 1000 de servicios:
TCP: nmap -sT --top-ports 1000 -v -oG -
UDP: nmap -sU --top-ports 1000 -v -oG -
Puertos ordenados por frecuencia: sort -r -k3 /usr/share/nmap/nmap-services
Información de scripts
nmap --script-help <script nse> # Información de scripts
ls -1 /usr/share/nmap/scripts/smb* # Scripts de smb
Comandos básicos
Obtención de todos los puertos del sistema, filtrado de los puertos obtenidos, y lanzar scripts únicamente contra los puertos encontrados. Hacer esto aumenta la velocidad de la obtención de resultados. Realizar el escáner tanto por TCP como por UDP (empezar por TCP, para no morir esperando los resultados por UDP).
cd ~/xtormin/$red/$ip/nmap
nmap -v -p- -oA quick-full-tcp -iL ../ip.txt # Obtener sólo todos los puertos abiertos
nmap -v -Pn -p- -oA quick-full-tcp -iL ../ip.txt # Si parece no responder, este hace lo mismo, pero usando la opción `-Pn`, que permite realizar el escáner sin usar peticiones ICMP
nmap -v -p $(bash ~/xtormin/tools/hackingpotions/gnmap-open-ports.sh quick-full-tcp.gnmap) -T4 -A --script=default,vuln -oA scripts-full-tcp -iL ../ip.txt
nmap -v -Pn -p $(bash ~/xtormin/tools/hackingpotions/gnmap-open-ports.sh quick-full-tcp.gnmap) -T4 -A --script=default,vuln -oA scripts-full-tcp -iL ../ip.txt # Versión sin ICMP
Repetir lo mismo vía UDP.
Escáneres
Tipos de escáneres
nmap -sS 192.168.1.100 # Por defecto sin root, no completa la comunicación TCP, es más rápido que '-sT'
nmap -sT 192.168.1.100 # Por defecto con root, completa la comunicación TCP, por lo que, es más lento
nmap -sU 192.168.1.100 # Escáner UDP
Formas de establecer los hosts
nmap 192.168.1.100
nmap 192.168.1.100-150
nmap 192.168.1.0/24
nmap xtormin.com
nmap 192.168.1.0/24 --exclude 192.168.1.100
nmap -iL ips.txt # Lista de IPs objetivo
Descubrimiento de puertos
nmap -sL 192.168.1.100 # Lista los hosts y obtiene el hostname
nmap -sn 192.168.1.100 # Sólo descubre puertos, no escanea
nmap -Pn 192.168.1.100 # Deshabilita el descubrimiento, sólo escanea, es útil cuando el firewall no permite las peticiones ICMP (ping)
nmap 192.168.1.100 -n # Deshabilita la resolución DNS
Gestión del tiempo
nmap 192.168.1.100 -F # Escáner rápido
nmap 192.168.1.100 -O --osscan-limit # Deshabilita la detección del sistema operativo si se encuentra al menos un puerto abierto
nmap 192.168.1.100 --host-timeout 10s
nmap 192.168.1.100 --scan-delay 2s
nmap 192.168.1.100 --max-scan-delay 5s
nmap 192.168.1.100 --max-retries 3
nmap 192.168.1.100 --min-rate 100 # Mínimo de paquetes por segundo
nmap 192.168.1.100 --max-rate 110 # Máximo de paquetes por segundo
Velocidad del escáner
Modo
Descripción
T0-T1
Lento, pero útil ante IDS (Intrusion Detection Systems)
T2-T3
Normal
T4-5
Agresivo, adecuado para redes que soporten bastante tráfico, o CTFs
Evasión de IDS
nmap 192.168.1.100 -f # Fragmentar los paquetes
nmap 192.168.1.100 -mtu 30 # Determinar el tamaño del offset
nmap 192.168.1.100 -D 192.168.1.101 # Escaner desde IP falsa
nmap -S domainone.com domaintwo.com # Realizar un escaner a un dominio (domaintwo.com) desde otro (domainone.com)
nmap 192.168.1.100 -g 53 # Usar un puerto origen específico
nmap 192.168.1.100 --proxies http://X.X.X.X:8080 # Utilizar un proxy
nmap 192.168.1.100 --data-length 150 # Enviar paquetes con datos aleatorios
Resultados del escáner
nmap 192.168.1.100 -oX scan.xml # Salida xml
nmap 192.168.1.100 -oA scan # Todas las salidas (normal (oN), xml (oX), grep (oG))
Convertir de XML a HTML
xsltproc scan.xml -o scan.html
Automatizar la conversión de múltiples XML
El siguiente comando en bash convierte todos los ficheros XML de la carpeta nmap en HTML (manteniendo el XML original):
for xml_file in $(ls nmap/*.xml); do xsltproc $xml_file -o $(echo $xml_file | sed 's/xml/html/'); done
nmap -v -p 111 10.11.1.1-254 # Enumerar todas las máquinas con el puerto 111 abierto.
nmap -sV -p 111 --script=rpcinfo 10.11.1.1-254 # Enumerar información vía RPC.
ls -1 /usr/share/nmap/scripts/nfs* # Mostrar scripts para el servicio NFS.
nmap -p 111 --script nfs* <ip> # Lanzar escáner con todos los scripts contra una máquina con NFS.
Para la automatización de escáneres de redes internas o externas, es posible hacer uso de un script que realiza lo siguiente:
Escáner de una lista de IP's.
Crea una estructura jerárquica de carpetas.
Almacena la salida en todos los formatos de fichero posibles en nmap.
Crea un fichero de logs donde se indica el inicio y fin del escáner (muy útil para identificar el último host escaneado, por si la red o servidor deja de funcionar)
Cuenta con escáneres pre-configurados comunes.
Si se quiere continuar el escáner desde el último hosts escaneado, tan solo hay que editar el fichero hosts.txt con la lista de hosts objetivos y eliminar los hosts que hayan sido escaneados o no se deseen volver a escanear.