Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pig — Ein Linux-Paket-Erstellungstool. | Kitploit
Tools/GitHubGitHub/rafael-santiago/pig
IDS/IPS-UmgehungNetzwerksicherheitPenetrationstests
GitHubrafael-santiago/pig

pig

Ein Linux-Paket-Erstellungstool.

Repository anzeigen
479413vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Pig

„Pig“ (was als „P“acket „i“ntruder „g“enerator verstanden werden kann) ist ein „Linux“-Packet-Crafting-Tool. Du kannst „Pig“ verwenden, um deine „IDS“/„IPS“ unter anderem zu testen.

„Pig“ bringt eine Reihe bekannter Angriffssignaturen mit, die einsatzbereit sind, und du kannst diese Sammlung mit spezifischeren Dingen nach deinen Anforderungen erweitern.

Bisher ist es möglich, „IPv4“-Signaturen mit Transportschicht basierend auf „TCP“, „UDP“ und „ICMP“ zu erstellen. Du kannst auch Signaturen basierend auf dem „ARP“-Protokoll erstellen, zusätzlich zum Aufbau des Pakets ab seinem „Ethernet“-Frame.

Wenn du über meinen 2600-Artikel aus der „SPRING 2016“ Ausgabe hierher gekommen bist, lies die folgenden Dokumentationsabschnitte weiter, denn dieses kleine „Pig“ hat sich seitdem weiterentwickelt.

Wie klone ich dieses Repo?

Es ist ganz einfach:

