SourceForge.net Logo

Detector De Barrido De Puertos: Sistema Para Detectar Excesivos Intentos De Conexión Tcp Y Udp Entre Dos Equipos

 Presentado en el 2º Congreso Iberoamericano de Seguridad Informática

 

Helios Mier Castillo

hmier@ieee.org

 

Departamento de Seguridad Informática

Instituto de Investigación y Desarrollo de Ingeniería de Software

Universidad Autónoma de Guadalajara

Av. Patria 1201, col. Jardines Universidad

Zapopan, Jalisco, México. CP 45110

Tel (523) 36488824 ext. 6000

 

Abstract. Los barridos de puertos son una señal inconfundible de que algo esta mal en una red. La detección temprana de que esta sucediendo uno de estos puede ayudar a los administradores a vigilar más de cerca algún punto en particular de la red. Existen varias técnicas de barrido de puertos, pero todas comparten un mismo grupo de información con el cual se puede crear un pequeño y simple algoritmo que rastree los patrones de actividad asociadas al barrido de puertos.

1 Introducción

Para que un atacante acceda un equipo, recorre cuatro fases de actividad: recolecta información acerca del objetivo, obtiene el acceso, escala privilegios y finalmente si esa es su intención, daña el sistema.

 

En este documento se describe una de las actividades que se emplea con mayor frecuencia para obtener información de los equipos que hay en una red, y se indica cómo podría detectarse si ésta ocurre.

 

En la primera fase, el atacante, conocido en el mundo de la informática como Hacker, pretende encontrar equipos dentro de una red que por falta de conocimientos o exceso de confianza de parte del propietario, se encuentren vulnerables. Trata de obtener la mayor cantidad posible de información acerca de esos equipos (contenido, contraseñas, etc). Esto se puede lograr revisando la información publicada por la misma corporación, también puede emplear simples o muy elaboradas técnicas de ingeniería social con los empleados de la compañía para obtener datos importantes que le evite grandes esfuerzos, o también puede utilizar herramientas automatizadas que hacen revisiones completas sobre rangos de direcciones electrónicas.

 

Una de las técnicas que dieron origen a esta investigación es la conocida como “Barrido de puertos”. Con esta técnica, el intruso pretende obtener una lista de equipos activos dentro de un rango de direcciones y conocer los puertos abiertos que cada máquina tiene.

 

La lista de puertos abiertos es importante pues en la gran mayoría de los casos, cada puerto está asignado a un servicio conocido, por ejemplo, el puerto 80 es usado para el protocolo http, los puertos 137 y 139, son usados para comunicaciones NETBIOS, hay otros puertos “bien conocidos” (well known ports) que se dejan abiertos por aplicaciones creadas por personas con malas intenciones, por ejemplo, el puerto 12345 es usado por el programa Netbus,  una aplicación que abre una “puerta trasera” (back door) en el sistema, una vez hecho esto, el atacante solo necesita conectarse a la aplicación para obtener control total y absoluto del equipo.

 

Cuando el atacante sabe cuáles servicios están activos en un sistema, entonces puede sacar conclusiones sobre las vulnerabilidades que puede contener cada servicio y explotarlas hasta tener el acceso. Esto quiere decir que entre más puertos abiertos haya en un equipo, hay más puertas por las que se puede entrar.

2 Funcionamiento técnico del barrido de puertos

El procedimiento es sencillo, un equipo atacante (equipo A) va a intentar realizar una conexión a cada puerto del equipo víctima (equipo V) por medio de los protocolos UDP y TCP, y si el puerto se encuentra abierto con un servicio activo, entonces el equipo V enviará una respuesta al equipo A.

 

Cada sistema puede tener un total de 65535 puertos disponibles, por lo que  un barrido de puertos en una sola computadora puede ser una tarea prolongada, usualmente el barrido de puertos se realiza con el apoyo de una herramienta que permita hacerlo de diferentes formas, ya sea en base a una lista de números conocidos asociados a un servicio en particular (21 ftp, 23, telnet, 25 smtp, 80 http, etc.), o cubriendo todos los puertos o rangos de valores (0 – 65535).

 

Las herramientas que se usan para ello, hacen el proceso de una forma muy rápida, utilizan paquetes IP muy cortos (~60 bytes) que contienen una petición de conexión entre un par de puertos del protocolo TCP o UDP.

 

