R-SCA
Scapy
Librería Python y shell interactivo para crear, enviar y diseccionar paquetes de red arbitrarios.
Sitio oficialVolver al catálogo
RESUMEN
Scapy (github.com/secdev/scapy) es una librería Python y un shell interactivo que permite construir un paquete de red campo por campo, en cualquier capa desde Ethernet hasta protocolos de aplicación, para luego enviarlo, escuchar una respuesta o integrarlo en un script para una prueba repetible. Donde Nmap u otro escáner responde un conjunto fijo de preguntas, Scapy responde cualquier pregunta que puedas expresar en Python: un handshake TCP con flags inusuales, una consulta DNS con un ID de transacción manipulado, una petición ARP para mapear un segmento local.
Al ser una librería y no un binario de propósito único, también funciona como kit de análisis de paquetes y fuzzing: puede leer y reescribir archivos pcap, decodificar una captura capa por capa en el shell interactivo, o ejecutar un bucle de fuzzing que muta un paquete base y observa cómo responde un objetivo.
CASOS DE USO
Casos de uso en un engagement
- 01
Crear paquetes no estándar o malformados para probar cómo maneja un dispositivo objetivo o un IDS los casos extremos.
- 02
Scriptear una sonda de protocolo a medida cuando ninguna herramienta existente habla el servicio en cuestión.
- 03
Escuchar y diseccionar tráfico en un segmento local para entender un protocolo poco familiar.
- 04
Automatizar checks a nivel de paquete (detección de ARP spoofing, predicción de secuencia TCP) como parte de una evaluación de red.
PRIMEROS PASOS
Cuando los checks integrados de un escáner no bastan y necesitas construir o manipular un paquete a mano — campos de protocolo a medida, headers malformados o una sonda puntual.
- Confirma que la creación/inyección de paquetes contra la red objetivo está dentro del alcance autorizado.
- Instala Scapy con pip en un entorno virtual (se necesitan privilegios root/admin para raw sockets).
- Lanza el shell interactivo para construir y enviar un primer paquete, o importa scapy.all en un script.
- Usa sniff() o sr()/sr1() para capturar respuestas y confirmar el comportamiento real del objetivo.
- Guarda la interacción como script reutilizable o pcap para el informe.
python3 -c "from scapy.all import *; send(IP(dst='10.10.10.5')/ICMP())"ANTES DE USARLA
Qué revisar antes de lanzarla
Crear e inyectar paquetes raw requiere privilegios root/admin y puede disparar alertas de IDS/IPS o activar rate-limiting en equipos de red frágiles — confirma alcance y timing antes de correr scripts a volumen.
Paquetes malformados o mutados por fuzzing pueden colgar dispositivos embebidos antiguos (impresoras, equipos ICS/OT, switches viejos) en lugar de solo registrar una alerta — trata el fuzzing contra infraestructura de producción como un riesgo de DoS y obtén aprobación explícita.
Scapy es un bloque de construcción, no un escáner terminado: su salida es tan confiable como el script que escribas, así que revisa entre pares las sondas a medida antes de basar resultados de un informe en ellas.