Nmap
tools
Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos escrito originalmente por Gordon Lyon (más conocido por su alias Fyodor Vaskovich1) y cuyo desarrollo se encuentra hoy a cargo de una comunidad. Fue creado originalmente para Linux aunque actualmente es multiplataforma. Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática, para ello Nmap envía unos paquetes definidos a otros equipos y analiza sus respuestas.
Este software posee varias funciones para sondear redes de computadores, incluyendo detección de equipos, servicios y sistemas operativos. Estas funciones son extensibles mediante el uso de scripts para proveer servicios de detección avanzados, detección de vulnerabilidades y otras aplicaciones. Además, durante un escaneo, es capaz de adaptarse a las condiciones de la red incluyendo latencia y congestión de la misma.
Características
[editar]
Descubrimiento de servidores: Identifica computadoras en una red, por ejemplo listando aquellas que responden ping.2
Identifica puertos abiertos en una computadora objetivo.
Determina qué servicios está ejecutando la misma.
Determina qué sistema operativo y versión utiliza dicha computadora, (esta técnica es también conocida como fingerprinting).
Obtiene algunas características del hardware de red de la máquina objeto de la prueba.
Aplicaciones típicas
[editar]
Ha llegado a ser una de las herramientas imprescindibles para todo administrador de sistema, y es usado para pruebas de penetración y tareas de seguridad informática en general.3
Como muchas herramientas usadas en el campo de la seguridad informática, es también una herramienta muy utilizada para hacking.
Los administradores de sistema pueden utilizarlo para verificar la presencia de posibles aplicaciones no autorizadas ejecutándose en el servidor, así como los crackers pueden usarlo para descubrir objetivos potenciales.
Nmap permite hacer el inventario y el mantenimiento del inventario de computadores de una red. Se puede usar entonces para auditar la seguridad de una red, mediante la identificación de todo nuevo servidor que se conecte:4
Nmap es a menudo confundido con herramientas para verificación de vulnerabilidades como Nessus. Nmap es difícilmente detectable, ha sido creado para evadir los Sistema de detección de intrusos (IDS) e interfiere lo menos posible con las operaciones normales de las redes y de las computadoras que son analizadas.
Ejemplos Básicos de Nmap
Escaneo Básico de Puertos
nmap 192.168.1.1
Escaneo de Puertos Específicos
nmap -p 22,80,443 192.168.1.1
Escaneo de Rango de Puertos
nmap -p 1-1000 192.168.1.1
Escaneo de Puertos Abiertos
nmap --open 192.168.1.1
Escaneo de Todos los Puertos
shCopy codenmap -p- 192.168.1.1
Escaneo de Múltiples Hosts
nmap 192.168.1.1 192.168.1.2 192.168.1.3
Escaneo de Rango de IPs
nmap 192.168.1.1-254
Escaneo de Subred
nmap 192.168.1.0/24
Escaneo de Hosts Activos
nmap -sn 192.168.1.0/24
Detectar Sistema Operativo
nmap -O 192.168.1.1
Ejemplos Avanzados de Nmap
Escaneo de Versiones de Servicios
nmap -sV 192.168.1.1
Escaneo de Scripts de NSE por Categoría (Vulnerabilidad)
nmap --script=vuln 192.168.1.1
Detección de Scripts Específicos de NSE (HTTP Enum)
nmap --script=http-enum 192.168.1.1
Escaneo de Red Interna
nmap -sP 192.168.1.0/24
Escaneo de Ping
nmap -sn 192.168.1.1
Escaneo de TCP SYN
nmap -sS 192.168.1.1
Escaneo de TCP Connect
nmap -sT 192.168.1.1
Escaneo UDP
nmap -sU 192.168.1.1
Escaneo de Puertos Completos
nmap -sV -sS -sU 192.168.1.1
Escaneo Sigiloso
nmap -sS -T2 192.168.1.1
Ejemplos de Nmap Scripting Engine (NSE)
Detección de Servicios de HTTP
nmap --script=http-title 192.168.1.1
Escaneo de FTP Anonymous
nmap --script=ftp-anon 192.168.1.1
Escaneo de Vulnerabilidades SMB
nmap --script=smb-vuln* 192.168.1.1
Detección de DNS
nmap --script=dns-brute 192.168.1.1
Detección de Correo Electrónico
nmap --script=smtp-enum-users 192.168.1.1
Enumeración de MySQL
nmap --script=mysql-enum 192.168.1.1
Detección de NFS
nmap --script=nfs-ls 192.168.1.1
Escaneo de Telnet
nmap --script=telnet-enum 192.168.1.1
Detección de SSL
nmap --script=ssl-cert 192.168.1.1
Escaneo de Vulnerabilidades HTTP
nmap --script=http-vuln* 192.168.1.1
Ejemplo de Integración con Otra Herramienta: Nmap y Metasploit
Importar Resultados de Nmap en Metasploit
Nmap se puede integrar con Metasploit para facilitar la explotación de vulnerabilidades encontradas durante los escaneos.
Paso 1: Ejecutar un Escaneo de Nmap y Guardar los Resultados
nmap -oX scan_results.xml 192.168.1.0/24
Paso 2: Importar los Resultados en Metasploit
Abre Metasploit y ejecuta:
db_import scan_results.xml
Ahora, los resultados del escaneo de Nmap estarán disponibles en Metasploit, listos para ser utilizados en el proceso de penetración.
############################################################
################# Parametros ###############################
############################################################
Nmap 7.93SVN ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>: Input from list of hosts/networks
-iR <num hosts>: Choose random targets
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks
--excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
-sL: List Scan - simply list targets to scan
-sn: Ping Scan - disable port scan
-Pn: Treat all hosts as online -- skip host discovery
-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-PO[protocol list]: IP Protocol Ping
-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
--dns-servers <serv1[,serv2],...>: Specify custom DNS servers
--system-dns: Use OS's DNS resolver
--traceroute: Trace hop path to each host
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sU: UDP Scan
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags <flags>: Customize TCP scan flags
-sI <zombie host[:probeport]>: Idle scan
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
-sO: IP protocol scan
-b <FTP relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
-p <port ranges>: Only scan specified ports
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>: Exclude the specified ports from scanning
-F: Fast mode - Scan fewer ports than the default scan
-r: Scan ports sequentially - don't randomize
--top-ports <number>: Scan <number> most common ports
--port-ratio <ratio>: Scan ports more common than <ratio>
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
--version-intensity <level>: Set from 0 (light) to 9 (try all probes)
--version-light: Limit to most likely probes (intensity 2)
--version-all: Try every single probe (intensity 9)
--version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN:
-sC: equivalent to --script=default
--script=<Lua scripts>: <Lua scripts> is a comma separated list of
directories, script-files or script-categories
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
--script-args-file=filename: provide NSE script args in a file
--script-trace: Show all data sent and received
--script-updatedb: Update the script database.
--script-help=<Lua scripts>: Show help about scripts.
<Lua scripts> is a comma-separated list of script-files or
script-categories.
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
Options which take <time> are in seconds, or append 'ms' (milliseconds),
's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
--min-parallelism/max-parallelism <numprobes>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissions.
--host-timeout <time>: Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
--min-rate <number>: Send packets no slower than <number> per second
--max-rate <number>: Send packets no faster than <number> per second
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu <val>: fragment packets (optionally w/given MTU)
-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
-S <IP_Address>: Spoof source address
-e <iface>: Use specified interface
-g/--source-port <portnum>: Use given port number
--proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies
--data <hex string>: Append a custom payload to sent packets
--data-string <string>: Append a custom ASCII string to sent packets
--data-length <num>: Append random data to sent packets
--ip-options <options>: Send packets with specified ip options
--ttl <val>: Set IP time-to-live field
--spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
--badsum: Send packets with a bogus TCP/UDP/SCTP checksum
OUTPUT:
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
and Grepable format, respectively, to the given filename.
-oA <basename>: Output in the three major formats at once
-v: Increase verbosity level (use -vv or more for greater effect)
-d: Increase debugging level (use -dd or more for greater effect)
--reason: Display the reason a port is in a particular state
--open: Only show open (or possibly open) ports
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output files
--resume <filename>: Resume an aborted scan
--noninteractive: Disable runtime interactions via keyboard
--stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
--webxml: Reference stylesheet from Nmap.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC:
-6: Enable IPv6 scanning
-A: Enable OS detection, version detection, script scanning, and traceroute
--datadir <dirname>: Specify custom Nmap data file location
--send-eth/--send-ip: Send using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
--unprivileged: Assume the user lacks raw socket privileges
-V: Print version number
-h: Print this help summary page.
EXAMPLES:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
# Escaneo Recomendado
nmap -sS --min-rate 5000 --open -vvv -p- -n -Pn (IP) -oN scan.txt # reconocimiento al dispositivo
^
nmap -sU # para buscar puertos por UDP
# recomendado si por TCP no hay exito
nmap -sCV -p(open ports), (open ports) -oN open # reconocimiento a los puertos abiertos encontrados
diferentes modos de escaneo
--top-ports 500 # los 500 puertos mas comunes
-sT # escaneo en base al three way handshake
-O # reconocer el sistema operativo
bypass del firewall e IDS
Vamos a ver algunas tecmicas para bypass de firewall
MTU (–mtu): La técnica de evasión de MTU o “Maximum Transmission Unit” implica ajustar el tamaño de los paquetes que se envían para evitar la detección por parte del Firewall. Nmap permite configurar manualmente el tamaño máximo de los paquetes para garantizar que sean lo suficientemente pequeños para pasar por el Firewall sin ser detectados.
Data Length (–data-length): Esta técnica se basa en ajustar la longitud de los datos enviados para que sean lo suficientemente cortos como para pasar por el Firewall sin ser detectados. Nmap permite a los usuarios configurar manualmente la longitud de los datos enviados para que sean lo suficientemente pequeños para evadir la detección del Firewall.
Source Port (–source-port): Esta técnica consiste en configurar manualmente el número de puerto de origen de los paquetes enviados para evitar la detección por parte del Firewall. Nmap permite a los usuarios especificar manualmente un puerto de origen aleatorio o un puerto específico para evadir la detección del Firewall.
Decoy (-D): Esta técnica de evasión en Nmap permite al usuario enviar paquetes falsos a la red para confundir a los sistemas de detección de intrusos y evitar la detección del Firewall. El comando -D permite al usuario enviar paquetes falsos junto con los paquetes reales de escaneo para ocultar su actividad.
Fragmented (-f): Esta técnica se basa en fragmentar los paquetes enviados para que el Firewall no pueda reconocer el tráfico como un escaneo. La opción -f en Nmap permite fragmentar los paquetes y enviarlos por separado para evitar la detección del Firewall.
Spoof-Mac (–spoof-mac): Esta técnica de evasión se basa en cambiar la dirección MAC del paquete para evitar la detección del Firewall. Nmap permite al usuario configurar manualmente la dirección MAC para evitar ser detectado por el Firewall.
Stealth Scan (-sS): Esta técnica es una de las más utilizadas para realizar escaneos sigilosos y evitar la detección del Firewall. El comando -sS permite a los usuarios realizar un escaneo de tipo SYN sin establecer una conexión completa, lo que permite evitar la detección del Firewall.
min-rate (–min-rate): Esta técnica permite al usuario controlar la velocidad de los paquetes enviados para evitar la detección del Firewall. El comando –min-rate permite al usuario reducir la velocidad de los paquetes enviados para evitar ser detectado por el Firewall.
## ejemplos de ellos ##
nmap -p22 1.1.1.1 -f
nmap -p22 1.1.1.1 -D
Nmap nos permite crear scripts custom para nuestros escaneos o incluso utilizar los que ya estan predefinidos, dejo una lista de categorias de scripts de nmap :
default
discovery
safe
intrusive
vuln
auth
broadcast
brute
dos
exploit
external
fuzzer
malware
version
vuln
Ejemplos de uso :
--script="vuln and sfae" # solo scripts de vuln y de safe
--script http-enum # con un nombre de script especifico
si creamos nuestro propio script podemos utilizarlo asi :
nmap --script /home/user/scripts/mi_script.nse
estos estan programados en Lua, por si quieres crear uno.

some references : wikipedia.org
Last updated