Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos 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.
nmap -p- --open -T5 -v -n [Ip]
-p-
: Escanea todo el rango de puertos.
--open
: Solo nos mostrará puertos con el estatus abierto.
-T5
: Controla el tiempo y el rendimiento del escaneo donde 1 es el más lento y 5 el más rápido.
-v
: Verbose. Recopila los puertos abiertos por TCP y los reporta por consola.
-n
: Anula la resolución DNS.
nmap -p- --open -T5 -v -n [Ip] -oG allPorts
-oG
: Exportar los resultados en formato grepeable.
allPorts
: Nombre del archivo. Si no existe lo creará.
De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento.
nmap -sC -sV -n -v -p[Port1,Port2] [Ip Víctima] -oN targed
-sC
: Lanza scripts básicos de reconocimiento.
-sV
: Localiza la versión y servicio de los puertos definidos.
-p
: Puertos a escanear. Ej: -p22,80
-oN
: Reporta los resultados en formato nmap al archivo targed
.
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn [Ip Vícitma] -oG allPorts
-p-
: Escanea todo el rango de puertos.
--open
: Solo nos mostrará puertos con el estatus abierto.
-sS
: El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos.
-oG
: Exportar los resultados en formato grepeable.
--min-rate
: Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más.
-vvv
: Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneo.
-n
: Anula la resolución DNS.
-Pn
: Omite el descubrimiento de Hosts.
Nmap contiene un gran número de scripts de reconocimiento, para verlos podemos filtrar las categorías por la extensión .nse
.
locate .nse
Para ver el tipo de categoría de cada script de Nmap, podemos concatenar un xargs
:
locate .nse | xargs grep "categories"
La sintaxis es muy simple, solo debemos añadir la opción --script
delante del script que queramos utilizar:
nmap --script [Nombre del Script]
El script http-enum
de Nmap actual como un fuzzer, aplicando un pequeño diccionario interno tratando de buscar directorios o archivos de interés.
nmap --script http-enum [Ip Víctima]
También podemos especificar puertos y guardar los resultados en un archivo (en este caso enumScan
).
nmap --script http-enum -p [Puerto/s] [Ip Víctima] -oG enumScan
--script
: Especifica que vamos a utilizar un Script.
-p
: Especifica los puertos que vamos a escanear.
-oG
: Exportar los resultados en formato grepeable.
enumScan
: Nombre del archivo donde se guardan los resultados.
Con Nmap también podemos especificar por categorías qué tipo de scripts queremos lanzar, recordar que podemos ver los distintos scripts utilizando el comando
locate .nse | xargs grep "categories"
. La sintaxis básica del comando es la siguiente:
nmap --script "[Categorias]" [Ip Víctima]
Ejemplo:
nmap --script "vuln and safe" 10.10.10.10
nmap --script "vuln and safe" -p22,80,445 10.10.10.10
En este ejemplo vemos como estamos lanzando los scripts de las categorías vuln
y safe
a la dirección Ip Víctima por los puertos 22, 80 y 445.
Para ver solo las categorías que existen independientemente de los scripts podemos verlas utilizando los siguientes comandos de filtrado:
Como vemos en la imagen, se nos reporta por consola todas las categorías existentes que podemos emplear.
En múltiples ocasiones, una vez realizada la intrusión en el sistema, veremos como algunos de los equipos o sistemas tienen nmap
instalado. En caso de que los
privilegios sean los adecuados, se pueden usar para ganar acceso como root.
Para esto, en primer lugar, debe de tratarse de una versión de nmap que contenga el parámetro --interactive
. Ahora, mediante el comando sudo -l
podemos ver los
permisos que tenemos como sudo:
sudo -l
Debemos de fijarnos que tengamos permisos sudo sobre nmap
. En tal caso, utilizaremos el siguiente comando para establecer una shell interna:
sudo nmap --interactive
Una vez establecida la shell de nmap, usaremos la expresión !sh
para acceder como root
.
!sh
Directamente, pasaremos a estar registrados como el usuario root
del sistema.
10.10.10.0/24
Rango de red de destino. -sn
: Deshabilita el análisis de puertos.-Pn
Deshabilita las solicitudes de echo ICMP.-n
Deshabilita la resolución DNS.-PE
Realiza el análisis de ping mediante solicitudes de eco ICMP contra el destino.--packet-trace
Muestra todos los paquetes enviados y recibidos.--reason
Muestra el motivo de un resultado específico.--disable-arp-ping
Deshabilita las solicitudes de ping ARP.--top-ports=<num>
Analiza los puertos superiores especificados que se han definido como más frecuentes.-p-
Escanea todos los puertos.-p22-110
Escanea todos los puertos entre 22 y 110.-p22,25
Analiza solo los puertos especificados 22 y 25.-F
Escanea los 100 puertos principales.-sS
Realiza un TCP SYN-Scan.-sA
Realiza un TCP ACK-Scan.-sU
Realiza un UDP Scan.-sV
Analiza los servicios descubiertos en busca de sus versiones.-sC
Realiza un análisis de secuencias de comandos con secuencias de comandos que se clasifican como "predeterminadas".--script <script>
Realiza un análisis de secuencias de comandos mediante los scripts especificados.-O
Realiza un análisis de detección del sistema operativo para determinar el sistema operativo del destino.-A
Realiza análisis de detección del sistema operativo, detección de servicios y traceroute.-D RND:5
Establece el número de señuelos aleatorios que se utilizarán para escanear el objetivo.-e
Especifica la interfaz de red que se utiliza para el análisis.-S 10.10.10.200
Especifica la dirección IP de origen para el análisis.-g
Especifica el puerto de origen para el análisis.--dns-server <ns>
La resolución dns se realiza mediante un servidor de nombres especificado.-oA filename
Almacena los resultados en todos los formatos disponibles comenzando con el nombre de "filename".-oN filename
Almacena los resultados en formato normal con el nombre "filename".-oG filename
Almacena los resultados en formato "grepable" con el nombre de "filename".-oX filename
Almacena los resultados en formato XML con el nombre de "filename".--max-retries <num>
Establece el número de reintentos para los análisis de puertos específicos.--stats-every=5s
Muestra el estado del escaneo cada 5 segundos.-v/-vv
Muestra una salida detallada durante el análisis.--initial-rtt-timeout 50ms
Establece el valor de tiempo especificado como tiempo de espera RTT inicial.--max-rtt-timeout 100ms
Establece el valor de tiempo especificado como tiempo de espera RTT máximo.--min-rate 300
Establece el número de paquetes que se enviarán simultáneamente.-T <0-5>
Especifica la plantilla de temporización específica. Siendo 0 el más lento y 5 el más rápido.