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
IPCDump — BPF-basierter Linux-IPC-Tracer für Pipes, Signale, Unix-Sockets, Loopback und Pseudoterminals mit Metadaten- und Inhaltserfassung, Filterung und JSON-Ausgabe. | Kitploit
Tools/GitHubGitHub/guardicore/ipcdump
Dynamische Analyse (Sandboxing)DebuggerForensikIncident Response
GitHubguardicore/ipcdump

IPCDump

BPF-basierter Linux-IPC-Tracer für Pipes, Signale, Unix-Sockets, Loopback und Pseudoterminals mit Metadaten- und Inhaltserfassung, Filterung und JSON-Ausgabe.

Repository anzeigen
24732vor 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

ipcdump

Ankündigungsbeitrag

ipcdump ist ein Werkzeug zur Verfolgung der Interprozesskommunikation (IPC) unter Linux. Es deckt die meisten gängigen IPC-Mechanismen ab – Pipes, Fifos, Signale, Unix-Sockets, Loopback-Netzwerk und Pseudoterminals. Es ist ein nützliches Werkzeug zum Debuggen von Multiprozess-Anwendungen und auch eine einfache Möglichkeit zu verstehen, wie die verschiedenen beweglichen Teile in Ihrem System miteinander kommunizieren. ipcdump kann sowohl die Metadaten als auch die Inhalte dieser Kommunikation verfolgen und eignet sich besonders gut zur Verfolgung von IPC zwischen kurzlebigen Prozessen, was mit traditionellen Debugging-Werkzeugen wie strace oder gdb schwierig sein kann. Es verfügt auch über einige grundlegende Filterfunktionen, die Ihnen helfen, große Mengen von Ereignissen zu durchsuchen. Der Großteil der Informationen, die ipcdump sammelt, stammt aus BPF-Hooks, die an kprobes und Tracepoints an wichtigen Funktionen im Kernel platziert sind, obwohl es auch einige Buchhaltungsdaten aus dem /proc-Dateisystem ergänzt. Zu diesem Zweck nutzt ipcdump stark gobpf, das Go-Bindings für das bcc-Framework bereitstellt.

Anforderungen & Verwendung

  • golang >= 1.15.6

Getestete Betriebssysteme und Kernel

Ubuntu 18.04 LTSUbuntu 20.04 LTS
4.15.0GetestetNicht getestet
5.4.0Nicht getestetGetestet
5.8.0Nicht getestetGetestet*

*Erfordert das Erstellen von bcc aus dem Quellcode

Erstellen

Abhängigkeiten

  1. Golang installieren
root@kitploit:~
snap install go --classic

oder direkt von der golang-Website

  1. Installieren Sie BCC mit den Anweisungen von iovisor, abhängig vom von Ihnen gewählten Betriebssystem (normalerweise erfordern die neueren Versionen das Erstellen aus dem Quellcode).

Erstellen von ipcdump

root@kitploit:~
git clone https://github.com/guardicore/IPCDump
cd IPCDump/cmd/ipcdump
go build

Verwendung

root@kitploit:~
./ipcdump -h
Usage of ./ipcdump:
  -B uint
        max number of bytes to dump per event, or 0 for complete event (may be large). meaningful only if -x is specified.
  -D value
        filter by destination comm (can be specified more than once)
  -L    do not output lost event information
  -P value
        filter by comm (either source or destination, can be specified more than once)
  -S value
        filter by source comm (can be specified more than once)
  -c uint
        exit after <count> events
  -d value
        filter by destination pid (can be specified more than once)
  -f string
        <text|json> output format (default is text) (default "text")
  -p value
        filter by pid (either source or destination, can be specified more than once)
  -s value
        filter by source pid (can be specified more than once)
  -t value
        filter by type (can be specified more than once).
        possible values: a|all  k|signal  u|unix  ud|unix-dgram  us|unix-stream  t|pty  lo|loopback  lt|loopback-tcp  lu|loopback-udp  p|pipe
  -x    dump IPC bytes where relevant (rather than just event details).

Einzeiler

Als root ausführen:

root@kitploit:~
# dump all ipc on the system
./ipcdump

# dump signals sent between any two processes
./ipcdump -t kill

