Tratamos este tema, de momento, para redes no conmutadas. más adelante veremos que se puede sniffear en redes conmutadas y hasta detectar este tipo de intrusiones.
Antes que nada, decir que los sniffers no son fáciles de detectar y combatir, ya que se trata de programas que trabajan en modo pasivo. Las técnicas que se tratan aquí, por tanto, no son totalmente fiables, aunque en algunos casos si suponen una grn aproximación al descubrimiento de este tipo de software.
En entornos Linux o UNIX la verificación de una interface en modo promiscuo se puede hacer usando ifconfig. Este programa configura la interface de red instalada en un determinado host y obtiene información de la configuración en el momento de ejecutar el programa. Cuando un adaptador de red se encuentra en modo promiscuo, ifconfig nos devuelve la siguiente información:
Código:
Este sistema no es infalible.$ ifconfig -a eth0 Link Encap: 10Mbps Ethernet HWaddr: xx:xx:xx:xx:xx:xx inet addr: a.b.c.d Bcast: a.b.c.f Mask: m.m.m.m UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 (OJO: Modo promiscuo) RX packets: 0 errors:0 dropped:0 overruns:0TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base Address:0x300
Existen programas que pueden hacer esta labor como:
cpm (Check Promiscuous Mode)
Este pequeño programa realizado por la Universidad de Carnegie Mellon, chequea el interfaz de red de la máquina descubriendo si está siendo utilizado en modo promiscuo (escuchando todo el tráfico de la red).
Código:
Existen otros programas como Antisniff, Sentinel, SniffDet, ifstatus o NEPED:$ cpm 4 network interfaces found: eth0:5: Normal eth0:3: Normal eth0:2: Normal eth0:1: Normal eth0: *** IN PROMISCUOUS MODE ***
Veamos como trabaja NEPED
Tenemos que introducir la interface de red:
Código:
NEPED utiliza la técnica de realizar una simple petición ARP para cada una de las IPs de la red a diagnosticar, pero ojo, los paquetes no van destinados a broadcast (FF:FF:FF:FF:FF:FF), sino a una dirección aleatoria e inexistente. Sólo las interfaces en modo promiscuo verán estos paquetes, y de esta manera, sólo estas interfaces contestarán a estas peticiones.$ neped eth0 ---------------------------------------------------------- > My HW Addr: 00:50:BF:1C:41:59 > My IP Addr: 192.168.0.1 > My NETMASK: 255.255.255.0 > My BROADCAST: 192.168.1.255 ---------------------------------------------------------- Scanning .... * Host 192.168.0.3, 00:C2:0F:64:05:FF **** Promiscuous mode detected !!! End.
Existe también un dispositivo de hardware llamado Tap. Este dispositivo permite conectarse a un Hub o incluso a un switch de red al cual conectásemos un dispositivo (ordenador) para monitorizar la red. Existen tipos de Taps para cada tipo de red Ethernet 10 Mbps, 100 Mbps y 1 Gbps.
Más información en: www.netoptics.com
SniffDet - Remote Sniffer Detection
http://prdownloads.sourceforge.net/s...det-0.8.tar.gz
Usa lás técnicas test ICMP, test ARP, test DNS y test de ping de latencia.
Código:
vemos un ejemplo resultado de este software:sniffdet 0.8 A Remote sniffer Detection Tool Copyright (c) 2003 Ademar de Souza Reis Jr. Milton Soares Filho Usage: ./sniffdet [options] TARGET Where: TARGET is a canonical hostname or a dotted decimal IPv4 address -i --iface=DEVICE Use network DEVICE interface for tests -c --configfile=FILE Use FILE as configuration file -l --log=FILE Use FILE for tests log -f --targetsfile=FILE Use FILE for tests target --pluginsdir=DIR Search for plugins in DIR -p --plugin=FILE Use FILE plugin -u --uid=UID Run program with UID (after dropping root) -g --gid=GID Run program with GID (after dropping root) -t --test=[testname] Perform specific test Where [testname] is a list composed by: dns DNS test arp ARP response test icmp ICMP ping response test latency ICMP ping latency test -v --verbose Run in verbose mode -h, --help Show this help screen and exit --version Show version info and exit Defaults: Interface: "eth0" Log file: "sniffdet.log" Config file: "/etc/sniffdet.conf" Plugins Directory: "/usr/lib/sniffdet/plugins" Plugin: "stdout.so" You have to inform at least one test to perform
Código:
Otras formas de detectar posibles sniffers------------------------------------------------------------ Sniffdet Report Generated on: xxxxxxxxx 2003 ------------------------------------------------------------ Tests Results for target 192.168.2.1 ------------------------------------------------------------ Test: ARP Test Check if target replies a bogus ARP request (with wrong MAC) Validation: OK Started on: xxxx Finished on: Mxxxxx Bytes Sent: 84 Bytes Received: 60 Packets Sent: 2 Packets Received: 1 ------------------------------------------------------------ RESULT: POSITIVE ------------------------------------------------------------ ------------------------------------------------------------ Number of tests with positive result: #1 ------------------------------------------------------------
* Detectar y controlar los logs que suelen generar los sniffers.
* Detectar y controlar las conexiones al exterior.
* Monitorizados los programas que acceden al dispositivo de red.
* Normalmente una interface en modo promiscuo, queda reflejada en el fichero de logs:
* $ cat /var/log/messages
Otras técnicas de detección
Sólo por nombrar algunas, son usadas por los programas anti-sniffers. Comentaremos la última:
* Ping de latencia
* Test ARP
* Uso de un IDS. Por ejemplo Snort que contiene un preprocesador (arpspoof) que nos puede servir. Aquí las líneas de snort.conf configurando el preprocesador:
Código:
* Test DNS# arpspoof #---------------------------------------- # Experimental ARP detection code from Jeff Nathan, detects ARP attacks, # unicast ARP requests, and specific ARP mapping monitoring. To make use # of this preprocessor you must specify the IP and hardware address of hosts on # the same layer 2 segment as you. Specify one host IP MAC combo per line. # Also takes a "-unicast" option to turn on unicast ARP request detection. # Arpspoof uses Generator ID 112 and uses the following SIDS for that GID: # SID Event description # ----- ------------------- # 1 Unicast ARP request # 2 Etherframe ARP mismatch (src) # 3 Etherframe ARP mismatch (dst) # 4 ARP cache overwrite attack preprocessor arpspoof preprocessor arpspoof_detect_host: 192.168.2.1 f0:0f:00:f0:0f:00
Test DNS: Creamos falsas conexiones TCP contra hosts
inexistentes en la subred a testear. Si un sniffer se encuentra activo, enviará peticiones a la DNS para resolver el nombre del host. Interceptando dichas peticiones averiguaremos si en el segmente de red exite o no un sniffer activo.
Protegerse contra la acción de los sniffers
A grandes rasgos para protegernos de los sniffers y para que éstos no cumplan sus objetivos de olfateo de contraseñas y en general nos "lean datos sensibles" en texto plano -sin cifrado fuerte-, podemos hacer uso de diversas técnicas o utilizar sistemas como:
* Redes conmutadas (no siempre es efectivo)
* PGP
* SSL
* SSH
* VPN,
* etc.