Detectando Sniffers

Una de las herramientas más utilizadas en el campo de la seguridad y de la administración de sistemas es el “Sniffer”. Para el que no lo sepa, un sniffer es una herramienta de monitorización de redes y captura de paquetes que circulan por dichas redes.

Este tipo de herramientas nos permiten:

– Analizar el tráfico de una red: Congestión, cuellos de botella, intrusiones, …

– Detectar fallos de paquetes: Paquetes corruptos, duplicados, errores de sincronización, …

– Nos permiten realizar filtros para analizar nuestro tráfico.

– Creación de estadísticas del tráfico.

– Capturar datos que circulan por la red tanto cifrados como sin cifrar.

Para poder ejecutar este tipo de herramientas se necesitan permisos de administración en una máquina, con lo cual son utilizadas por administradores de red para supervisar estas.

El problema es que igual que las pueden utilizar usuarios autorizados, pueden ser usadas por usuarios no legítimos que han accedido a nuestra red, o que utilizan de forma autorizada nuestra red, pero no deberían tener permisos de administración.

El sniffer es un herramienta que actúa en modo pasivo con lo cual no es fácil detectar la existencia de uno de ellos en nuestra red, ya que la única señal que deja visible es la activación del modo promiscuo de la tarjeta de red en el equipo donde se usa.

En el presente post vamos a intentar conocer algunos métodos que pueden ser utilizados para detectar estos sniffers en nuestras redes.

El primero de los métodos es el más rudimentario y menos técnico de todos, pero para redes pequeñas (quizás 4 o 5 equipos) en las que tengamos acceso físico o remoto a las máquinas puede servir. Es simplemente listar los procesos que se están ejecutando en cada una de las máquinas y ver que encontramos. Otra de las formas mediante el mismo método sería consultar el registro a ver si existen sniffers instalados en la clave “HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft”. Obviamente, este método no es muy efectivo, ya que en mayor medida depende del conocimiento que el administrador tenga sobre los varios sniffers existentes. Además, pueden ser sniffers caseros, o desconocidos, con lo cual serían más difíciles de detectar.

El segundo método, ya más técnico consiste en hacer pruebas mediante paquetes ICMP, ya sabéis, el típico ping. Para llevar a cabo este método realizaríamos un  ping a la máquina que queramos probar, tras esto, generaríamos gran cantidad de tráfico TCP en la red en poco tiempo y volveríamos a realizar el ping a la misma máquina. Si entre las latencias de respuesta de uno y otro hay mucha diferencia (3ms frente a 20ms por ejemplo), podemos estar casi seguros de que hay un sniffer activado. La diferencia de latencias se debe a que el equipo está procesando todas las conexiones TCP y no ha podido responder inmediatamente al ping.

El tercer método, es la utilización de ARP’s. Este método consiste en hacer un ping a una dirección IP que queramos, pero con una MAC incorrecta. Para esto, podemos añadir una entrada en la tabla ARP con la IP correcta y una MAC incorrecta. Al ser la dirección MAC incorrecta, el paquete no debería llegar a su destino, pero en algunos sistemas, si hay un monitor de red activado, el sniffer atenderá el paquete y enviará una respuesta.

El cuarto y último método que vamos a ver es el de pruebas de DNS. Algunos sniffers, realizan búsquedas inversas de DNS, es decir, dada una IP, intentan averiguar el nombre de dominio al que corresponde, y nosotros podemos utilizar esta característica para localizarlo. El método consiste en crear una gran cantidad de tráfico TCP con peticiones de dominios que no existan obligando al sniffer a realizar peticiones de resolución de IP y dominio. De esta forma solo tendremos que ver cual de nuestras máquinas es la que realiza estas peticiones de resolución, y así, sabremos en cual está el sniffer.

Evidentemente, existen varias herramientas que se encargan de implementar todos estos métodos de forma automática, como serían:

– Antisniff: Creada tanto para Windows como UNIX. Esta herramienta se encarga de probar si alguno de los dispositivos de la red está en modo promiscuo. Implementa el segundo, tercer y cuarto métodos vistos anteriormente.

– Sentinel: Herramienta de funcionamiento muy similar a Antisniff que utiliza las librerías libpcap y libnet. Implementa el segundo, tercer y cuarto métodos vistos anteriormente.

– CMP: Otra herramienta que se encarga averiguar si hay máquinas en modo promiscuo en nuestra red.

– NEPED: Herramienta que implementa el tercer método visto más arriba.

– SniffDet: Otra herramienta similar a Antisniff y Sentinel.

Bueno, hasta aquí todo lo relacionado con la detección de sniffer en nuestras redes. Buscando algo de información sobre las herramientas he llegado a una página del dominio maestrosdelweb que me ha parecido muy interesante, así que os dejo el enlace aquí. Hace un poco menos referencia a explicaciones teóricas, y un poco más a las herramientas que el presente artículo, así que lo he visto como un buen complemento.

Espero que os sea de utilidad artículo, y ya sabéis, animaos a dejar dudas y comentarios. Nos vemos.

Detectando Sniffers

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.