Saltar al contenido
OPS // KITitspentest.sh

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.

  1. Confirma que la creación/inyección de paquetes contra la red objetivo está dentro del alcance autorizado.
  2. Instala Scapy con pip en un entorno virtual (se necesitan privilegios root/admin para raw sockets).
  3. Lanza el shell interactivo para construir y enviar un primer paquete, o importa scapy.all en un script.
  4. Usa sniff() o sr()/sr1() para capturar respuestas y confirmar el comportamiento real del objetivo.
  5. 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.

SIGUE EXPLORANDO

Ver toda la fase →