El ARP Spoofing, también
conocido como ARP Poisoning o ARP Poison Routing, es una técnica
usada para infiltrarse en una red Ethernet y permite al atacante
husmear los paquetes de datos en la LAN, modificar el tráfico, o
incluso detener el tráfico.
El principio del ARP
Poisoning es enviar mensajes ARP falsos a la Ethernet, con la
finalidad de asociar la dirección MAC del atacante con la dirección
IP de otro nodo, como por ejemplo la puerta de enlace predeterminada
(gateway o router).
Por lo que cualquier
tráfico dirigido a la dirección IP de ese nodo, será enviado al
atacante y el atacante puede elegir entre reenviar el tráfico a la
puerta de enlace predeterminada real (ataque pasivo o escucha), o
modificar los datos antes de reenviarlos (ataque activo). El atacante
puede incluso lanzar un ataque de tipo DoS (Denegación de Servicio)
contra una víctima, asociando una dirección MAC inexistente a la
dirección IP de la puerta de enlace predeterminada de la víctima.
El ataque de ARP
Poisoning puede ser ejecutado desde una máquina controlada, un Jack
Box, o bien la máquina del atacante está conectada a la LAN
Ethernet.
Para defenderse de un
ataque por ARP Poisoning tenemos que mantener estática la IP y MAC de la puerta de enlace en las tabla ARP. Al mantener estática nuestra
tabla ARP, nos aseguramos de que no van a modificar la entrada de
nuestra tabla ARP y tampoco podrán redireccionar el tráfico de la
puerta de enlace y sufrir un ataque de envenenamiento ARP desde un
programa como puede ser Cain y Abel.
Para defendernos tenemos
que saber que IP y que MAC tiene nuestra puerta de enlace, y luego la
sustituimos con el comando que le corresponda según el sistema que
estemos usando.
Para ver la tabla ARP en
Windows, Linux o Mac, tenemos que lanzar este comando en la consola: arp -a (-A para Mac)
Cuando lanzamos este comando nos dará la siguiente información de la tabla ARP: IP del nodo, MAC del nodo y el tipo que puede ser estática o dinámica, por lo que tendremos que cambiar el tipo de la puerta de enlace que sea de tipo estático.
Para poder cambiar el tipo de la tabla ARP, tendremos que lanzar en la consola de comando las siguiente línea: arp -s IP del nodo MAC del nodo (-S para Mac)
Ejemplo: arp -s 192.168.1.1 ff-ff-ff-ff-ff-ff
El problema es que cuando reiniciemos la tabla ARP desaparecerá, y para hacer que la tabla ARP sea persistente tenemos que crear un archivo por lotes o que se lance esta línea de comandos cuando se inicie el sistema.
Para hacer que la tabla ARP quede persistente abrimos el bloc de notas y escribimos la línea de comandos que hemos puesto en el ejemplo y este archivo lo guardamos no como .txt, sino como .bat y le damos el nombre que queramos como por ejemplo: staticarp.bat
Una vez creado este archivo se configura la directiva en el equipo local:
Inicio ->Ejecutar -> gpedit.msc
Cuando se abre la ventana de Directiva de grupo, nos dirigimos a:
Configuración de Windows -> Archivos de comandos
Y hacemos clic dos veces sobre inicio.
Pulsamos el botón de Agregar, y con el botón de Examinar seleccionamos el archivo .bat que hemos creado, por ejemplo staticarp.bat y finalmente pulsamos el botón de Aceptar.
Otra forma para hacer persistente la tabla ARP es escribir en la casilla de texto:
Nombre del archivo de comandos: arp
En la casilla de texto:
Parámetros del archivo de comandos: -s 192.168.1.1 ff-ff-ff-ff-ff-ff
Y pulsamos el botón de Aceptar.
Persistencia en Linux:
Para hacer persistente la tabla ARP en Linux tenemos que crear un archivo .sh que es el equivale an archivo .BAT de MSDOS, con la diferencias siguientes:
- No tiene que terminar con la extensión .bat, es más si se quiere no tiene porqué tener extensión.
- Tiene que tener permisos de ejecución (chmod 755).
- Puede ser muy complejo.
En realida es un archivo de texto, con una lista de comandos, que se ejecutan en el orden que esten de forma automática, del mismo modo que si los escribes uno a uno en una consola o una terminal.
El script que tenemos que crea y guardar con extensión .sh, en el directorio /etc/init.d/, con premisos de ejecución (chmod 755 nombre_archivo.sh), es el siguiente:
#!/bin/bash
arp -s $(route -n | awk '/^0.0.0.0/ {print $2}') \ $(arp -n | grep route -n | awk '/^0.0.0.0/ {print $2}' | awk '{print $3}')
Este archivo lo podemos crear por ejemplo con gedit y lo guardaremos con el nombre de staticarp.sh, una vez creado lazaremos los sigientes comandos:
Cambiamos los permisos y le damos permiso de ejecución:
antonio@antonio:~/Escritorio$ sudo chmod 755 staticarp.sh
antonio@antonio:~/Escritorio$ ls -l staticarp.sh
-rwxr-xr-x 1 antonio antonio 138 2011-03-31 19:20 staticarp.sh
Cambiamos el propietario y el grupo del archivo:
antonio@antonio:~/Escritorio$ sudo chown root:root staticarp.sh
antonio@antonio:~/Escritorio$ ls -l staticarp.sh
-rwxr-xr-x 1 root root 138 2011-03-31 19:20 staticarp.sh
Y lo movemos (mv) o copiamos (cp) al directorio /etc/init.d:
antonio@antonio:~/Escritorio$ sudo mv staticarp.sh /etc/init.d/
Una ver realizados estos paso, creamos las referencias con el siguiente comando:
antonio@antonio:~/Escritorio$ sudo update-rc.d staticarp.sh default
Y ya tenemos nuestra tabla ARP estática en Linux.
Espero que os haya servido de ayuda, un saludo:
Antonio
Comentarios
Saludos desde México.
Espero que lo mismo que te ha resultado útil a ti, le sea útil a tod@s.
Un saludo desde España:
Antonio
Felicidades y sigue adelante.
Saludos
Publicar un comentario
Dejanos tu opinión o comentario, entre todos podemos aprender más sobre los temas que se tratan en este Blog. No te olvides seguidme en Twitter, YouTube o Facebook. Muchas gracias por tu tiempo. 👋😎