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
rustnet — Netzwerküberwachung pro Prozess für Ihr Terminal mit Deep Packet Inspection. Plattformübergreifend, sandboxed. | Kitploit
Tools/GitHubGitHub/domcyrus/rustnet
Paket-Sniffing & AnalyseContainer-SicherheitForensikInformationsbeschaffungCloud-SicherheitBedrohungsanalyseDNS-AnalyseLog-Analyse
GitHubdomcyrus/rustnet

rustnet

Netzwerküberwachung pro Prozess für Ihr Terminal mit Deep Packet Inspection. Plattformübergreifend, sandboxed.

Repository anzeigen
4.8k223vor 17h 41mVon 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
Webseite

RustNet

Prozessbezogenes Netzwerk-Monitoring für dein Terminal: Live-TCP-, UDP- und QUIC-Verbindungen mit Deep Packet Inspection, standardmäßig in einer Sandbox.

Built With Ratatui Build Status Crates.io GitHub Stars License GitHub release Docker Image

English | 简体中文 | 日本語

RustNet-Demo

Echtzeit-Einblick in jede Verbindung, die dein Rechner aufbaut, wem sie gehört und welches Protokoll sie spricht. Kein tcpdump, kein X11-Forwarding und kein Root-Piping.

Funktionen

  • Prozesszuordnung: Jede TCP-, UDP- und QUIC-Verbindung wird ihrem Eigentümerprozess zugeordnet – per eBPF unter Linux, PKTAP unter macOS, ETW mit automatischem IP-Helper-Fallback unter Windows und nativen APIs unter FreeBSD. Die Details umfassen PID, ausführbare Datei, Benutzer-/Gruppennamen, Übereinstimmungsgrad und eine begrenzte Elternprozess-Kette auf jeder Plattform. Wireshark und tcpdump können das nicht; netstat / ss können keinen Live-Status anzeigen.
  • Deep Packet Inspection: Erkennt HTTP, HTTPS/TLS mit SNI, DNS, SSH, FTP, QUIC, MQTT, BitTorrent, STUN, NTP, mDNS, LLMNR, DHCP, SNMP, SSDP und NetBIOS – ohne externe Dissectors.
  • Annotierter PCAPNG-Export: --pcapng-export schreibt einen Wireshark-bereiten Mitschnitt mit Prozess, PID, Richtung, DPI/SNI und GeoIP als Kommentare pro Paket. Öffne ihn in Wireshark und jedes Paket nennt bereits seinen Eigentümerprozess – ganz ohne Nachbearbeitung. Klassisches --pcap-export mit einer JSONL-Begleitdatei zur Offline-Korrelation ist ebenfalls verfügbar.
  • Sicherheits-Sandboxing: Landlock (Linux 5.13+), Seatbelt (macOS), Token-Privilegienabsenkung + Job-Object-Blockierung von Kindprozessen (Windows). Senkt die Privilegien sofort nach der Initialisierung von libpcap. Siehe SECURITY.md.
  • Netzwerkanalysen: Echtzeit-Umlaufzeiten für TCP, QUIC-Handshakes, DNS-Antworten und ICMP-Echo sowie Erkennung von TCP-Wiederholungen, Paketen in falscher Reihenfolge und Fast Retransmit.
  • Intelligenter Verbindungslebenszyklus: Protokollbewusste Timeouts mit Weiß-→-Gelb-→-Rot-Anzeigen für veraltete Verbindungen. Mit t lassen sich historische (geschlossene) Verbindungen für Forensik-Zwecke sichtbar halten.
  • Filtern im Vim/fzf-Stil: port:, , , , , , sowie Regex über .

Warum RustNet?

