6 nov 2013

ArpON: Protegiéndonos de ataques ARP Poisoning

Como vimos en el artículo , uno de los ataques que podemos sufrir en nuestra red es el envenenamiento de ARP (ARP Poisoning). Cuando sufrimos este tipo de ataques, se produce a su vez uno del tipo Man In the Midle (hombre en medio). Esto es, toda la comunicación entre dos equipos pasa primero por el equipo atacante.
Para protegernos de este tipo de ataques (y de sus derivados, como Sniffing, Hijacking, Injection, Filtering, DNS Spoofing, WEB Spoofing, Session Hijacking, etc.), disponemos de ArpON, un herramienta que nos permite vigilar nuestras interfaces de red y detener, en buena parte, los ataques antes mencionados.
Esta herramienta está incluida en los repositorios de buena parte de las distribuciones GNU/Linux, como Debian, Fedora, Ubuntu, etc.
En ArchLinux disponemos del paquete en el AUR, pero no tiene el servicio de SystemD, así que creamos el archivo /usr/local/lib/systemd/system/arpon.service con el siguiente contenido:
[Unit]
Description=Arp handler inspectiON – a portable Arp handler
[Service]
EnvironmentFile=/etc/conf.d/arpon
PIDFile=/var/run/arpon.pid
ExecStart=/sbin/arpon  -q -i $INTERFACE $OPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
En el archivo de configuración, /etc/conf.d/arpon, indicamos la interfaz que queremos proteger y las opciones que deseemos. Un ejemplo básico y funcional sería:
INTERFACE=enp2s5OPTIONS=-g -H
Con la opción -H establecemos el modo HARPI. Dispone de tres métodos de funcionamiento:
  • Dinámico (DARPI): Para redes con DHCP activado.
  • Estático (SARPI): Si no utilizamos DHCP.
  • Híbrido  (HARPI): Para redes con/sin DHCP.
La opción -g es para que se utilice el fichero de log, por defecto, /var/log/arpon.log.
Ahora, editamos el archivo /etc/arpon.sarpi para adecuarlo a nuestra red, en mi caso:
        # Gw192.168.0.1     10:c6:1f:3e:20:c8
Levantamos el servicio, que dependerá de nuestra distribución. Dado que estoy utilizando ArchLinux, sería así:
sudo systemctl start arpon
Para que sea permanente:
sudo systemctl enable arpon
Lo primero que hace el daemon es limpiar la caché ARP. Aquí podemos ver el log inicial:
11:20:07 WAIT LINK on enp2s5…
11:20:12 HARPI on
DATE = <11/03/2013>
DEV = <enp2s5>
HW = <0:19:21:c0:19:fc>
IP = <192.168.0.2>
CACHE = </etc/arpon.sarpi>
11:20:18 ARP cache, REFRESH
src HW = <10:c6:1f:3e:20:c8>
src IP = <192.168.0.1>
Antes de nada, veamos cuál es la caché de ARP, sin ArpON levantado:
$arp -eAddress                  HWtype  HWaddress           Flags Mask            Iface192.168.0.1              ether   xx:xx:xx:3e:20:c8   C                     enp2s5
Ahora realizaremos un ataque con ettercap, desde el equipo atacante, ejecutamos:
$sudo ettercap -T -M arp /192.168.0.2/ /192.168.0.1/
En el equipo víctima, ejecutamos:
$arp -eAddress                  HWtype  HWaddress           Flags Mask            Iface192.168.0.21             ether   00:1c:bf:5a:ed:f0   C                     enp2s5192.168.0.1              ether   00:1c:bf:5a:ed:f0   C                     enp2s5
El equipo atacante es el 192.168.0.21. Cómo podemos ver, ha cambiado nuestra tabla, haciendo que todo el tráfico de la puerta de enlace pase por él.
Ahora, levantemos el ArpON:
$ sudo systemctl start arpon
$ arp -e
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.21                     (incomplete)                              enp2s5
192.168.0.1              ether   xx:xx:xx:3e:20:c8   C                     enp2s5

Cómo podemos ver, ha devuelto la MAC de la puerta de enlace a su estado correcto. Volvamos a repetir el ataque. En este caso, la MAC no la puede cambiar:
$ arp -e
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.21             ether   00:1c:bf:5a:ed:f0   CM                    enp2s5
192.168.0.1              ether   xx:xx:xx:3e:20:c8   CM                    enp2s5
Si repetimos el ataque con ArpON levantado, pero en modo DARPY, podemos ver lo siguiente en log de ArpOn:
12:13:40 WAIT LINK on enp2s5…
12:13:50 DARPI on
DATE = <11/03/2013>
DEV = <enp2s5>
HW = <0:19:21:c0:19:fc>
IP = <192.168.0.2>
12:13:51 ARP cache, ACCEPT
src HW = <XX:XX:XX:3e:20:c8>
src IP = <192.168.0.1>
12:13:56 ARP cache, ACCEPT
src HW = <XX:XX:XX:3e:20:c8>
src IP = <192.168.0.1>
12:14:04 ARP cache, ACCEPT
src HW = <0:1c:bf:5a:ed:f0>
src IP = <192.168.0.21>
12:14:05 ARP cache, DENY
src HW = <XX:XX:XX:5a:ed:f0>
src IP = <192.168.0.1>
Primero, limpia la caché ARP, actualiza los valores legítimos y, tal cómo podemos ver en el log, deniega las peticiones de la máquina atacante.
Pues esto es todo por hoy. Hemos visto qué fácil es hacer un ataque ARP y una herramienta que nos permite, de manera muy sencilla, defendernos del mismo. Espero que os sea útil.
Artículo cortesía de María José Montes Díaz

1 comentario:

  1. Muy buen tip. Pero no tengo claro como configurar /etc/arpon.sarpi, ¿hay que poner el mac del router o del pc?

    ResponderEliminar