04 mayo 2011

ArpON para defenderse de ARP Spoofing/Poisoning y otros vicios

ArpON es un programa que pretende securizar ARP para mitigar ataques de tipo Man In The Middle (MITM) mediante ARP Spoofing/Poisoning, además de detectar y bloquear ataques derivados más complejos del estilo de DHCP Spoofing, DNS Spoofing, WEB Spoofing, Session Hijacking y SSL/TLS Hijacking.

Está pensado para funcionar en modo demonio, y actualmente está adaptado para sistemas GNU/Linux, Mac OS X, FreeBSD, NetBSD y OpenBSD.

Podemos encontrarlo en los repositorios de algunas distribuciones de GNU/Linux, o descargarlo desde su sitio web, donde hace unos pocos días publicaron la versión 2.2.

Implementa los siguientes algoritmos:
- SARPI - Static ARP inspection: Redes sin DHCP. Utiliza una lista estática de entradas y no permite modificaciones.
- DARPI - Dynamic ARP inspection: Redes con DHCP. Controla peticiones ARP entrantes y salientes, cachea las salientes y fija un timeout para la respuesta entrante.
- HARPI - Hybrid ARP inspection: Redes con o sin DHCP. Utiliza dos listas simultaneamente.

Una vez instalado la activación no es muy compleja. Tendremos que editar su fichero de configuración (/etc/default/arpon en Debian) para definir un algoritmo, la interfaz, el log y fijar el inicio en el arranque.

En modo DARPI, el log nos informa de las peticiones ARP entrantes que podrían ser un ataque, su bloqueo, y las peticiones verídicas.

  12:12:35 - Wait link connection on wlan0...
  12:12:43 - DARPI on dev(wlan0) inet(192.168.1.2) hw(ca:fe:ca:fe:ca:fe)
  12:12:43 - Deletes these Arp Cache entries:  # Al inicio se borran las entradas.
  12:12:43 - 1)     192.168.1.1 ->   fa:ba:da:fa:ba:da
  12:12:43 - Cache entry timeout: 500 milliseconds.
  12:12:43 - Realtime Protect actived!  # Protección activada.
  12:12:44 - Reply   << Delete entry  # Intentos de ARP Spoofing (entradas no verídicas).
192.168.1.1 -> fa:ba:da:fa:ba:da
  12:12:54 - Reply   << Delete entry
192.168.1.1 -> fa:ba:da:fa:ba:da
  12:13:04 - Reply   << Delete entry
192.168.1.1 -> fa:ba:da:fa:ba:da
  12:13:06 - Request >> Add entry 192.168.1.1  # Petición propia de refresco.
  12:13:06 - Reply   << Refresh entry 192.168.1.1 -> be:be:be:be:be:be  # Entrada verídica (respuesta dentro del timeout).

En mi caso no ha funcionado bien el arranque al inicio, ya que no detectaba la interfaz. Además, prefiero elegir en qué interfaz activar la protección y cuando, por lo que he hecho un script para lanzarlo cuando lo desee (algoritmo DARPI).

#!/bin/bash

if [ $# -ne 1 ]; then
        echo "Help: enable-arpon interface"
        echo "  Ex: enable-arpon eth0"
else
        /usr/sbin/arpon -q -f /var/log/arpon/arpon.log -g -d -i $1
fi

Como bien comentan en la documentación, la protección ideal sería tener todas las interfaces de la red protegidas con ArpON para conseguir una protección bidireccional en las comunicaciones.

Sin duda, un demonio que no debería faltar en ninguna máquina que se pasee por redes extrañas de cuando en cuando.

12 comments :

Luther blissett dijo...

De los poquísimos blogs que no repiten y repiten lo de siempre. Felicidades.

Oscarinside dijo...

A mi sí que me ha funcionado bien al arrancar.
Pero el hay que descomentar el modo que quieras usar, tanto SARPI como DARPI, y habilitar el RUN="yes" el archivo por defecto de configuración al que apunta el script de arranque en init.d

/etc/default/arpon

De tal forma que ese archivo contenga por ejemplo, para SARPI, lo siguiente:

DAEMON_OPTS="-d -f /var/log/arpon/arpon.log -g -y"
RUN="yes"

Un saludo.

Alberto Ortega dijo...

En mi caso, como comentaba, no detecta la interfaz (probado con la Wifi) y el demonio se queda parado sin reintentarlo pasado un tiempo.

Al final me ha venido bien, porque prefiero activarlo solo en ciertas ocasiones (redes no confiadas), gustos personales :)

Hydria dijo...

Estoy un poco perdido, descomento eso, arranca, si, utilizo la configuracion SARPI, he echo un ARP poisoing para provar a ver que tal, y no avisa ni nada, eso si, si entro en /var/log/arpon/arpon.log, allí sale reflejado, hay alguna manera de que te avise, o algo algo mal ( lo mas seguro xD con lo malo que soy)

Felicidadesa por el blog es una pasada ;)

Alberto Ortega dijo...

¿Estás en una red con DHCP? Si es así, recuerda que deberás utilizar DARPI (no SARPI).

En caso de usar DARPI, descomentar el modo DARPI y RUN="yes"

En caso de usar SARPI, descomentar el modo SARPI, RUN="yes" y configurar el fichero /etc/arpon.sarpi con las MACs / IPs estáticas, ya que ArpON leerá esa lista y evitará modificaciones.

En ambos modos, la información del programa se guarda únicamente en el log, no hay ningún aviso gráfico ni nada parecido. Para hacer eso tendríamos que desarrollar algún script que lo hiciera, o algo parecido.

Un saludo!

fon dijo...

Hazte un demonio que vaya leyendo el log, y si ve algo raro que te saque una alertilla, no creo que sea muy difícil, saludos

Hydria dijo...

Gracias por las respuestas,mañana ya os lo comentare, en el trabajo hay mucho lammer que le ha dado por el ARP y dar por el culo, i vamos com IP staticas, por eso digo lo de SARPI, como alternativa a un SNORT, gracias por la info, mañana intentare hacer el demonio.

PD: Si, tenemos un super administrador de redes jajajaja

solnet dijo...

solnet
mantenimiento informatico madrid
http://www.solnetcs.com

Jan Carreras dijo...

Para que "avise" es suficiente ejecutar este comando:


tailf /var/log/arpon/arpon.log | grep Delete | osd_cat --align center --delay 9 --offset 25 --lines 12 &


Así os irá apareciendo en la pantalla todas aquellas peticiones que ARPON ha ignorado.



Nota: para instalar "osd_cat" teneis que instalar el paquete "xosd-bin".

kmlreverser dijo...

Lo acaba de probar y realizando un mimt con ettercap y no funciona si dice que recibes un mimt pero no hace nada.....

maravento dijo...

saludos. el caso concreto es un servidor proxy ubuntu que administra una red wifi, pero el servidor no es wifi, sino por la eth0 entra el modem de internet y la eth1 va para la "red local" (en realidad es un switch que va para los AP y es donde los usuarios se conectan. No hay utp). En este caso se instalará apton en el servidor. Cuál se debe descomentar? Gracias

maravento dijo...

...y se maneja asignacion ip estáticas y dhcp