root@kitploit:~
[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

Wie baue ich es?

Du musst Hefesto verwenden, um „pig“ zu bauen. Nachdem du die Schritte befolgt hast, um „Hefesto“ auf deinem System zum Laufen zu bringen. Wechsle in das Unterverzeichnis „src“ von „pig“ und führe den folgenden Befehl aus:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto

Nach diesem Befehl solltest du die „pig“-Binärdatei unter dem Pfad „src/bin“ finden. Du kannst die Binärdatei relativ von „src/bin“ verwenden oder installieren.

Wenn du aus irgendeinem Grund Bauprobleme hast, solltest du versuchen, einige Hinweise in BUILD.md zu lesen.

Wie installiere ich es?

Zum Installieren musst du dich im Unterverzeichnis „src“ befinden und aufrufen:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto --install

Zum Deinstallieren, wenn du dich im Unterverzeichnis „src“ befindest, solltest du aufrufen:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto --uninstall

Die Pigsty-Dateien

„Pigsty-Dateien“ sind reine Textdateien, in denen du einen Satz von Paketsignaturen definieren kannst. Es gibt eine spezifische Syntax, die befolgt werden muss. Sieh dir ein Beispiel einer Pigsty-Datei an:

root@kitploit:~
[ signature   =      "Hallo",
  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 =    "Hallo!!" ]

Grundsätzlich müssen alle Signaturdaten zwischen eckigen Klammern stehen: [ ... ].

Innerhalb dieses Bereichs werden die Informationen durch das Schema Feld = Daten bereitgestellt.

Wenn du Erfahrung mit Computernetzen hast, haben die meisten der in „Tabelle 1“ aufgeführten Felder eine starke Bedeutung für dich. Du musst diese Felder verwenden, um deine weiteren Signaturen zu erstellen.

Tabelle 1: Die „pig“-Signaturfelder.

Beim Erstellen einer Signatur musst du nicht alle Daten angeben. Wenn du nur die wichtigsten Paketteile angibst, werden die restlichen Teile mit Standardwerten aufgefüllt. Die „Prüfsummen“ werden immer neu berechnet.

Tipp: Wirf einen Blick in das Unterverzeichnis „pigsty“. Du wirst viele Signaturdateien finden und sehen, dass es recht einfach ist, neue zu definieren.

IP-Adressen geografisch angeben

Ja, das ist möglich. Um diese Funktion zu nutzen, musst du nur die in „Tabelle 2“ aufgeführten Werte in Feldern vom Typ ip address angeben.

Tabelle 2: IPs nach geografischem Gebiet.

Zu verwendender Wert

Eigene Adressen angeben

Du solltest in jedem Feld vom Typ ip address den Wert user-defined-ip als Wert verwenden. Beachte, dass du in diesem Fall die Befehlszeilenoption --targets verwenden musst. Siehe Abschnitt Pig verwenden für weitere Informationen.

Mit mehr Paketsignaturen beitragen

Wenn du „Pigsty-Dateien“ erstellst, die du über deine eigene Umgebung hinaus als relevant erachtest, öffne einen Pull-Request, um diese nützlichen Dateien hier aufzunehmen. Vielen Dank im Voraus!

pig verwenden

Die Verwendung von „Pig“ ist sehr einfach und erfordert die Angabe von vier grundlegenden Optionen:

  • --signatures
  • --gateway
  • --net-mask
  • --lo-iface

Willst du mehr über jede Option wissen, hm?... Dann los:

  • Die Option --signatures erhält eine Liste von Dateipfaden zu „Pigsty-Dateien“.
  • Die Option --gateway gibt an, wo du deine Gateway-Adresse angibst. Beachte, dass „pig“ die „Ethernet-Frames“ ebenfalls generiert oder zumindest zu generieren versucht. Aus diesem Grund ist die Gateway-Adresse sehr wichtig, um die „Layer-1“-Daten korrekt zusammenzustellen.
  • Die Option --net-mask muss für Routing-Probleme deine Netzmaske erhalten.
  • Die Option --lo-iface ist der Ort, an dem du den Namen der lokalen Netzwerkschnittstelle angeben solltest, die du zum „Ableiten“ der generierten Pakete verwenden wirst.
  • Die Option --no-gateway zeigt an, dass kein Paket außerhalb des Netzwerks gesendet wird.

Angenommen, wir möchten „DDos“-basierten Datenverkehr generieren:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/ddos.pigsty\
> --gateway=10.0.2.2\
> --net-mask=255.255.255.0 --lo-iface=eth0

Jetzt wollen wir alles durcheinanderbringen:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/ddos.pigsty,pigsty/attackresponses.pigsty,\
> pigsty/badtraffic.pigsty,pigsty/backdoors.pigsty\
> --gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

Zusätzliche Optionen

Timeouts zwischen den Signatursendungen definieren

Verwende dazu die Option --timeout=<Millisekunden>.

Echo unterdrücken

Verwende die Option --no-echo.

Ziele definieren

Verwende die Option --targets. Du kannst eine Liste basierend auf exakten IPs, IP-Masken und CIDRs angeben.

Sieh dir das an:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/local-mess.pigsty\
> --targets=192.30.70.3,192.30.70.*,192.30.70.0/9\
> --gateway=10.0.2.2\
> --net-mask=255.255.255.0\
> --lo-iface=eth0

Das Gateway nicht verwenden

Dies ist nützlich, wenn die geladenen Signaturen keine Daten außerhalb des aktuellen Netzwerks senden. Um dies zu kennzeichnen, musst du die Option --no-gateway verwenden. Wenn die Option --no-gateway verwendet wird, musst du die Adresse des Gateways nicht angeben, da die Pakete nicht außerhalb des aktuellen Segments fließen. Folglich wird auch die Angabe der Netzmaske irrelevant.

Zum Beispiel:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/local_traffic.pigsty --no-gateway --lo-iface=eth2

Im obigen Beispiel liegt die Verantwortung für den Ethernet-Frame nicht mehr bei „pig“. Aus diesem Grund wird „pig“ sich nicht über das Fehlen der Optionen --gateway und --net-mask beschweren.

Die Option --no-gateway ist sehr praktisch, wenn du ARP-Datenverkehr generieren musst. Wirf einen Blick in dieses andere Dokument, das erklärt, wie man ARP-Spoofing mit pig durchführt.

Nur eine Signatur senden und zurückkehren

Vielleicht musst du nur eine Signatur senden und dann zum Aufrufer zurückkehren, um zu überprüfen, was danach passiert ist. Diese Art von Anforderung ist üblich, wenn du diese Anwendung als Unterstützung für „Systemtests“ oder „Unit-Tests“ verwendest. Wenn du dies tun möchtest, solltest du versuchen, die Option --single-test zu verwenden:

root@kitploit:~
[email protected]:~# pig --signature=pigsty/syn-scan.pigsty --targets=127.0.0.1 --single-test\
> --gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

Nach Ausführung dieses Befehls wählt „pig“ nur eine Signatur aus der Datei „syn-scan.pigsty“ aus, versucht sie zu senden und beendet sich dann. Wenn während des Vorgangs ein Fehler aufgetreten ist, beendet sich „pig“ mit einem „Exit-Code“ von 1, andernfalls beendet sich „pig“ mit einem „Exit-Code“ von 0.

Den Pigsty-Durchlaufmodus angeben

Der grundlegende „pig“-Betriebsmodus ist eine endlose „Schleife“, die unter Berücksichtigung eines zuvor definierten Timeouts Tonnen von Paketen in das Netzwerk spuckt.

Du kannst definieren, wie „pig“ die geladenen Pakete zum Senden durchläuft, indem du die Option --loop=<Modus> verwendest. Bisher gibt es zwei Modi: random (Standard) und sequential.

Der sequential-Modus wiederholt die Signaturen, wenn er das Ende der geladenen Paketsignaturenliste erreicht.

Die Unteraufgaben

Unteraufgaben sind nützliche kleinere Aufgaben im Zusammenhang mit der Paketerstellung, die in „pig“ enthalten sind, um dir bei deiner Erstellungssitzung zu helfen. Auf diese Aufgaben kann mit der Option --sub-task=<Aufgabenname> zugegriffen werden.

Da es sich praktisch um Unterprogramme handelt, haben die Unteraufgaben ihre eigenen Eigenheiten, und aus diesem Grund folgen die Details dazu in ihrer eigenen Anleitung. Wirf einen Blick auf die „Tabelle 3“, um dorthin zu gelangen.

Tabelle 3: Die „pig“-Unteraufgaben.

Pig-Tricks

Vom Ethernet-Frame bis zur obersten Schicht...

Bisher kannst du Pakete auf Basis von „IPv4“ mit „UDP“ oder „TCP“ in ihrer Transportschicht erstellen. Du kannst auch „ARP“-Pakete erstellen.

Du kannst jedoch auch Pakete ausgehend vom „Ethernet“-Frame erstellen. Das Schöne daran ist die Möglichkeit, praktisch alles oberhalb der „Ethernet“-Nutzlast zu erstellen.

Zum Beispiel: Auch wenn „pig“ bisher keine Unterstützung für gekochtes „IPv6“ bietet, kannst du es dennoch mit einer rohen „Ethernet“-basierten Pigsty erstellen. Sieh hier:

root@kitploit:~
[ eth.hwdst = "5C:AC:4C:AA:F5:B5",
  eth.hwsrc = "08:95:2A:AD:D6:4F",
  eth.type = 0x86DD,
  eth.payload = "\x60\x00\x00\x00\x00\x20\x3a\xff\xfe\x80\x00\x00\x00\x00\x00\x00\x0a\x95\x2a\xff\xfe\xad\xd6\x4f\xfe\x80\x00\x00\x00\x00\x00\x00\x55\x51\x00\xc2\x18\x0f\xdb\x46\x88\x00\x32\x01\xe0\x00\x00\x00\xfe\x80\x00\x00\x00\x00\x00\x00\x0a\x95\x2a\xff\xfe\xad\xd6\x4f\x02\x01\x08\x95\x2a\xad\xd6\x4f",
  signature = "IPv6 from Sparta" ]
]