El paquete contiene 4 datos que son importantes, la IP del atacante, la IP de la víctima, el puerto de destino en la máquina de la víctima, y el puerto de comunicación que está usando la máquina del atacante. Hay dos escenarios en los que puede realizarse el barrido de puertos:

 

Caso 1:

 

         Cuando el atacante utiliza un solo puerto de comunicaciones para conectarse al objetivo, hay una solicitud de conexión hacia cada uno de los puertos, el siguiente intento de conexión se realiza hasta que se recibe la respuesta, esto hace que el barrido de los puertos sea tardado, pero resulta igualmente efectivo.

 

 

Caso 2:

 

El equipo atacante abrirá un puerto por cada puerto que quiera revisar del equipo víctima, de esta forma el barrido se hace mas rápido.

 

En ambos casos, entre la máquina del atacante y la máquina de la víctima, siempre habrá una comunicación entre un par de puertos diferentes en un lapso de tiempo pequeño, y, serán siempre un número grande de enlaces comparados con los que normalmente se ven en una red, ya sea que se haga la búsqueda en base a una lista de números o por rangos de valores.

 

El tráfico que se genera entre las dos máquinas puede ser fácilmente detectado en un segmento de red que maneje un medio de comunicación común para los equipos como las redes ethernet de bus lineal y de concentradores.

 

Conociendo cómo se generan los barridos de puertos, se creó un sistema que escucha el tráfico de una red (sniffer), revisa las comunicaciones entre pares de máquinas y lleva el registro de las conexiones e intentos de conexión entre pares de puertos a nivel de protocolos UDP y TCP  para analizas y detectar los equipos que están intentando un número excesivo de conexiones, registrando los incidentes en una bitácora para análisis futuro.

 

El sistema generado, centra su principal función en la organización de la información obtenida filtrando los paquetes sacados de la red, introduciéndola en una estructura de datos simple pero lo suficientemente flexible para manejar una gran cantidad de información para analizarla en el menor tiempo posible.

3 Descripción del sistema.

Empleando una librería de captura de paquetes que pueda introducirse en un lenguaje de programación de alto nivel se toman de la red los paquetes generados por las máquinas conectadas a ella y se filtran para registrar los datos que incluye cada paquete TCP o UDP enviado entre 2 máquinas.

 

El registro muestra los datos que forman el paquete del protocolo; los datos relevantes de esta captura son: la dirección IP origen, dirección IP destino, el número del puerto origen y el número de puerto destino.

 

La estructura de datos donde se almacena la información está compuesta de la siguiente forma:

 

 

 

3.1 Para almacenar la información se sigue el siguiente algoritmo:

 

 

 

Cada cierto tiempo, en una frecuencia definida por el usuario, se recorren los registros de conexiones de cada enlace, decrementando el valor del tiempo de vida de cada conexión, y si este ha llegado a 0, entonces se eliminará el registro. En el momento en el que un enlace no tiene elementos en el arreglo que almacena las conexiones, entonces ese enlace se elimina de la estructura.

 

Otra acción que se realiza con la periodicidad definida por el usuario, permite revisar la estructura contando cuántas conexiones mantiene cada enlace, si el número de esas conexiones supera a las que el administrador estableció como un máximo, entonces se registrará en la bitácora una advertencia, con la fecha, hora, las direcciones involucradas y el número de conexiones que mantenían. También se ha incluido un valor por defecto como parámetro para determinar la posibilidad de un barrido de puertos. Este número es de veinticinco, pues fue el menor número de conexiones que se realizaban de manera predeterminada por algunas de las herramientas disponibles para barrido de puertos.

 

Cada cierto tiempo, se despliega en pantalla la información contenida en la estructura, indicando las direcciones que se están comunicando y la lista de puertos que intentaron conectarse. Con base en un parámetro definido por el administrador, se pueden indicar los detalles del enlace o solo indicar con números el estado actual de las conexiones.

4 Restricciones

Aunque la intención de esta aplicación es lograr que el almacenamiento y el análisis de los datos se realiza lo más rápido posible y de una forma eficiente, entre mas información se vaya acumulando en la estructura de almacenamiento, el procedimiento para recorrer la estructura se vuelve cada vez mas lento, esto puede provocar que el sistema no procese con suficiente velocidad todos los paquetes que puedan ser capturados. Para evitarlo, se requiere contar con un  equipo muy rápido con gran cantidad de memoria RAM.

 

