
Una herramienta de creación de paquetes para Linux.
Pig (que puede entenderse como Packet intruder generator) es una herramienta de creación de paquetes para Linux.
Puedes usar Pig para probar tu IDS/IPS, entre otras cosas.
Pig incluye un conjunto de firmas de ataque conocidas listas para usar y puedes ampliar esta colección
con cosas más específicas según tus necesidades.
Hasta ahora es posible crear firmas IPv4 con capa de transporte basada en TCP, UDP e ICMP.
También puedes crear firmas basadas en el protocolo ARP, además de construir el paquete desde su trama Ethernet.
Si llegaste aquí por mi artículo de 2600 del número SPRING 2016 issue
sigue leyendo las siguientes secciones de documentación porque este pequeño Pig ha ido evolucionando desde entonces.
Es bastante sencillo:
[email protected]:~/src# git clone https://github.com/rafael-santiago/pig pig
[email protected]:~/src# cd pig
[email protected]:~/src/pig# git submodule update --init
Necesitas usar Hefesto para compilar pig. Después de seguir
los pasos para poner Hefesto en funcionamiento en tu sistema, dirígete al subdirectorio pig llamado src y ejecuta
el siguiente comando:
[email protected]:~/src/pig/src# hefesto
Después de este comando deberías encontrar el binario pig en la ruta src/bin. Puedes usar el binario de manera relativa desde
src/bin o instalarlo.
Si por alguna razón tienes problemas de compilación, deberías leer algunos comentarios presentes en BUILD.md.
Para instalarlo debes estar dentro del subdirectorio src y ejecutar:
[email protected]:~/src/pig/src# hefesto --install
Para desinstalarlo, estando dentro del subdirectorio src, debes ejecutar:
[email protected]:~/src/pig/src# hefesto --uninstall
Los archivos pigsty son archivos de texto plano donde puedes definir un conjunto de firmas de paquetes. Hay una sintaxis específica que debe
seguirse. Observa un ejemplo de un archivo pigsty:
[ signature = "Hello",
ip.version = 4,
ip.ihl = 5,
ip.tos = 0,
ip.src = 192.30.70.10,
ip.dst = 192.30.70.3,
ip.protocol = 17,
udp.dst = 1008,
udp.src = 32000,
udp.payload = "Hello!!" ]
Básicamente, todos los datos de la firma deben ir entre corchetes: [ ... ].
Dentro de esta área, la información se proporciona mediante el esquema campo = dato.
Si tienes algo de experiencia con Redes de Computadoras, seguramente la mayoría de los campos listados en la Tabla 1
tienen un significado claro para ti. Debes usar estos campos para crear tus futuras firmas.
Tabla 1: Campos de firma de pig.