Wenn man bedenkt, dass die Angabe der Ziel- und Quell-„MAC“-Adressen in einer „Ethernet-Pigsty“ optional ist, können wir die Aufgabe auch ohne Verwendung eines „Plüschfeldes“ erledigen.

Es ist nützlich, wenn du neue Protokolle in deiner Umgebung testen musst, unter anderem andere anomale lustige Dinge. Auf diese rohe Weise kann dir „pig“ weiterhin nützlich sein.

## pig von Grund auf testen

Speichere die folgenden Daten als „oink.pigsty“:

[ signature = "oink", ip.version = 4, ip.ihl = 5, ip.tos = 0, ip.src = 127.0.0.1, ip.dst = user-defined-ip, ip.protocol = 17, udp.dst = 1008, udp.src = 32000, udp.payload = "Oink!!\n" ]

root@kitploit:~

Führe auf einem anderen „tty“ den „netcat“ im „UDP-Modus“ aus und höre auf Verbindungen auf Port ``1008``:

[email protected]:~# nc -u -l -p 1008

root@kitploit:~

Starte nun ``pig`` mit ``oink.pigsty`` und gib als Ziel die ``Loopback``-Adresse an:

[email protected]:~# pig --signatures=oink.pigsty --targets=127.0.0.1\

--gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

root@kitploit:~

Der ``netcat`` sollte beginnen, mehrere „oinks“ zu empfangen, und... ja, herzlichen Glückwunsch!! „pig“ läuft und funktioniert auf deinem System! ;)

Versuche, dein Netzwerk zu überwachen, um weitere Informationen über diese „UDP-Pakete“ zu erhalten, die durch deine Schnittstellen fließen...

