Técnicas de detección de sniffers

Las técnicas de detección de sniffers se basan en la búsqueda del problema que varía según se tenga acceso local al ordenador o haya que descubrirlo de algún ordenador remoto, esta última es la variante más usual aunque la más compleja. El objetivo de la mayoría de pruebas es conseguir que la máquina que tiene la tarjeta de red en modo promiscuo se traicione a sí misma, revelando que ha tenido acceso a información que no iba dirigida a ella y que, por tanto, tiene un sniffer, lamentablemente es un objetivo que puede llegar a ser imposible por su complejidad. Si la búsqueda es una consulta directa sobre un ordenador, lo que tendremos que hacer es mirar el estado de las diferentes interfaces de redes que tengamos en dicho equipo, la forma más habitual es utilizar el comando ipconfig.

En el caso de que no podamos acceder y consultar el estado de las interfaces de red, entonces utilizaríamos algún defecto en la implementación concreta del protocolo TCP/IP por algún programa/comando, las técnicas de búsqueda de sniffer en este caso se dividen en dos: las dependientes del sistema operativo y las que no lo son. La ventaja de las técnicas que dependen del sistema operativo es su excelente rendimiento cuando explora máquinas que tienen el mismo sistema operativo del que la técnica obtiene partido, la principal desventaja es el gran número de falsos negativos que ocasiona debido a que en muchos casos las implementaciones de la pila TCP/IP varían entre versiones del mismo sistema operativo. Como ejemplos destacar el filtrado de paquetes en kernels de Linux.


En condiciones normales, los paquetes son aceptados o rechazados a nivel hardware por la tarjeta de red según la MAC address de destino que aparezca en el frame Ethernet. Sólo si esa MAC address es la de la propia máquina o la de broadcast, el paquete es aceptado (copiado) y procesado (se pasa al kernel); en caso contrario, se rechaza (se ignora). Para cada PC del segmento de red que se desee analizar se crea un paquete con una MAC address de destino que no exista en el segmento, cualquier máquina con la tarjeta de red en modo no promiscuo rechazará directamente un paquete que tiene como destino una que no es la suya ni la de broadcast, y no procesará el paquete, mientras que una tarjeta en modo promiscuo pasará el paquete al kernel, este analizará el paquete exclusivamente según los datos del paquete IP que encapsule, el paquete es un ping completamente normal que es contestado por la máquina que tiene el sniffer revelando así su estado.


Filtrado de paquetes broadcast en algunos drivers de Windows: La idea es la misma que en el filtrado de paquetes en kernels de Linux, la característica a considerar en este caso es cómo el driver del sistema operativo decide cuándo un paquete va dirigido a la dirección broadcast ff:ff:ff:ff:ff:ff, cuando la tarjeta de red está en modo no promiscuo, se verifican los seis octetos mientras que en estado promiscuo sólo se verifica el primero de ellos, este hecho facilita mucho la detección de sniffers. Se crea un paquete dirigido a la MAC address ff:00:00:00:00:00, cualquier tarjeta en modo no promiscuo lo va a rechazar automáticamente, mientras que una tarjeta en modo promiscuo con un sistema operativo Windows que use el driver afectado confundirá ese paquete con uno dirigido a broadcast, y lo procesará. Las técnicas no dependientes del sistema operativo son menos fiables y menos concluyentes, suelen basarse en suposiciones del comportamiento de determinados sniffers, convirtiendo estas técnicas inútiles en determinados ambientes. A destacar como ventaja no suelen provocar falsos negativos.

Ejemplos

El Test DNS

En este método, la herramienta de detección en sí misma está en modo promiscuo. Creamos numerosas conexiones TCP/IP falsas en nuestro segmento de red, esperando un sniffer pobremente escrito para atrapar esas conexiones y resolver la dirección IP de los inexistentes host. Algunos sniffers realizan búsquedas inversas DNS en los paquetes que capturan. Cuando se realiza una búsqueda inversa DNS, una utilidad de detección de sniffers huele la petición de las operaciones de búsqueda para ver si el objetivo es aquel que realiza la petición del host inexistente.

Other Languages