Arpoison: Suplantación de MAC en ARP
Arpoison: Suplantación de MAC en ARP
Resumen—La suplantación de dirección MAC mediante el También se debe anotar el uso de una tabla (o caché) para
ARP spoofing es una gran preocupación para la comunidad en mantener las últimas direcciones usadas por el computador,
general. Se plantea una herramienta para ilustrar esta esta tabla es actualizada a ciertos intervalos de tiempo que
debilidad, Arpoison y se concluye que es necesario encontrar dependen del sistema operativo, o cuando la dirección
mecanismos para evitar la alteración de las tablas ARP con requerida no se encuentra en la tabla, en este caso se envía un
base en los sistemas operativos. “broadcast” 3 en la red con un formato de ARP request 1, que
básicamente pregunta a todas las máquinas en el segmento si
Palabras claves—ARP, spoofing suplantación, MAC, man-in- su IP corresponde a la especificada en la petición. La
the-middle, Arpoison.
máquina que concuerda debe responder con un ARP reply 2 al
computador que hizo la solicitud. [1] Dicha respuesta incluirá
la dirección física del hardware e información sobre el
I. INTRODUCCI ÓN enrutamiento (esto si el paquete ha pasado por diferentes
tarjeta de red en modo promiscuo 5 capte paquetes que están tabla se reconstruye, lo mismo sucede cuando se envían los
dirigidos a otras máquinas, o que se envíen paquetes ARP ARP reply.
mal formados (que se explicará más adelante) que el
protocolo no comprueba, o también se puede aprovechar el Cuando el switch recibe un paquete, éste sólo leerá el
hecho de que el protocolo recibe paquetes incluso si la encabezado 802.3 o el Ethernet, como ya se especificó que
máquina no los necesita, con lo que se refresca la tabla con ocurre en un switch de nivel 2. Así la dirección MAC de
los nuevos datos recibidos, y estos datos pueden ser erróneos destino se comparará con la tabla local de ARP encontrando
o alterados a propósito. la dirección buscada. Suponiendo que el destinatario IP es
169.254.0.1, la fuente IP es 169.254.0.2 y tanto el
Debido a las falencias descritas anteriormente del protocolo destinatario como la fuente MAC son ABCDEF000001 y
ARP, si se altera un paquete usado en la comunicación entre ABCDEF000002 respectivamente, entonces el host detrás del
dos máquinas se podría suplantar la dirección MAC de una puerto 1 es el destino y el switch envía el paquete al host 1.
de ellas, realizando el ataque conocido como “Man in the
Middle” [6,2,4] o se podría dejar a una de las máquinas por El paquete no pasará sobre la interfaz de red en el host 3. Así
fuera de la “conversación” ya que el otro computador tendría se deduce porqué un sniffer no sería de mucha utilidad, ya
una dirección errada a la cual enviar todos los paquetes y que, aunque su aparato de red este en modo promiscuo, éste
éstos nunca llegarían a su verdadero destino. no podrá interceptar paquetes destinados para su vecino.
A continuación se explicará un escenario en el cual se podrá
analizar porqué no se pueden interceptar los paquetes en un Continuando con el ejemplo, se pretende enmascarar
segmento basado en un switch [5]. múltiples direcciones MAC en el puerto 3 del switch, para
este caso se busca enmascarar una dirección MAC extra en
En primer lugar hay tres hosts, el host 1 tiene como sistema dicho puerto. Entonces la tabla MAC del host "detrás" del
operativo Unix, con un demonio 6 FTP; el host 2 es la puerto 3 se vería así:
estación de trabajo del administrador de la red y el host 3 es ABCDEF000003 & ABCDEF000001
su computador. Estos host están conectados a través de un para que cuando el host 2 envíe un paquete al host 1, el
switch de nivel 27 como lo muestra la siguiente tabla. switch encuentre dos ocurrencias de la dirección MAC
destino, logrando el cometido de recibir al igual que el host 1
Hosts Puerto(en MAC IP el paquete destinado únicamente a este último [5].
el switch)
Host 1 Puerto 1 ABCDEF000001 169.254.0.1 Esto parece muy fácil, pero tiene muchas complicaciones,
Host 2 Puerto 2 ABCDEF000002 169.254.0.2
Host 3 Puerto 3 ABCDEF000003 169.254.0.3
una de ellas es que algunos switches se actualizan cada 30
segundos de la manera indicada antes, enviando ARP
En este caso vamos a suponer que el kernel del host (núcleo requests a todos los hosts que están físicamente conectados a
del sistema operativo del servidor) 2 está construyendo un éste, en otros casos sucede que no se permite asignar más de
paquete y el destino será el host 1, éste se verá así: una dirección MAC a cada puerto, esto con la desventaja del
precio que piden por ellos [5], como pasa en los switches de
Encabezado TCP 3COM8.
Encabezado IP
Encabezado 802.3
Datagrama
II.METODOLOGÍA
Prot Ip IP MAC origen MAC destino
ocol origen destino A. Materiales.
o
Enc. X X X X • Máquina 1
TCP
Enc. 169.254. 169.254. X X
neptune.localdomain.local (atacante)
IP 0.2 0.1 Pentium 4 2.4GHz
Enc. X X ABCDEF000002 ABCDEF000001 512MB RAM
802.3
Datag X X X X 80GB Disco
rama Mandrake Linux 9.1
Tarjeta de red 100Mbit/s
Cuando el switch se inicia, construye una tabla de
direcciones MAC de todos los Hosts que están conectados a
• Máquina 2.
éste. Cada vez que se envían ARP requests sobre la red la
pluto.localdomain.local (víctima)
5
Promiscuo: Está escuchando todo el tráfico que pasa por la red 486 20MHz
a la cual está conectado 20MB RAM
348MB Disco
6
Demonio FTP: Programa que se dedica a escuchar peticiones Windows 95
ftp de la red.
87
7
La expresión "nivel 2" referencia a la capa de enlace de datos Empresa proveedora de hardware para redes,
del modelo OSI (Open System Interconnection.) http://www.3com.com
3
Y este software, a su vez, depende de una herramienta Primero, se determina la dirección MAC de la máquina que
llamada libnet para su correcto funcionamiento. se quiere atacar, para esto podemos hacer ping a ésta, y luego
utilizar el comando arp -a para ver la dirección MAC:
Libnet: http://www.packetfactory.net/libnet/
[root@neptune root]# ping 192.168.0.10
Luego, se procedió a compilar el código fuente de la PING 192.168.0.10 (192.168.0.10) 56(84) bytes of data.
herramienta. Para esto se ejecutan los siguientes comandos 9. 64 bytes from 192.168.0.10: icmp_seq=1 ttl=32 time=1.62
ms
# Copiar los archivos que se bajaron a un directorio 64 bytes from 192.168.0.10: icmp_seq=2 ttl=32 time=0.961
temporal: ms
cp arpoison-0.6.tar.gz /temp 64 bytes from 192.168.0.10: icmp_seq=3 ttl=32 time=0.953
cp libnet.tar.gz /temp ms
# Descomprimir los archivos que se bajaron, al directorio --- 192.168.0.10 ping statistics ---
temporal: 3 packets transmitted, 3 received, 0% packet loss, time
tar -zxvf libnet.tar.gz 2020ms
tar -zxvf arpoison-0.6.tar.gz rtt min/avg/max/mdev = 0.953/1.178/1.622/0.315 ms
[root@neptune root]# arp -a
# Cambiar al directorio de libnet: ? (192.168.0.10) at 00:A0:24:64:E8:C0 [ether] on eth0
cd Libnet-latest ? (192.168.0.10) at 00:A0:24:64:E8:C0 [ether] on eth0
[root@neptune root]#
# Compilar e instalar libnet:
./configure Otra posibilidad, quizás un poco menos elemental, es
make interpretar el tráfico del ping. Para todas las capturas de
make install (se debe tener permisos de root [8]) tráfico, utilizamos tcpdump, que es una herramienta
disponible para cualquier sistema operativo (UNIX o
# Cambiar al directorio de arpoison: windows)10.
cd ../arpoison
El tráfico completo puede ser visto en el anexo No.2. Se ha El tráfico completo puede ser visto en el anexo No. 3.
resaltado la parte donde puede ser identificada la dirección
MAC de la máquina destino. El resto de la captura
C. Conclusión
corresponde a solicitudes ICMP y a respuestas ICMP
principalmente, ya que la captura corresponde a un ping.
Se realizó una captura completa de 4 paquetes enviados por
Ahora, ya se tiene toda la información que se necesita para arpoison, pero en el primero que se envía, se puede ver que
llevar a cabo la incomunicación de los dos sistemas (Se lleva es lo que realiza, vamos a analizarlo:
a cabo una incomunicación de un solo sentido, donde la 09:07:36.650287 arp reply 192.168.0.5 is-at aa:bb:cc:dd:ee:0
máquina atacada no puede conectar a la máquina que 0001 0800 0604 0002 aabb ccdd ee00 c0a8
especifiquemos, pero la comunicación en sentido inverso se 0005 00a0 2464 e8c0 c0a8 000a
lleva a cabo de manera exitosa).
El primer renglón, es solo la traducción que realiza tcpdump
B. Manejo de Arpoison. del paquete, y no se analizará. Lo interesante, es el volcado
Primero, aprendemos a utilizar la herramienta arpoison, lo hexadecimal que realiza. ¿Qué significa? es lo que veremos.
cual es bastante sencillo: Se va a analizar parte por parte:
comprobar estas observaciones se hizo un nuevo ping desde cabo, y permiten afinar los métodos de búsqueda y detección
el computador 3 a la máquina 2, y como se esperaba esta usados.
última nunca contestó ya que la máquina 3 intentaba Debería ser claro en este punto que saber la dirección MAC
contactarse con una dirección inexistente, así en términos de cada maquina no debería dejarse a la configuración
prácticos la máquina 2 dejó de existir para la 3.” Por esto automática usada en un protocolo o instalación de un switch.
podemos concluir que una persona inescrupulosa podría A menos que se controle el proceso de ARP, “poisoning” y
potencialmente observar TODA comunicación no encriptada “sniffing” pueden ocurrir. La manifestación de este problema
que viaje por la red, utilizando una herramienta de fácil puede causar desde reducir el tiempo de respuesta en la red,
acceso y de todavía más sencillo manejo, generando un falla hasta el daño de todo el tráfico de red. Este problema puede
gigantesca en los niveles de seguridad de cualquier red. ser detectado únicamente a través de otro “sniffer” para ver
que es lo que esta pasando a nivel de MAC o mirando las
A. ¿Cómo evitarlo? tablas ARP en ambos lados, la maquina del cliente y la del
servidor.[14]
¿Estamos totalmente desprotegidos y en cualquier momento
nos pueden dejar incomunicados? En este punto es necesario identificar las direcciones MAC
de cada computador y cada “gateway” de la LAN. Correr un
Si existen maneras de evitar este ataque, pero casi nunca se ipconfig /all en Microsoft Windows NT mostrará la
implementan. Sin embargo, un análisis más profundo de la dirección MAC de la tarjeta Ethernet. También mostrará las
tecnología nos indica lo siguiente: ya que los ataques ARP se direcciones MAC de los adaptadores virtuales VPN, Sun
aprovechan de la falta de seguridad en un protocolo de bajo Solaris y Linux usan el comando ifconfig –a, mientras que
nivel y que es requerido por TCP/IP para funcionar, no se FreeBSD usa dmesg. Las máquinas Microsoft Windows 9x
puede corregir sin alterar el funcionamiento mismo de ARP, usan el comando winipcfg. [12,16,17]
lo cual no es una tarea sencilla si se tiene en cuenta que,
como se mencionó antes, hay diferentes implantaciones del Armado con la lista de direcciones MAC, el sistema puede
protocolo debido a su estrecha conexión con la máquina en la ahora ser asegurado. Es recomendable un script de login que
que corre. Pero si se puede prevenir, o al menos intentar, automatice el comando arp –s para guardar todos las IP de
usando alguna de las siguientes técnicas [10]. los hosts y sus direcciones MAC.[14]
-Si se quiere proteger una red pequeña se puede recurrir al Reemplazar tarjetas de red inconsistentes va a requerir
uso de direcciones IP estáticas y tablas ARP también cambios adicionales en cada host. Los sistemas tales como
estáticas. Usando comandos CLI, "ipconfig/all" en Windows impresoras no tendrán la capacidad de guardar una lista de
o "ifconfig" en sistemas Unix (Linux), [12,16,17] se puede direcciones MAC estáticas, la mayoría de los switches tienen
obtener las direcciones MAC de todos los dispositivos una opción de puerto de seguridad que permite únicamente
conectados a dicha red. Si se usa el comando "arp -s" se una dirección MAC por puerto(así reduciendo el “sniffing”).
pueden adicionar entradas estáticas para todos los SSH tiene una opción de StrictHostKeyChecking. Ésta opción
dispositivos conocidos. Usando estas entradas estáticas se especifica si SSH va a automáticamente agregar nuevas
evita que los intrusos alteren las tablas a su gusto pudiendo llaves de host a su archivo de hosts conocidos. Con esta
aprovechar todas las debilidades ya explicadas. Incluso se opción configurada a SI(YES), el computador atacante no
puede crear un script que llene estas entradas estáticas en los podrá “entrar en el medio” a menos que ya sea un host de
computadores cada vez que estos sean reiniciados [10, 13]. confianza(trusted host). [11,13,15]
El problema con esta solución es la gran dificultad para Teniendo un archivo de hosts estático y listando los nombres
mantener estas entradas ARP, y si se piensa en redes grandes DNS, también se reducirán los ataques basados en DNS, es
es casi imposible llevar a cabo esta labor, ya que cada vez recomendable usar ambos sistemas para alta seguridad. Hay
que un nuevo computador o máquina se conecte a la red se que tener en cuenta que algunas versiones de Microsoft
debe actualizar las entradas en el script que llena las tablas Windows aceptarán y usarán rutas dinámicas inclusive si las
ARP, o se debe adicionar manualmente a las tablas ARP de rutas estáticas han sido configuradas [17].
todas las demás máquinas en la red.[11]
Con los hosts ahora cerrados, es importante monitorear el
Para redes grandes se tendría que analizar las características tráfico ARP y DNS. Aunque la mayoría de IDS monitorean a
de "Port Security" de los switches, una de estas nivel de IP y no de ARP.
características permite forzar al switch a permitir sólo una
dirección MAC para cada puerto físico en el switch, lo cual La siguiente es una herramienta que puede ser usada para el
impide que alguien cambie la dirección MAC de su máquina monitoreo a nivel ARP:
o que trate de usar más de una dirección a la vez. Esto último
permite prevenir los ataques de Man-in-the-Midle.[10] ARPWATCH11
Arpwatch contiene 2 utilidades diseñadas para monitorear las
Para todas las redes la mejor defensa es entender los métodos tablas IP/MAC y enviar por mail cualquier cambio. Es una
y comportamientos de ARP poisoning y monitorear en busca pieza de software bastante simple, acá se encuentran algunos
de estos comportamientos sospechosos usando herramientas ejemplos de lo que se mostraría en el archivo
como ARPWatch, explicada a continuación, que alertan /var/log/messages.
cuando alguna comunicación ARP sospechosa es llevada a 11
http://www.redhat.com/swr/i386/arpwatch-2.1a4-29.i386.html
6
AGRADECIMIENTOS
Todos los autores agradecemos comedidamente a nuestros
familiares y compañeras sentimentales, por el apoyo en todo
momento, y a nuestro Profesor Jeimy Cano por su invaluable
aporte a nuestro crecimienco académico y profesional.
REFERENCIAS
[1] Wagner, R. “Address Resolution Protocol Spoofing and Man-in-the-
Middle Attacs:” in Practical Assignment GSEC Version 1.2 f
(amended August 13 2001.