Viel Spaß!
Tool herunterladen
FeldBedeutungProtokollDatentypBeispieldefinition
signatureDer Signaturname-stringsignature = "Udp flood"
eth.hwdstEthernet Ziel-MACEthernetMACeth.hwdst = "00:de:ad:be:ef:00"
eth.hwsrcEthernet Quell-MACEthernetMACeth.hwsrc = "00:de:ad:be:ef:00"
eth.typeEther-TypEthernetnumbereth.type = 0x0800
eth.payloadEthernet NutzlastEthernetstringeth.payload = "f\x00ob\x04r"
ip.versionIP-VersionIPnumberip.version = 4
ip.ihlInternet Header LängeIPnumberip.ihl = 5
ip.tosDiensttypIPnumberip.tos = 0
ip.tlenGesamtlängeIPnumberip.tlen = 20
ip.idPaket-IDIPnumberip.id = 0xbeef
ip.flagsIP-FlagsIPnumberip.flags = 4
ip.offsetFragment-OffsetIPnumberip.offset = 0
ip.ttlTime to liveIPnumberip.ttl = 64
ip.protocolProtokollIPnumberip.protocol = 6
ip.checksumPrüfsummeIPnumberip.checksum = 0
ip.srcQuelladresseIPip addressip.src = 192.30.70.3
ip.dstZieladresseIPip addressip.dst = 192.30.70.3
ip.payloadIP-RohnutzlastIPstringip.payload = "\x01\x02"
tcp.srcQuellportTCPnumbertcp.src = 80
tcp.dstZielportTCPnumbertcp.dst = 21
tcp.seqnoSequenznummerTCPnumbertcp.seqno = 10202
tcp.acknoBestätigungsnummerTCPnumbertcp.ackno = 10200
tcp.sizeTCP-LängeTCPnumbertcp.size = 4
tcp.reservTCP-ReservierungsfeldTCPnumbertcp.reserv = 0
tcp.urgTCP-Urg.-FlagTCPbittcp.urg = 0
tcp.ackTCP-Ack.-FlagTCPbittcp.ack = 1
tcp.pshTCP-Psh.-FlagTCPbittcp.psh = 0
tcp.rstTCP-Rst.-FlagTCPbittcp.rst = 0
tcp.synTCP-Syn.-FlagTCPbittcp.syn = 0
tcp.finTCP-Fin.-FlagTCPbittcp.fin = 0
tcp.wsizeTCP-FenstergrößeTCPnumbertcp.wsize = 0
tcp.checksumPrüfsummeTCPnumbertcp.checksum = 0
tcp.urgpDringlichkeitszeigerTCPnumbertcp.urgp = 0
tcp.payloadNutzlastTCPstringtcp.payload = "\x01abc"
udp.srcQuellportUDPnumberudp.src = 53
udp.dstZielportUDPnumberudp.dst = 7
udp.sizeUDP-LängeUDPnumberudp.size = 8
udp.checksumPrüfsummeUDPnumberudp.checksum = 0
udp.payloadNutzlastUDPnumberudp.payload = "boo!"
icmp.typeICMP-TypICMPnumbericmp.type = 0
icmp.codeICMP-CodeICMPnumbericmp.code = 0
icmp.checksumPrüfsummeICMPnumbericmp.checksum = 0
icmp.payloadNutzlastICMPstringicmp.payload = "ping!"
arp.hwtypeARP-HardwaretypARPnumberarp.hwtype = 0x1
arp.ptypeARP-ProtokolltypARPnumberarp.ptype = 0x0800
arp.hwlenARP-HardwarelängeARPnumberarp.hwlen = 6
arp.opcodeARP-OperationscodeARPnumberarp.opcode = 2
arp.hwsrcARP-Quell-HW-Adr.ARPMACarp.hwsrc = "de:ad:be:ef:0:0"
arp.psrcARP-Quell-Proto-Adr.ARPip addressarp.psrc = 192.30.70.3
arp.hwdstARP-Ziel-HW-Adr.ARPMACarp.hwdst = "de:ad:be:ef:0:0"
arp.pdstARP-Ziel-Proto-Adr.ARPip addressarp.pdst = 192.30.70.3
Bedeutung
north-american-ipIP-Adressen aus Nordamerika
south-american-ipIP-Adressen aus Südamerika
asian-ipIP-Adressen aus Asien
european-ipIP-Adressen aus Europa
UnteraufgabeWas führt sie aus?Anleitung
pcap-importImportiert Paket aus einer PCAP-Datei in eine Pigsty-Dateicat doc/pcap-import.md
shellFührt pig im interaktiven Modus auscat doc/shell.md