Ataque y Construcción de Paquetes RIP con Scapy en Python
Resumen
¿Cómo entender y ejecutar ataques Man-in-the-Middle con Scapy?
El conocimiento profundo de cómo funcionan los ataques Man-in-the-Middle (MITM) a bajo nivel resulta esencial para cualquier profesional de ciberseguridad. En esta guía, aprenderemos a ejecutar un ataque de este tipo utilizando vulnerabilidades encontradas en protocolos de enrutamiento, concretamente con la herramienta Scapy desarrollada en Python. Scapy permite un control detallado del paquete y proporciona una flexibilidad única para diseñar y modificar tráfico a bajo nivel.
¿Qué es el protocolo RIP y cómo se puede vulnerar?
Antes de adentrarnos en el manejo de Scapy, es crucial analizar el protocolo RIP (Routing Information Protocol), utilizado para actualizar tablas de enrutamiento automáticamente en redes. Algunas características del protocolo RIP incluyen:
Dirección de broadcast específica: RIP envía actualizaciones a la dirección 224.0.0.9.
Información propagada: Contiene la dirección de red anunciada y su métrica (distancia en saltos a la red).
Uso del protocolo UDP: Opera utilizando el protocolo UDP en el puerto 520.
Para un ataque eficaz, analizaremos cómo utiliza RIP estas características para enviar actualizaciones y así intervenir en su funcionamiento.
¿Cómo construir paquetes personalizados con Scapy?
Scapy es una herramienta versátil que permite crear, enviar y analizar paquetes en redes. Para construir un paquete RIP manualmente, seguimos los siguientes pasos:
Iniciar Scapy en modo Python: Usar la consola interactiva de Python para construir los paquetes paso a paso.
Construcción del paquete de red:
from scapy.allimport*# Creación de una trama Ethernetether = Ether()# Creación del paquete IP con destino a la dirección de broadcast de RIPip = IP(dst="224.0.0.9")# Definición del puerto origen y destino en UDPudp = UDP(sport=520, dport=520)# Construcción y encapsulado del paquete completopaquete = ether/ip/udp
sendp(paquete, iface="eth0")
Envío del paquete: Usar el comando sendp para enviar el paquete a través de la interfaz de red adecuada.
Al terminar de construir, el paquete será capturado por un sniffer, mostrando las capas de ether, IP y UDP correctamente estructuradas.
¿Cuáles son las mejores prácticas para construir ataques automatizados?
El uso eficiente de herramientas como Scapy no solo permite la ejecución de pruebas puntuales de seguridad sino también diseñar scripts que automaticen ataques complejos:
Automatización con scripts: Crear scripts que reaccionen a paquetes específicos, simplificando así la gestión del tráfico.
Integración con otras herramientas: Diseñar estructuras de ataque más robustas combinando scripts de Scapy con otras herramientas de seguridad como Ettercap.
Conocer los fundamentos de Python: Aprovechar cursos como el de Python en Platzi para un mejor manejo de Scapy y otras librerías de automatización.
Conclusión
En resumen, comprender cómo se construyen y manipulan los paquetes de red con herramientas como Scapy no solo refuerza el conocimiento técnico, sino que abre un abanico de posibilidades para la creación de proyectos de seguridad personalizados y efectivos. Dominar estos conceptos es esencial para cualquier profesional interesado en la ciberseguridad y el análisis de redes. Continúa explorando y perfeccionando tus habilidades técnicas para mantenerte a la vanguardia en este campo.
Para los que se preguntan como prevenir estos ataques:
-Configurar Passive interfaces en Routers (Permite decirle al protocolo de enrutamiento que evite enviar actualizaciones a determinada interfaz de red)
-Configuración de Autenticación de Protocolos (Permite que un determinado Router participe a compartir sus rutas por medio de una llave cifrada que solo los Administradores de Red deberían saber)
Excelente aporte
Gracias por el aporte.
Aquí se puede ver claramente que estamos jugando con 3 capas del modelo OSI en Scapy
Enlace de datos
a = Ether() -> una trama ethernet
Red
b = IP (dir orgien (maquina), dir destino (broadcast rip),ttl(saltos al progarse(always 1))) -> un paquete IP
Transporte
c = UPD(puerto origen rip ,puerto destino rip 520) -> protocolo UDP capa de transporte
construir el encapsulado
packet = a/b/c
Se agrupa el contenido de la trama Ethernet
packet
<Ecabezado | Paquete IP | Payload del paquete IP>
sendp(packet,iface='eth0') -> enviar el paquete por medio de la interface eth0
Gracias por el aporte.
Encapsulado de paquetes con Scapy
Es una herramienta de bajo nivel construida con Python que nos permite hacer un encapsulado de paquetes y cambiar los parámetros de estos paquetes por aquellos que nosotros deseemos.
Para esto debemos tomar como referente el protocolo RIP (Routing Information Protocol) quien es el encargado de determinar la mejor ruta a seguir para la transmisión de paquetes.
Validar en Wireshark el protocolo RIP para encontrar: puertos, ips, broadcast ip, entre otra información que usaremos para construir los paquetes.
Accedemos a la herramienta Scapy por medio de la consola:
scapy
Ahora, vamos a empezar con la configuración de los paquetes UDP:
a =Ether()b =IP(src="192.168.10.101", dst="224.0.0.9", ttl=1)c =UDP(sport=520,dport=520)packet = a/b/c
sendp(packet,iface="eth0")
Validamos la aparición de un paquete UPD en el tráfico con Wireshark.
Gracias por el aporte.
Scapy es un poderoso programa interactivo de manipulación de paquetes. Es capaz de falsificar o decodificar paquetes de una gran cantidad de protocolos, enviarlos por cable, capturarlos, emparejar solicitudes y respuestas, y mucho más. Puede manejar fácilmente la mayoría de las tareas clásicas como escanear, trazar rutas, probar, pruebas unitarias, ataques o descubrimiento de redes (puede reemplazar hping, 85% de nmap, arpspoof, arp-sk, arping, tcpdump, tshark, p0f, etc.). También funciona muy bien en muchas otras tareas específicas que la mayoría de las otras herramientas no pueden manejar, como enviar marcos no válidos, inyectar sus propios marcos 802.11, combinar técnicas (salto de VLAN + envenenamiento de caché ARP, decodificación de VOIP en canal encriptado WEP, ... ), etc.
Gracias por el aporte.
eso quiere decir que tambien se pueden modificar los protocolos tcp y modificar las banderas manualmente?
Pues claro
Por si alguien no le sale nigún paquete de RIP en Wireshark en Kali Linux, deben instalarlo con el comando: sudo apt install frr frr-pythontools.
PD: Deben tener uno de los Adaptadores de red en su MV de Kali a NAT para poder instalarlo.
PD2: Cuando apagan la máquina para poder agregar un segundo adaptado de Red en Kali es muy probable que el archivo resolv.conf se borre y deban poner de nuevo lo siguiente:
Guardamos los cambios con CTRL + X --->y-->enter
PD3: para ir al archivo de resolv.conf se usa el comando: nano resolv.conf
El encapsulado de paquetes con Scapy proporciona una herramienta poderosa para la creación, manipulación y análisis de paquetes de red. Esto es útil para tareas de prueba de seguridad, análisis de tráfico de red y diagnóstico de problemas de red. La flexibilidad y capacidad de Scapy para interactuar con múltiples capas del modelo OSI lo convierte en una herramienta esencial para profesionales de la red y la seguridad.
Hola. Al parecer hay un error con una de las librerías de Python 3.9 y Scapy. Aparece el error: "FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a'".
Posible solución: ejecutar en tu máquina Kali los siguientes comandos...
# cd /usr/lib/x86_64-linux-gnu/
# ln -s -f libc.a liblibc.a
Listo! Ahora intenta ejecutar nuevamente el comando scapy