# dump loopback TCP connection metadata to or from pid 1337
./ipcdump -t loopback-tcp -p 1337

# dump unix socket IPC metadata and contents from Xorg
./ipcdump -t unix -x -S Xorg

# dump json-formatted pipe i/o metadata and first 64 bytes of contents
./ipcdump -t pipe -x -B 64 -f json

Funktionen

  • Unterstützung für Pipes und FIFOs
  • Loopback-IPC
  • Signale (normal und Echtzeit)
  • Unix-Streams und Datagramme
  • Pseudoterminal-basierte IPC
  • Ereignisfilterung basierend auf Prozess-PID oder -Name
  • Menschenlesbare oder JSON-formatierte Ausgabe

Design

ipcdump ist aus einer Reihe von Collectoren aufgebaut, von denen jeder für eine bestimmte Art von IPC-Ereignis zuständig ist. Zum Beispiel IPC_EVENT_LOOPBACK_SOCK_UDP oder IPC_EVENT_SIGNAL.

In der Praxis sind alle Collectoren mit BPF-Hooks erstellt, die an kprobes und Tracepoints angebunden sind. Ihre Implementierungen sind jedoch vollständig getrennt – es gibt keinen besonderen Grund anzunehmen, dass unsere Informationen immer von BPF stammen. Allerdings müssen die verschiedenen Collectoren ein einziges BPF-Modul gemeinsam nutzen, da es einige gemeinsame Codeanteile gibt, die sie teilen müssen. Zu diesem Zweck teilen wir uns einen einzigen BpfBuilder (der im Wesentlichen ein Wrapper um die Verkettung von Strings von BCC-Code ist), und jeder Collector registriert seinen eigenen Code bei diesem Builder. Das vollständige BCC-Skript wird dann mit gobpf geladen, und jedes Modul platziert die Hooks, die es benötigt.

Es gibt derzeit zwei Arten der Buchhaltung, die zwischen IPC-Collectoren geteilt werden:

  • SocketIdentifier (internal/collection/sock_id.go) – bildet zwischen struct sock* des Kernels und den Prozessen, die sie verwenden, ab.
  • CommIdentifier (internal/collection/comm_id.go) – bildet zwischen PID-Nummern und den entsprechenden Prozessnamen (/proc/<pid>/comm) ab.

Die Buchhaltung, die in diesen beiden ausgeführt wird, ist besonders wichtig für kurzlebige Prozesse; während diese Informationen später im Benutzermodus durch Parsen von /proc ausgefüllt werden können, ist der relevante Prozess oft verschwunden, wenn das Ereignis den Handler erreicht. Allerdings füllen wir manchmal Informationen aus /proc ein. Dies geschieht hauptsächlich für Prozesse, die bereits vor dem Start von ipcdump existierten; in diesem Fall werden wir keine Ereignisse wie Prozessbenennung abfangen. SocketIdentifier und CommIdentifier versuchen irgendwie, diese Dualität zwischen BCC-Code und /proc-Parsing hinter einer einzigen API zu abstrahieren, obwohl es nicht super sauber ist. Übrigens, in superneuen Versionen von Linux (5.8) können BPF-Iteratoren diese Buchhaltung vollständig ersetzen, obwohl wir aus Gründen der Abwärtskompatibilität vorerst wahrscheinlich beim Hooks-und-procfs-Paradigma bleiben sollten.

Die Ereignisausgabe erfolgt über die gemeinsame Funktion EmitIpcEvent(), die ein Standardereignisformat (Quellprozess, Zielprozess, Metadaten-Schlüssel-Wert-Paare und Inhalt) nimmt und in einem einheitlichen Format ausgibt. Um Ereignisbandbreite zu sparen, geben die Collectoren normalerweise keine IPC-Inhalte aus, wenn das Flag -x nicht angegeben ist. Dies wird mit einer ausgefallenen Vorverarbeitungs-Magie in internal/collection/ipc_bytes.go erreicht.

Mitwirken

Bitte tun Sie das! Schauen Sie sich TODO für die wirklich wichtigen Dinge an. Die meiste frühe Arbeit an ipcdump wird wahrscheinlich Anpassungen für verschiedene Kernelversionen und Symbole beinhalten.

Tool herunterladen