Inyección de Datos en Redes Internas mediante Puertos Aleatorios
Clase 18 de 33 • Curso de Pentesting a Redes
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.
- Utiliza herramientas como
-
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.all import *
# Crea la capa de IP falsificando la IP de origen como la del servidor
ip = IP(src="IP_DEL_SERVIDOR", dst="IP_PUBLICA_DESTINO")
# Crea la capa TCP con el puerto DNS como origen y el puerto identificado como destino
tcp = TCP(sport=53, dport=PUERTO_IDENTIFICADO)
# Añade una carga útil que puede ser un texto plano o código malicioso
payload = Raw(load="Datos o código malicioso")
# Construye el paquete con las capas definidas
paquete = ip/tcp/payload
# Envía el paquete repetidamente
send(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.