monster    Titulo    forum

 

ANILLO     CONTACTAR    CULTURALIA     DOWNLOADS    KIOSKO    FORO         HOME

 

 Translate 

 

 

contacto de Alfon

 

ESCANEANDO CON NMAP.

Técnicas de scan de puertos.

 

Capítulo 1. Introducción a nmap y tipos de escaneo más frecuentes.

 

Indice Capítulo I


Introducción

  • Las tres formas principales de escaneo con nmap

  • Las otras formas de escanear con nmap

  • Algunas opciones importantes

  • Sólo para Windows

  • Guía rápida escaneo Nmap

  • TCP/IP para comprender nmap:

  • APÉNDICE 1.1 Establecimientos de conexiones TCP.

 

 

1.1- Introducción

Fundamentalmente los scanners de red son herramientas esenciales para aquellos que desean explorar o auditar un sistema o red analizando su seguridad .

Por ello, para un administrador preocupado por la seguridad de su sistema, es importante realizar un barrido de su red, y buscar vulnerabilidades antes que lo hagan otros con no muy buenas intenciones

Para esta tarea disponemos de Nmap ( http://www.insecure.org/nmap/ ) que permite a los administradores de sistemas el escaneo de grandes redes para determinar qué servidores se encuentran activos, qué servicios ofrecen y determinar con cierta exactitud qué sistema operativo corre por en dicho host.

Nmap es una herramienta para el escaneo de puertos, probablemente de las mejores que existen siendo software libre. Su autor, Fyodor, ha utilizado varias técnicas para realizar el escaneo de estos puertos tanto para TCP como para UDP, usando diferentes protocolos. Corre bajo LINUX.

interfaz_nmap

Interface Gráfica de la versión Nmap para Windows.

 

Algunas características que podemos destacar de Nmap:

Flexible:

Soporta técnicas avanzadas para el scanneado de sistemas y redes que estén detrás de firewalls y otros obstáculos. Escanea puertos (tanto TCP como UDP), detección del sistema operativo, previsibilidad de la secuencia de los paquetes TCP, UDP o ICMP utilizados para hacer el barrido, gran cantidad de técnicas de escaneo, posibilidad de salida de datos en formato XML.

Potente: Con Nmap se pueden escanear sistemas con cientos de hosts. También es posible combinar gran cantidad de opciones que no sean incompatibles entre sí.

Portable a varios sistemas: Existen versiones para la gran mayoría de los sistemas operativos modernos, entre ellos: Linux, Open/Free/Net BSD, Solaris, IRIX, Mac OS X, HP-UX, Sun OS, Windows.

Código libre: Se distribuye con licencia GPL, por lo que el código fuente está disponible para su descarga libremente.

Buena Documentación: De fácil asimilación intuitiva y siempre actualizada.

Popular: Es un software muy conocido en el mundo de la administración/auditoría de redes en todos sus sistemas operativos con amplia documentación en la red Internet.

Fácil uso: Su manejo es sencillo y se puede operar con él en modo comando como interface gráfico, esto último implementado para sistemas Windows desde la versión 3.

 

Algunas técnicas utilizadas por Nmap:

  • Vanilla TCP connect() scanning

  • TCP SYN (half open) scanning

  • TCP FIN, Xmas, or NULL (stealth) scanning

  • TCP ftp proxy (bounce attack) scanning

  • SYN/FIN scanning using IP fragments (bypasses some packet filters)

  • TCP ACK and Window scanning

  • UDP raw ICMP port unreachable scanning

  • ICMP scanning (ping-sweep)

  • TCP Ping scanning

  • Direct (non portmapper) RPC scanning

  • Remote OS Identification by TCP/IP Fingerprinting, and

  • Reverse-ident scanning.

  • Escaneo por fragmentación

  • Especificación de destino y puerto.

  • Retraso dinámico...

Y otras muchas más que se implementan en la versión 3



1.2.- Las tres formas principales de escaneo con nmap.

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.

 

 

1.3.- Las otras formas de escanear con nmap.

-sF, -sX, -sN o Stealth FIN, Xmas o Scan Nulo (sólo trabaja contra UNIX). Este tipo de scan se le llama nulo porque intenta molestar lo menos posible al "inetd" o demonio de servicios para evitar caer en el en el log del sistema.

Ademas existen muchos host con firewall que poseen filtrado para paquetes del tipo SYN por lo que quedaríamos automáticamente grabados en el log del sistema , para esos casos es necesario utilizar el sF, sX, sN o el Xmas en vez de el sS.



-sP ping "scan". Este es utilizado solo para saber si determinado(s) host(s) estan en ese momento vivos o conectados. Normalmente ésto lo realiza Nmap enviando paquetes al puerto 80 de un host pero si éste tiene un filtrado de ese puerto podrá ser detectado de todas formas.

Se puede utilizar esta opcion en combinacion con -PI para cambiar ese puerto 80 por uno mucho mayor preferiblemente .

 

-sU. Este es un Scan de Puertos abiertos con protocolo UDP, solo como root o Administrador de puede ejecutar.

 

(Hay otras pero de momento nos quedamos con estas formas.)

 

 

1.4.- Algunas opciones importantes.

Alguna vez os habrá pasado que escaneando con Nmap parece que el host no está accesible o simplemente no existe. Puede ser que tenga filtrado los pings y como ésto es lo primero que hace Nmap, hay que desactivarlo:

-P0 No hace "ping" al host en cuestion. Necesario para el scan o "barrido" a hosts con sistemas de deteccion de ataques o firewalls de filtrado.

 

-PI Utiliza paquetes ICMP para determinar que hosts están conectados y en especial si deseamos hacer un scan a travez de un firewall.

 

-O Utiliza el TCP/IP "fingerprinting" para determinar qué Sistema Operativo está corriendo en un host remoto.

El "fingerprinting" lo veremos en un capítulo dedicado a la detección del sistema operativo remoto.

 

Utilización de Decoys (-D)

Se trata de usar host señuelos con el fin de confundir al host el cual escaneamos haciéndole creer que el scan se realiza desde un host diferente al nuestro.

Evidentemente, los host que usemos como señuelos, deben estar activos.

Se usa de esta manera:

          -Dhost1,host2,ME,host3[,...]

Donde ME es nuestro propio host.

 

Ejemplo:

     C:\nmap1>nmap -OsS -P0 -D192.168.4.5,192.168.4.8,192.168.4.3 -p139 192.168.4.1

          Starting nmap V. 2.54BETA35 ( www.insecure.org/nmap )

          Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port

          Insufficient responses for TCP sequencing (3), OS detection may be less accurate

          Interesting ports on ABANCE-2 (192.168.4.1):

          Port State Service

          139/tcp open netbios-ssn

          Remote OS guesses: Windows NT4 / Win95 / Win98, Windows NT 4 SP3, Microsoft NT 4.0 SP5-SP6

     Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

 

 

1.5.- Sólo para Windows.

     C:\nmap1>nmap --win_help

     Windows-specific options:

          --win_list_interfaces : list all network interfaces

          --win_norawsock : disable raw socket support (para evirar modo root)

          --win_forcerawsock : try raw sockets even on non-W2K syst

          --win_nopcap : disable winpcap support

          --win_nt4route : test nt4 route code

          --win_noiphlpapi : test response to lack of iphlpapi.dl

          --win_trace : trace through raw IP initialization
(aquí veremos si está todo correcto, version del wincap, etc.)

 

Ejemplo:

     C:\nmap1>nmap --win_list_interfaces

     Available interfaces:

          Name Raw send Raw recieve IP

          loopback0 SOCK_RAW SOCK_RAW 127.0.0.1

          eth0 SOCK_RAW SOCK_RAW 192.168.10.3
(éste soy yo)

 

 

1.6.- Guía rápida escaneo nmap.

En los siguientes capítulos explicaremos otras técnicas de escaneo con Nmap y más funcionalidades. De momento una guia rápida.

          nmap [–s<tipo paquete>] [–p <puertos>] [–<otras opciones>] <dirección destino>

 

          TCP connect scan: nmap –sT <destino>

          TCP SYN scan: nmap –sS <destino>

          TCP ACK scan: nmap –sA <destino> y nmap –sW <destino>

          TCP FIN scan: nmap –sF <destino>

          TCP Null scan: nmap –sN <destino>

          TCP Xmas scan: nmap –sX <destino>

          UDP scan: nmap –sU <destino>

          RPC scan: nmap –sR <destino>

          TCP reverse ident scan: nmap –I <destino>

          ICMP echo scan: nmap –sP <destino>

          IP protocol scan: nmap –sO <destino>

          Operative System scan: nmap –O <destino>

          Slow scan: nmap --scan_delay <milisegundos> <destino>

          Fragmentation scan: nmap –f <destino>

          FTP bounce scan: nmap –b <[usuario:contraseña@]direcciónFTP[:puerto]> <destino>

          Spoofed scan: nmap -S <origen> <destino>

          Decoy scan: nmap -D <señuelo1 [,señuelo2][,ME],...> <destino>

          Dumb host scan: nmap –sI <intermedio[:puerto]> <destino>

          Random scan: nmap --randomize_hosts <destino> (por defecto, los puertos destino ya están en orden aleatorio)

 

 

APÉNDICE 1.1.- Establecimientos de conexiones TCP.

Imagen

Veremos en este apéndice cómo se realiza una conexión TCP. Nos ayudará a interpretar logs, trazas y técnicas de escaneo. Veremos también algunos componentes de los paquetes TCP aparte de los puertos de la máquina origen y destino. Estos componentes importantes son los números de secuencia y de confirmación (SEQ y ACK) que se utilizan para asegurar la integridad de la conexión y los flags o banderas que son los encargados de indicar la finalidad del paquete (para iniciar o finalizar una conexión, para transmitir datos, etc).

Una conexión TCP se realiza en tres pasos. Es lo que técnicamente se llama three-way handshake:

  1. En el sistema / host que inicia la conexión o cliente (TCP A), envía un paquete de SYN con un número de secuencia inicial asociado a esta conexión al sistema / host destinatario o servidor (TCP B).

  2. Este responde con un paquete SYN-ACK (acuse de recibo) confirmando la recepción del SYN inicial enviado por (TCP A) y enviándole a su vez su propio número de secuencia.

  3. Para finalizar, el cliente (TCP A) reconoce la recepción del SYN del servidor (TCP B) mediante el envío de un ACK. Este es el momento en que queda establecida la conexión. Ya se puede iniciar la transferencia de datos entre (TCP A) y (TCP B).

 

Vamos a avanzar un poco más ya que ocurren algunas otras cosas. Lo vemos gráficamente:

Sean dos hosts pretenden inciciar una conexión TCP. TCP A y TCP B, siguiendo la analogía de la explicación anterior.

  1. TCP A _SYN( SEQ=x ) -> y TCP B

  2. TCP B _SYN( SEQ=y, ACK=x+1 ) -> TCP A,

  3. TCP A _SYN( SEQ=x+1, ACK=y+1 ) -> TCP B.

 

Vemos como TCP A envía un paquete SYN con un número de secuencia inicial x que además es aleatorio a TCP B. El resto es fácil deducir.

Las letras x e y son los números de secuencia (SEQ). Se utilizan números de secuencia distintos para cada sentido de la comunicación. El primer número para cada sentido se acuerda al establecer la comunicación. Cada extremo se inventa un número aleatorio y envía éste como inicio de secuencia.



Un paso más para terminar de comprender la conexión TCP totalmente imprescindible para entender muchas técnicas de escaneo.

Ejemplo:

Sean dos hosts (TCP A) y (TCP B) que pretenden iniciar una conexión. Veremos también que pasa con los números de secuencia (SEQ):

                  TCP A                                                                                                          TCP B

          1. SYN-SENT        -->  <SEQ=100><CTL=SYN>                                  -->  SYN-RECEIVED

          2. ESTABLISHED  <--   <SEQ=300><ACK=101><CTL=SYN,ACK>       <--  SYN-RECEIVED

              ESTABLISHED   -->  <SEQ=101><ACK=301><CTL=ACK>               -->  ESTABLISHED

          3. ESTABLISHED   -->  <SEQ=101><ACK=301><CTL=ACK><DATOS> --> ESTABLISHED

 

Todo esto es lo que ocurre cuando realizamos un escaneado de puerto TCP conect ().

Si la opción elegida es TCP SYN no dejamos que se establezca totalmente la conexión, esto significaría el envío por parte de TCP A de un RST (reset) cerrando así la conexión.

 

 

Ejercicios y ejemplos

1.- Como ejercicio podríamos descifrar esta traza capturada por Ethereal. Se trata de un escan Nmap TCP conect() al puerto 25.

La orden para escanear sería:

          C:\nmap –sT –v 192.168.4.15 –p25

La traza resultante:

          INFOGRAFIA3 ABANCECOMU TCP 1125 > smtp [SYN] Seq=13766490 Ack=0 Win=16384 Len=0

          ABANCECOMU INFOGRAFIA3 TCP smtp > 1125 [SYN, ACK] Seq=472370892 Ack=13766491 Win=8736 Len=0

          INFOGRAFIA3 ABANCECOMU TCP 1125 > smtp [ACK] Seq=13766491 Ack=472370893 Win=17472 Len=0

 

2.- Ahora vamos a ver un escaneo nmap tipo –sS al puerto 25 (smtp) desactivando el ping.

La orden para escanear sería:

          C:\nmap –sS –P0 IFOGRAFIA3 –p 25

La traza resultante:

          ABANCECOMU INFOGRAFIA3 TCP 38428 > smtp [SYN] Seq=2093898103 Ack=0 Win=2048 Len=0

          INFOGRAFIA3 ABANCECOMU TCP smtp > 38428 [SYN, ACK] Seq=3462674933 Ack=2093898104 Win=16616 Len=0

          ABANCECOMU INFOGRAFIA3 TCP 8428 > smtp [RST] Seq=2093898104 Ack=2093898104 Win=0 Len=0

 

Vemos claramente el RST (reset) enviado en la última línea de la traza, no completando o estableciendo la conexión.

 

NOTA: Observemos en ambos casos los incrementos y valores de números de secuencias, los indicadores o flags TCP que se intercambian en el diálogo, etc.

 

 

 

 

 

 

 
 

©2001 Maty & Asociados. Reservados todos los derechos.