Nmap

Nmap

Servicios de nmap

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

Haciendo uso de uno de los scripts del repositorio hackingpotions.

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

ModoDescripció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 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

Ejemplos de escáneres

nmap -sP 192.168.0.0/24 # Escáner Ping
nmap -T4 -F 192.168.1.100 -vvv # Escáner rápido
nmap -sV -T4 -O -F –version-light 192.168.1.100 -vvv # Escáner rápido más agresivo y que obtiene más información
nmap -sS -sU -PN -p T:80,T:445,U:161 192.168.1.100 # Escáner TCP Syn y UDP
nmap -v -Pn -n -T4 -sT -sV --version-intensity=5 --reason 192.168.1.100
nmap -v -Pn -n -T4 -sT -p- --reason 192.168.1.100 # Escáner completo
nmap -v -Pn -T4 -A -p- --script=default,vuln -oA full-tcp 192.168.1.100 # Full TCP + scrips + output (mi fav)
nmap -v -T4 -sU -A -p- --script=default,vuln -oA full-udp 192.168.1.100 # Full UDP + scrips + output (mi fav)
sudo nmap -sn 10.11.1.1-254
sudo nmap -v -sn 10.11.1.1-254 -oG ping-sweep.txt
sudo nmap 10.11.0.128 -p- -sV -vv --open --reason
sudo nmap -O 10.11.1.220
sudo nmap -sT -A --top-ports=20 10.11.1.1-254 -oG top-port-sweep.txt
sudo nmap -sV -sT -A 10.11.1.220

Escáneres específicos en servicios

TCP

ServicioPuertoEscáner

SMB

445

[[445 - SMB#Escáner]]

21, 20 - FTP

  • 21. Puerto común de acceso (puerto de control)

  • 20. Puerto para transferencia de datos.

Escáner general

sudo nmap -v -p21 --script=default,vuln -oA ftp-scan 192.168.1.0/24

Inicio de sesión como anonymous Comprobar si el servidor FTP permite iniciar sesión como anonymous.

nmap -sV --script ftp-anon -p 21 <ip>

Fuerza bruta

nmap -sV --script ftp-brute -p 21 <ip>

Bounce

nmap -sV --script ftp-bounce -p 21 <ip>

22 - SSH

Escáner general

sudo nmap -v -p22 --script=default,vuln -oA ssh-scan 192.168.1.0/24

Métodos de autenticación

nmap -p 22 -n -v -sV -Pn --script ssh-auth-methods --script-args ssh.user=root 192.168.1.100

SSH hostkeys

nmap -p 22 -n -v -sV -Pn --script ssh-hostkey 192.168.1.100
nmap --script ssh-hostkey -p 22 -n --script-args ssh_hostkey=full <ip>

Fuerza bruta Ver: [[Fuerza bruta a servicios#Nmap]]

Algoritmos utilizados

nmap --script ssh2-enum-algos -p 22 -n <ip>

Protocolo SSH v1

nmap --script sshv1 -p 22 -n <ip>

23 - TELNET

Escáner general

sudo nmap -v -p23 --script=default,vuln -oA telnet-scan 192.168.1.0/24

110 - POP3

Escáner general

sudo nmap -v -p110 --script=default,vuln -oA pop3-scan 192.168.1.0/24

Otros escáneres

nmap -v -sV --version-intensity=5 --script pop3-capabilities -p 110 <IP> # S (CAPA, TOP, USER, SASL, RESP-CODES, LOGIN-DELAY, PIPELINING, EXPIRE, UIDL, IMPLEMENTATION)
nmap --script pop3-brute --script-args pop3loginmethod=SASL-LOGIN -p 110 <IP> # POP3 Accounts bruteforce
nmap --script pop3-brute --script-args pop3loginmethod=SASL-CRAM-MD5 -p 110 <IP>
nmap --script pop3-brute --script-args pop3loginmethod=APOP -p 110 <IP>

111 - NFS

Escáner general

sudo nmap -v -p111 --script=default,vuln -oA pop3-scan 192.168.1.0/24

Otros escáneres

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.

119 - NTP

135 - RPC

137, 138, 139 - NETBIOS

143 - IMAP

Escáner general

sudo nmap -v -p143 --script=default,vuln -oA pop3-scan 192.168.1.0/24

Otros escáneres

sudo nmap -v -sV --version-intensity=5 --script=imap-capabilities

445 - SMB

Escáner general

sudo nmap -v -p445 --script=default,vuln -oA smb-scan 192.168.1.0/24

636, 389 - LDAP

Escáner general

sudo nmap -v -p636,389 --script=default,vuln -oA ldap-scan 192.168.1.0/24

Otros escáneres

sudo nmap -v -p636,389 -sV --script=ldap-search  -oA ldap-search-scan <TARGET>

UDP

sudo nmap -sU 10.11.1.115
sudo nmap -sS -sU 10.11.1.115

53 - DNS

Escáner general

sudo nmap -v -sU -p53 --script=default,vuln -oA dns-scan 192.168.1.0/24

Transferencia de zona

nmap --script=dns-zone-transfer -p 53 ns2.xtormin.com

Fuerza bruta Ver: [[53 - DNS#Nmap]]

161, 162, 10161, 10162 - SNMP

Escáner general

sudo nmap -v -sU -p161,162,10161,10162 --script=default,vuln -oA snmp-scan 192.168.1.0/24

Automatización de escáneres

Script en powershell

Para la automatización de escáneres de redes internas o externas desde sistemas windows, 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.

.\network_scan_logger.ps1 -HostFile .\hosts.txt -ScanType tcp-1000

Script en bash

bash network_scan_logger.sh hosts.txt tcp-1000

Referencias

Última actualización