nmap

Desde hace muchos años Nmap es la herramienta por excelencia para diversos menesteres. Es una herramienta que podemos usar en una fase de fingerprinting o de auditoría y exploiting.

 

Si queremos tener la ultima versión de la herramienta solo debemos bajarla de su repositorio oficial:

svn co https://svn.nmap.org/nmap
cd nmap
./configure
make
make install

Vamos a ver algunos ejemplos de uso de la herramienta, la sintaxis es muy sencilla de usar.

Escaneando un puerto con Nmap

darkmac:~ marc$ nmap -p 80 www.dragonjar.org

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-12 22:33 CEST
Nmap scan report for www.dragonjar.org (108.162.207.118)
Host is up (0.076s latency).
Other addresses for www.dragonjar.org (not scanned): 141.101.124.118
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds
darkmac:~ marc$

Como véis sale el puerto 80 abierto. La sintaxis es muy sencilla, ¿Y si necesitamos escanear dos puertos?

darkmac:~ marc$ nmap -p 80,443 www.dragonjar.org

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-12 23:16 CEST
Nmap scan report for www.dragonjar.org (141.101.124.118)
Host is up (0.077s latency).
Other addresses for www.dragonjar.org (not scanned): 108.162.207.118
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds

Es muy sencillo ¿No? Pero que pasaría si necesitamos escanear de un rango a otro?

Como véis el hacer el escaneo de puertos con nmap es muy trivial.

darkmac:~ marc$ nmap -p 80-85 www.securitybydefault.com

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-12 23:15 CEST
Nmap scan report for www.securitybydefault.com (74.125.132.121)
Host is up (0.092s latency).
rDNS record for 74.125.132.121: wb-in-f121.1e100.net
PORT   STATE    SERVICE
80/tcp open     http
81/tcp filtered hosts2-ns
82/tcp filtered xfer
83/tcp filtered mit-ml-dev
84/tcp filtered ctf
85/tcp filtered mit-ml-dev

Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds

Nmap por defecto nos permite hacer sacar los servicios, además lleva opciones para escanear una serie de puertos determinados.

darkmac:~ marc$ sudo nmap www.securiza.me

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-12 23:07 CEST
Nmap scan report for www.securiza.me (88.12.11.36)
Host is up (0.13s latency).
rDNS record for 88.12.11.36: 36.Red-88-12-11.staticIP.rima-tde.net
Not shown: 987 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
25/tcp   open   smtp
80/tcp   open   http
110/tcp  open   pop3
443/tcp  open   https
993/tcp  open   imaps
2601/tcp open   zebra
2602/tcp open   ripd
4242/tcp closed vrml-multi-use
4662/tcp open   edonkey
5222/tcp open   xmpp-client
6881/tcp open   bittorrent-tracker
8088/tcp open   radan-http

Nmap done: 1 IP address (1 host up) scanned in 14.96 seconds

Las opciones en nmap son muy variables y pueden ser combinadas, aqui veremos un pequeño listado de ellas:

  • Escaneo por defecto : “nmap direccionip”
  • Escaneo utilizando ping : “nmap -sP direccionip”
  • Escaneo ignorando el ping : “nmap -Pn direccionip”
  • Modo silencioso : “nmap -sS direccionip”
  • Descubrir servicios y versiones : “nmap -sV direccionip”
  • Detectar el Sistema operativo : “nmap -O direccionip”
  • Detectar el SO Forzado : “nmap -O –osscan-guess direccionip”
  • Escanear solo puerto X : “nmap -pX direccionip”
  • Escanear varios puertos X : “nmap -pX,Y,Z direccionip”
  • Escanear los 100 (f) 1000 (F) puertos más comunes : “nmap -F direccionip”
  • Escanear todos los puertos “*” : “nmap -p* direccionip” //tambien sirve “-p-”
  • Escanear Rango de puertos : “nmap -p[1-65535] ip”
  • Definir protocolo de escaneo : “nmap -pT:80,U:53 direccionip”
  • Buscar puerto 80 abierto : “nmap -sT -p 80 -oG – 192.168.1.1/24”
  • Escanear IP-A haciéndose pasar por IP-B : “nmap -sS direccionipA -D direccionipB”

Desde que NMap integrara un motor de scripting a su funcionamiento, las características y funcionalidades de la herramienta han crecido en gran medida, dejando de ser solo un escáner de puertos y pasar a ser un completo escáner de vulnerabilidades, un detector de incidencias, una herramienta de ataque y un escáner de aplicaciones web entre otras muchas funciones.

Los scripts en nmap son simples de desarrollar, utilizan lenguaje lúa y podemos tomar cualquier parámetro o componente de salida de nmap como parte del mismo, por tanto su flexibilidad esta garantizada.

Los scripts oficiales integrados con nmap se encuentran por lo general en la carpeta /usr/local/share/nmap/scripts y para llamar cualquiera de ellos solo debemos ejecutar

nmap --script=nombredescript

Algunos de los scripts oficiales mas utilizados son los siguientes

  • Script para mostrar el titulo de una web : “nmap –script=http-title direccionip”
  • Mostrar titulo y cabeceras de un sitio web : “nmap –script=http-title,http-headers ip”
  • Enumerando directorios : “ nmap –script http-enum direccionip”
  • Haciendo Whois con Nmap : “ nmap –script whois direccionip”
  • Geo localización de IPS desde nmap : “ nmap –script ip-geolocation-* direccionip”
  • Detectar si un sitio web tiene un WAF : nmap -p80 –script=http-waf-fingerprint,http-waf-detect –script-args=”http-waf-detect.detectBodyChanges” direccionip

Ya que los scripts han crecido rápidamente ha sido necesario agruparlos en categorías, actualmente tenemos las siguientes:

Cada una de ellas agrupan una serie de scripts que cumplen funciones de enumeración ataques de fuerza bruta, detección de malware, etc…, si queremos ejecutar una categoría entera contra una dirección ip o un rango de ellas, solo debemos realizar lo siguiente:

nmap --script CATEGORIA ip/o/rangodeips

Tambien podemos utilizar comodines o excluir ciertos scripts de una categoría especifica que queramos ejecutar.

  • Ejecutando categorías : “ nmap –script CATEGORIA direccionip”
  • Ejecutando con comodines : “ nmap –script http-* direccionip”
  • Todos los http- menos enum : “ nmap –script=”http-* and not http-enum”

Espero que disfrutaran de esta entrega, pronto profundizaremos un poco mas en algunos aspectos de esta gran herramienta.

Congreso Hacker Colombia