La sintaxis general para el uso de Nmap es la siguiente:
nmap [Tipos(s)de escaneo] [Opciones] ... [#N]>
Veremos en esta primera entrega los principales Tipos de escaneo y opciones.
-sT: Escaneo usando paquetes TCP. Tipo de escaneo
TCP Conect(). El destino puede logear nuestra IP ya que se realiza una conexión completa con la máquina destino.
NOTA: Para saber más sobre como se realiza una conexión TCP completa y otras cuestiones sobre TCP ir al
APÉNDICE 1.1: Establecimiento de conexiones TCP.
Se le llama
TCP Conect() porque se implementa haciendo una llamada al sistema
conect() y permite saber rápidamente si el puerto está o no abierto en la máquina destino.
- si
recibe un
RST/ACK el puerto está
cerrado.
- si
recibe un
SYN/ACK el puerto está
abierto --> envia un
ACK estableciendo conexión.
Todos los cortafuegos e IDS como
Snort o el IDS implementado en
Kerio 3.0 detectan este tipo de escaneo y muchos pueden bloquearlos, en cambio, es una técnica que nos proporciona gran fiabilidad. Es pues una técnica muy fiable para realizar auditoría de nuestro sistema, pero no para sistemas remotos ni no queremos ser detectados tan fácilmente.
No se necesita ningún tipo de privilegio de administrador o root en linux.
Podríamos probar como funciona esta técnica de la siguiente forma:
Escanear un
host remoto en el cual corremos
TCPDump / Windump u otro sniffer como
Ethreal. Observamos las trazas dejadas por el snifer apreciando si el puerto está abierto el "diálogo" establecido en la conexión.
Llamemos al
host origen que lanza nmap (A) y al
host destino que corre el sniffer (B).
A muy grandes rasgos pasa:
(A) lanza una conexión, llamada a conect() en la cual
envía un segmento
SYN para informar a
(B) del inicio de la conexión.
(B) está de acuerdo y
devuelve un
SYN+ACK aceptando la conexión.
(A) recibe la notificación e informa mediante un
ACK que podemos iniciar la conexión. Conexión establecida.
Esto es muy superficial, en este proceso pasan muchas otras cosas.
Ejemplo:
C:\nmap1>
nmap -sT 192.168.4.5 -p 130-140
-P0
Starting nmap V. 2.54BETA37 (
www.insecure.org/nmap∞ )
Interesting ports on INFOGRAFIA5 (192.168.4.5):
Port State Service
130/tcp filtered cisco-fna
131/tcp filtered cisco-tna
132/tcp filtered cisco-sys
133/tcp filtered statsrv
134/tcp filtered ingres-net
135/tcp open loc-srv
136/tcp filtered profile
137/tcp filtered netbios-ns
138/tcp filtered netbios-dgm
139/tcp open netbios-ssn
140/tcp filtered emfis-data
Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds
NOTA: Con
–P0 desactivamos el
ping antes del escaneado para evitar el filtrado de pings por algunos cortafuegos.
-sS: Modo oculto usando
TCP SYN. Envía un paquete
SYN y espera la contestación, en funcion de la respuesta ( un
ACK o un
RST ). Así pues, consiste en
terminar la conexión antes de que el “diálogo” con el host destino esté completo.
Sólo se permite como
root o administrador. Es más difícil la identificación por parte de algunos cortafuegos e IDS y es más rápido que el escaneo TCP.
-si
recibe un
RST/ACK el puerto está
cerrado.
si
recibe un
SYN/ACK el puerto está
abierto --> envia un
RST rompiendo conexión.
Los buenos IDS como
Snort tienen reglas que identifican este tipo de escaneo de puertos ya que los ataques de
Denegación de Servicio (DoS) se basan en esta técnica.
Tal como indicamos en la técnica de
TCP conect(), podemos comprobar esta técnica analizando las trazas con
TCPdump / Windump o
Ethreal al escanear un determinado host.
-sU: Escaneo
tipo UDP. Escanea los servicios que permiten tráfico UDP. Se envían paquetes UDP de
0 bytes a cada puerto del host destino.
-si se
recibe un mensaje
ICMP de puerto
no alcanzable: puerto cerrado o no alcanzable, caso contrario se asume que está abierto.
Evidentemente no es
nada fiable. Sólo se permite en
modo root o administrador ya que usa los
socket raw. Como ventaja podemos destacar que algunos IDS no lo detectan. Escanear algunos sistemas con este método puede ser muy lento. El IDS de
Kerio 3.0 identifica este tipo de scan.