El atacante puede utilizar una técnica de Spoofing para esconder el origen del barrido de puertos, pero aun así, se puede detectar cuando esta sucediendo uno y sobre todo, el sistema permite conocer cual es el sistema objetivo, donde se podrán establecer otras medidas de vigilancia.

5 Pruebas

Para realizar pruebas con este algoritmo propuesto, se creó una aplicación en Borland Delphi 6 para MS Windows. Este sistema se localizo en una computadora dentro de una red LAN conectada con HUBs, de esta forma se podrá analizar el tráfico de red que circula por todo ese segmento de red.

 

Para generar un barrido de puertos, se utilizo la popular herramienta NMAP v3.30, con la que se pueden generar diferentes tipos de barridos de puertos: TCP Connect, TCP SYN Scan, Stealth FIN, Xmas Tree, Null scan, UDP Scan, ACK Scan, y, Window Scan. [5,6].

 

Debido a que el algoritmo propuesto no presta mayor atención a los detalles de la conexión entre dos sistemas, y con solo mantener el registro de los enlaces entre cada par de puertos, la aplicación fue capaz de identificar el alto numero de intentos de conexión entre un par de maquinas, sin importar de que técnica de barrido de puertos se este utilizando.

 

La misma herramienta NMAP ofrece la posibilidad de realizar el barrido de puertos con mayor lentitud, con la intención de pasar desapercibido para los sistemas detectores de intrusos y firewalls. El algoritmo que se propone también se ve afectado por esta técnica, pues al hacer un barrido de puertos a muy baja velocidad, el factor del tiempo de vida entre cada registro de par de puertos termina antes de que se registre un par nuevo de conexiones, por lo que la cantidad de registros activos no supera el mínimo determinado para determinar si esta ocurriendo un barrido de puertos.

 

Para que este algoritmo pueda detectar un barrido de puertos de baja velocidad, se tendrían que usar valores mas altos del factor de tiempo de vida de cada registro de par de puestos, ó, establecer un valor menor del factor que sirve como referencia para determinar si hay exceso de conexiones entre dos direcciones.

 

Estableciendo el tiempo de vida con un valor mas alto, se logra que los registros se mantengan por mas tiempo y se puede detectar el barrido de puertos, pero aumenta el riesgo de que se registren falsos positivos al mantener los registros de un usuario normal con comunicaciones muy activas como las usadas por el Kazzaa.

6 Conclusiones

Muchas veces, una actividad como el barrido de puertos pasa desapercibida para el administrador de una red debido a que se utilizan procesos de comunicación “legales” dentro de ella, de forma que se confunden con el tráfico normal de los usuarios y no pueden darse cuenta de que están siendo observados por un posible intruso.

 

La aplicación creada y descrita en este documento, puede crecer aún mas hasta convertirse en un buen Sistema Detector de Intrusos (IDS, Intrusion Detection System) que permita obtener mas información sobre los atacantes; o desarrollarse hasta incluir un poco de “inteligencia” para tomar decisiones como el enlace a otros equipos de la red con el fin de realizar alguna acción de defensa y convertirse en lo que se conoce como un Sistema de Medidas Electrónicas Contra intrusos (ICE, Intruder Counter-measure Electronics).

 

La investigación está en progreso y los atacantes se multiplican cada día, es necesario tener conciencia del peligro que pueda representar la ociosidad de jóvenes que al tener herramientas gratuitas disponibles en diversos sitios por internet no duden en probarlas en las redes que tienen al alcance sin importar el giro de la empresa, afectando laboralmente a los usuarios. El exceso de confianza también es un atacante que se tiene que combatir.

6 Referencias

1 Hatch, B.,& James B. L. (2001) Hacking Linux Exposed. McGraw-Hill Osborne Media.

 

2 Scambray, J., & McClure, S. (2002). Hacking Exposed Windows 2000. McGraw-Hill Osborne Media.

 

3 Schiffman, M. Hackers,(2002). 20 desafíos prácticos. Ed. McGraw-Hill Osborne Media.

 

4 McClure, S., & Scambray J., Hackers, Secretos y soluciones para la seguridad de redes.(2000). Ed. McGraw-Hill Osborne Media.

 

5 Fyodor (2003) Nmap network security scanner man page

 

6 Fyodor (1997) The Art of Port Scanning

 

 


Descargar archivos en la página del proyecto