RustNet schließt die Lücke zwischen einfachen Verbindungswerkzeugen (netstat, ss) und Paketanalysatoren (Wireshark, tcpdump):

  • Prozesszuordnung: Sieh, welche Anwendung jede Verbindung besitzt. Wireshark kann das nicht bieten, weil es nur Pakete sieht, keine Sockets.
  • Verbindungszentrierte Ansicht: Verfolge Zustände, Bandbreite und Protokolle pro Verbindung in Echtzeit
  • SSH-freundlich: Die TUI funktioniert über SSH, sodass du schnell sehen kannst, was auf einem entfernten Server passiert – ohne X11-Weiterleitung oder Datenverkehrsmitschnitt.

RustNet ergänzt Paketmitschnitt-Werkzeuge. Nutze RustNet, um zu sehen, was Verbindungen aufbaut. Für die direkte Wireshark-Analyse schreibt --pcapng-export Live-Paketkommentare mit PID-/Prozesskontext nach dem Best-Effort-Prinzip. Für die Korrelation nach dem Mitschneiden verwende --pcap-export zusammen mit der JSONL-Begleitdatei und optional scripts/pcap_enrich.py. Details findest du unter PCAP-Export und Vergleich mit ähnlichen Werkzeugen.

Basiert auf ratatui, libpcap, eBPF (libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2 und Landlock. Die vollständige Aufschlüsselung der Abhängigkeiten findest du in ARCHITECTURE.md.

eBPF-erweiterte Prozessidentifikation (Linux-Standard)

RustNet verwendet unter Linux standardmäßig eBPF-Programme im Kernel für eine bessere Leistung und Prozessidentifikation mit geringerem Overhead.

Prozessnamen:

  • eBPF zeichnet die TGID und den comm-Namen des Prozessgruppen-Leiters auf (ein auf 16 Zeichen begrenztes Kernel-Feld) statt des Namens des aktiven Threads. Dadurch zeigen mehrthreadige Anwendungen den Hauptprozessnamen statt Threadnamen wie „Socket Thread“.
  • RustNet ermittelt anschließend den aktuellen Namen erneut über /proc/<tgid>/comm, stellt gekürzte comm-Namen aus dem Dateinamen der ausführbaren Datei wieder her (z. B. wird aus „chromium-browse“ „chromium-browser“) und löst den vollständigen Pfad der ausführbaren Datei auf, der in der Detailansicht angezeigt wird.
  • Kurzlebige Prozesse, die beendet werden, bevor diese Anreicherung greift, behalten den per eBPF erfassten 16-Zeichen-Namen.

Fallback-Verhalten:

  • Wenn eBPF nicht geladen werden kann oder die Berechtigungen nicht ausreichen, fällt RustNet automatisch auf die standardmäßige Prozessidentifikation über procfs zurück.
  • Der Standardmodus löst Namen auf demselben Weg per procfs-Scan auf, allerdings mit höherem CPU-Aufwand.
  • eBPF ist standardmäßig aktiviert; es sind keine besonderen Build-Flags nötig.

Um eBPF zu deaktivieren und den reinen procfs-Modus zu verwenden, erstelle mit:

root@kitploit:~
cargo build --release --no-default-features

Technische Informationen findest du in ARCHITECTURE.md.

Prozessaktivität und Schnittstellenüberwachung

RustNet kombiniert Verkehrsaufzeichnung auf Prozessebene mit Echtzeit-Statistiken der Netzwerkschnittstellen:

  • Tab „Übersicht“: Zeigt aktive Schnittstellen mit aktuellen Raten, Fehlern und Verlusten
  • Tab „Aktivität“ (Taste 3): Sortiert Prozesse nach Egress (TX) oder Ingress (RX), einschließlich aufbewahrtem und rollierendem Datenverkehr, Raten, Anteilen, Verbindungen und Zielen
  • Security-Workflow: Sortiere nach Egress, identifiziere einen unerwarteten Uploader und prüfe dann seinen wichtigsten entfernten Peer sowie den aufbewahrten Datenverkehr, selbst nachdem die Verbindung geschlossen wurde.
  • Schnittstellendetails (Taste i im Tab „Aktivität“): Zeigt die ursprünglichen umfassenden Metriken für jede Schnittstelle
  • Plattformübergreifend: Linux (sysfs), macOS/FreeBSD (getifaddrs), Windows (GetIfTable2-API)
  • Intelligentes Filtern: Windows schließt virtuelle/Filter-Adapter automatisch aus

Ausführliche Dokumentation zur Interpretation der Schnittstellenstatistiken und zum plattformspezifischen Verhalten findest du in USAGE.md.

Verfügbare Metriken:

  • Gesamte Bytes und Pakete (RX/TX)
  • Fehlerzähler (Empfang und Senden)
  • Paketverluste (Warteschlangenüberläufe)
  • Kollisionen (veraltet, in modernen Netzwerken selten genutzt)

Die Statistiken werden alle 2 Sekunden in einem Hintergrund-Thread mit minimaler Leistungsbeeinträchtigung gesammelt.

Screenshots

Schnellstart

Installation

Homebrew (macOS / Linux):

root@kitploit:~
brew install rustnet

Ubuntu (22.04 LTS+) / Linux Mint 21+ / Pop!_OS 22.04+:

root@kitploit:~
sudo add-apt-repository ppa:domcyrus/rustnet
# on Pop!_OS: sudo apt-manage add ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet

Fedora (42+):

root@kitploit:~
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet

openSUSE Tumbleweed:

root@kitploit:~
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet

Arch Linux:

root@kitploit:~
sudo pacman -S rustnet

Nix / NixOS:

root@kitploit:~
nix-shell -p rustnet
# Then inside the shell: sudo rustnet

Von crates.io:

root@kitploit:~
cargo install rustnet-monitor

Windows (Chocolatey):

root@kitploit:~
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet

Andere Plattformen:

  • FreeBSD: Lade von den rustnet-bsd-Releases herunter
  • Docker, Quellcode-Builds, andere Linux-Distributionen: Detaillierte Anweisungen findest du in INSTALL.md

RustNet ausführen

Paketmitschnitt erfordert erhöhte Rechte:

root@kitploit:~
# Quick start (all platforms)
sudo rustnet

# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet

Häufige Optionen:

root@kitploit:~
rustnet -i eth0              # Specify network interface
rustnet --show-localhost     # Show localhost connections
rustnet --no-resolve-dns     # Disable reverse DNS lookups (enabled by default)
rustnet -r 500               # Set refresh interval (ms)
rustnet --theme tokyo-night  # Theme: muted (default), vivid, catppuccin-mocha, tokyo-night, gruvbox, nord
rustnet --pcapng-export capture.pcapng  # Annotated PCAPNG for Wireshark

Das Theme und individuelle Farbüberschreibungen können auch in ~/.config/rustnet/config.toml festgelegt werden; --theme hat Vorrang. Das Schema findest du in USAGE.md.

Detaillierte Berechtigungseinrichtung findest du in INSTALL.md und alle Optionen in USAGE.md.

Falls du Capabilities gesetzt hast, die TUI aber weiterhin eBPF unavailable anzeigt, siehe eBPF Unavailable Despite Capabilities Being Set im Abschnitt zur Fehlerbehebung.

Tastatursteuerung

Detaillierte Tastatursteuerungen und Navigationstipps findest du in USAGE.md.

Filtern & Sortieren

Schnelle Filterbeispiele:

root@kitploit:~
/google                        # Search for "google" anywhere
/port:443                      # Filter by port
/process:firefox               # Filter by process
/state:established             # Filter by connection state
/dport:443 sni:github.com      # Combine filters

Sortieren:

  • Drücke s, um die sortierbaren Spalten durchzuschalten (Prozess, Adressen, Dienst, Anwendung, Status, Bandbreite)
  • Drücke S (Umschalt+s), um die Sortierrichtung umzuschalten
  • Bandbreitenfresser finden: Drücke s, bis „Bandwidth Total ↓“ erscheint (sortiert nach kombinierter Upload-/Download-Geschwindigkeit)

Die vollständige Filtersyntax und den Sortierleitfaden findest du in USAGE.md.

Erweiterte Filterbeispiele

Stichwortfilter:

  • port:44 – Ports, die „44“ enthalten (443, 8080, 4433)
  • sport:80 – Quellports, die „80“ enthalten
  • dport:443 – Zielports, die „443“ enthalten
  • src:192.168 – Quell-IPs, die „192.168“ enthalten
  • dst:github.com – Ziele, die „github.com“ enthalten
  • process:ssh – Prozessnamen, die „ssh“ enthalten
  • sni:api – SNI-Hostnamen, die „api“ enthalten
  • app:openssh – SSH-Verbindungen, die OpenSSH verwenden
  • state:established – Nach Protokollstatus filtern
  • proto:tcp – Nach Protokolltyp filtern

Statusfilter:

  • state:syn_recv – Halboffene Verbindungen (SYN-Flood-Erkennung)
Verbindungslebenszyklus & visuelle Indikatoren

RustNet verwendet intelligente Timeouts und visuelle Warnungen, bevor Verbindungen entfernt werden:

Visuelle Veraltungsanzeigen:

  • Weiß: Aktiv (< 75 % des Timeouts)
  • Gelb: Veraltet (75–90 % des Timeouts)
  • Rot: Kritisch (> 90 % des Timeouts)

Protokollbewusste Timeouts:

  • HTTP/HTTPS: 10 Minuten (unterstützt Keep-Alive)
  • SSH: 30 Minuten (lange Sitzungen)
  • Allgemein etabliertes TCP: 5 Minuten
  • QUIC verbunden: 3 Minuten (oder der Idle-Timeout des Transport-Parameters vom Peer, falls vorhanden); Initial/Handshaking: 60 Sekunden
  • DNS: 30 Sekunden
  • TCP CLOSED: 15 Sekunden Archivierungsfrist

Beispiel: Eine HTTP-Verbindung wird nach 7,5 Minuten gelb, nach 9 Minuten rot und nach 10 Minuten entfernt.

Vollständige Details zu den Timeouts findest du in USAGE.md.

Dokumentation

  • INSTALL.md – Detaillierte Installationsanweisungen für alle Plattformen, Berechtigungseinrichtung und Fehlerbehebung
  • USAGE.md – Vollständiger Benutzerleitfaden einschließlich Befehlszeilenoptionen, Filtern, Sortieren und Protokollierung
  • SECURITY.md – Sicherheitsfunktionen einschließlich Landlock-Sandboxing und Berechtigungsverwaltung
  • ARCHITECTURE.md – Technische Architektur, Plattformimplementierungen und Leistungsdetails
  • CONTRIBUTING.md – Beitrags-Workflow, Qualitätsanforderungen und Projektrichtlinien
  • PROFILING.md – Leitfaden zur Leistungsanalyse mit Flamegraph-Einrichtung und Optimierungstipps
  • ROADMAP.md – Geplante Funktionen und zukünftige Verbesserungen
  • RELEASE.md – Release-Prozess für Maintainer

Mitwirken

Beiträge sind willkommen! Richtlinien für die Mitarbeit findest du in CONTRIBUTING.md.

Eine Liste der Personen, die zu diesem Projekt beigetragen haben, findest du in CONTRIBUTORS.md.

Lizenz

Dieses Projekt ist unter der Apache License, Version 2.0 lizenziert – siehe die Datei LICENSE für Details.

Danksagungen

  • Erstellt mit ratatui für die Terminal-Benutzeroberfläche
  • Paketmitschnitt unterstützt durch libpcap
  • Inspiriert von Werkzeugen wie tshark/wireshark/tcpdump, sniffnet, netstat, ss, iftop und bandwhich
  • Ein Teil des Codes ist vibe-coded (OMG) / mögen die LLM-Götter mit dir sein

Dokumentation verschoben

Einige Abschnitte wurden zur besseren Organisation in eigene Dateien verschoben:

  • Berechtigungseinrichtung: Jetzt in INSTALL.md – Berechtigungseinrichtung
  • Installationsanweisungen: Jetzt in INSTALL.md
  • Detaillierte Verwendung: Jetzt in USAGE.md
  • Architekturdetails: Jetzt in ARCHITECTURE.md
Tool herunterladen
src:
dst:
sni:
process:
state:
proto:
/(?i)pattern/
  • GeoIP-Anreicherung: Länderabfragen über lokale MaxMind-GeoLite2-Daten. Keine Netzwerkaufrufe.
  • LAN-Geräteidentifikation: MAC-Adresse und Hersteller (aus der eingebetteten IEEE-OUI-Datenbank) für direkt erreichbare Peers und das Gateway, passiv aus ARP-Datenverkehr gelernt und im Detailbereich angezeigt.
  • Kubernetes-Zuordnung (optionales kubernetes-Feature): Verbindungen werden ihrem Pod, Namespace und Container zugeordnet und im Detailbereich, in JSON-/PCAPNG-Exporten sowie in den Filtern pod:, ns:, container: angezeigt. Im offiziellen Docker-Image aktiviert; in einem Cluster kannst du das kubectl-rustnet-Plugin verwenden, um es als ephemeren Debug-Pod auszuführen. Siehe USAGE.md.
  • Plattformübergreifend: Linux, macOS, Windows, FreeBSD.
  • Übersicht
    Verbindungstabelle mit Live-Statistiken und Sparklines
    Details
    Pro-Verbindungs-SNI, Cipher, GeoIP, DPI
    Diagramm
    Verkehrsdiagramm, App-Verteilung, Top-Prozesse
    Aktivität
    Prozess-Egress/Ingress, 60-Sekunden-Abdeckung, Zuordnung und entfernte Peers
    KeyAktion
    qBeenden (zweimal drücken zum Bestätigen)
    Ctrl+CSofort beenden
    xAlle Verbindungen löschen (zweimal drücken zum Bestätigen)
    Tab oder ]Nächster Tab
    Shift+Tab oder [Vorheriger Tab
    1–5Zu Übersicht / Details / Aktivität / Diagramm / Hilfe springen
    ↑/k ↓/jNach oben/unten navigieren
    g GZur ersten/letzten Verbindung springen
    EnterVerbindungsdetails anzeigen
    EscZurückgehen oder Filter löschen
    cEntfernte Adresse kopieren
    pDienstnamen/Ports umschalten
    dHostnamen/IPs in der Übersicht oder Egress/Ingress in der Aktivität umschalten
    s SSortierspalten durchschalten / Richtung umschalten
    aProzessgruppierung umschalten
    SpaceProzessgruppe erweitern/einklappen
    ←/→ oder h/lGruppe einklappen/erweitern
    PageUp/PageDown oder Ctrl+B/FSeitennavigation
    tHistorische (geschlossene) Verbindungen umschalten
    iSysteminfo in der Übersicht oder Schnittstellendetails in der Aktivität umschalten
    rAnsicht zurücksetzen (Gruppierung, Sortierung, Filter)
    /Filtermodus öffnen
    hHilfe umschalten
  • state:established – Nur bestehende Verbindungen
  • state:quic_connected – Aktive QUIC-Verbindungen
  • state:dns_query – DNS-Abfrageverbindungen
  • Kombinierte Beispiele:

    • sport:80 process:nginx – Nginx-Verbindungen von Port 80
    • dport:443 sni:google.com – HTTPS zu Google
    • process:firefox state:quic_connected – Firefox-QUIC-Verbindungen
    • dport:22 app:openssh state:established – Bestehende OpenSSH-Verbindungen