Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
blackpill — Ein Linux-Kernel-Rootkit in Rust, das einen eigens entwickelten Typ-2-Hypervisor sowie eBPF-XDP- und TC-Programme verwendet. | Kitploit
Tools/GitHubGitHub/shard77/blackpill
Privilege EscalationPersistenzmechanismenIDS/IPS-UmgehungLaterale BewegungShellcodePost-ExploitationCommand and ControlRed TeamingPayload-EntwicklungBinary-ExploitationArchived
3404515vor 7 MonatenVon 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
GitHub
shard77/blackpill

blackpill

Ein Linux-Kernel-Rootkit in Rust, das einen eigens entwickelten Typ-2-Hypervisor sowie eBPF-XDP- und TC-Programme verwendet.

Repository anzeigen

BlackPill

BlackPill ist ein heimliches Linux-Rootkit, geschrieben in Rust.

Open issues Commit activity License

Funktionen

Das Rootkit besteht aus mehreren Modulen (gemeint sind Rust-Module, keine Kernel-Module):

  • Defense Evasion: Verstecken von Dateien, Prozessen, Netzwerkverbindungen usw.
  • Hooking: Hooking von Syscalls und IDT
  • Hypervisor: Erstellen einer virtuellen Maschine zur Ausführung von bösartigem Code
  • Persistenz: Das Rootkit nach einem Neustart persistent und gegen Unterdrückung widerstandsfähig machen
  • Utils: Verschiedene Hilfsprogramme

Die Architektur sieht wie folgt aus:

Einfaches Architekturdiagramm des Rootkits

Und so wird bösartiger Code von der C2 an den VM-Gast übertragen und dort ausgeführt:

Sequenzdiagramm der Rootkit-Codeausführung

Die C2 sendet maßgeschneiderte, assemblierte x86_64-Mnemonics an das Rootkit, das sie anschließend zur Ausführung an den VM-Gast sendet. Der VM-Gast ist vom Host isoliert und kann zur Ausführung von bösartigem Code verwendet werden.

Der Kernel sieht keine eingehenden bösartigen Pakete, da sie vom eBPF-XDP-Programm gefiltert und an das LKM-Modul gesendet werden; ausgehende Pakete werden vom eBPF-TC-Programm modifiziert.

[!IMPORTANT]
Dieses Projekt befindet sich noch in der Entwicklung. Nicht alle Funktionen sind funktionsfähig!
Sie können gerne Issues oder Pull Requests einreichen.

Hooking

Hooking ist eine grundlegende Fähigkeit des Rootkits und wird mithilfe von kprobes im Linux-Kernel implementiert. Diese Technik fängt die Ausführung von Systemfunktionen ab und leitet sie um, um ihr Verhalten zu überwachen oder zu verändern. Im Kontext dieses Rootkits bietet kprobes einen leistungsstarken Mechanismus, um mit Kernel-Funktionen zu interagieren, ohne den Quellcode direkt zu verändern.

Defense Evasion

Um Tarnung zu gewährleisten, setzt das Rootkit zwei primäre Anti-Erkennungsmechanismen ein:

  1. Entfernen des Moduls aus der Kernel-Modulliste
    Wenn ein Kernel-Modul geladen wird, wird es zur Modulliste des Kernels hinzugefügt, die über Werkzeuge wie lsmod oder /proc/modules sichtbar ist. Um die Erkennung zu verhindern:

    • Das Rootkit entfernt sich manuell aus dieser Liste.
    • Obwohl es aus der Liste entfernt wurde, bleibt das Modul funktionsfähig, sodass es seine Funktionalität weiterhin ausführen kann.
  2. Hooking der filldir64-Funktion, um ein bestimmtes Verzeichnis zu verbergen
    Um vom Rootkit verwendete Dateien zu verbergen, wird ein Hook auf die filldir64-Funktion implementiert. Diese Funktion wird aufgerufen, wenn ein Prozess den Inhalt eines Verzeichnisses liest (z. B. über getdents- oder readdir-Systemaufrufe).

    • Hooking-Prozess:
      • Das Rootkit fängt die filldir64-Funktion mithilfe von kprobes ab.
      • Während der Ausführung untersucht der Handler die an den Benutzer zurückgegebenen Verzeichniseinträge.
      • Wenn ein Eintrag dem Verzeichnis /BLACKPILL-BLACKPILL entspricht (das zum Speichern kritischer Rootkit-Dateien verwendet wird), wird er herausgefiltert und nicht an den Benutzer zurückgegeben.
      • Alle anderen Verzeichniseinträge werden normal zurückgegeben, wodurch Transparenz für User-Space-Werkzeuge gewährleistet wird.
  3. Verwendung von eBPF-XDP- und TC-Programmen zur Änderung des ein- und ausgehenden Netzwerkverkehrs
    Um unsere bösartige Netzwerkkommunikation zu normalisieren, verwenden wir eBPF-XDP- (eXpress Data Path) und TC-Programme (Traffic Control). Dadurch können wir:

    • Bestimmte eingehende Pakete (Ingress) mit dem XDP-Programm auf der untersten Netzwerkebene abfangen, indem wir die maßgeschneiderte TCP-Payload-Signatur unserer C2 abgleichen. Diese werden dann zur Verarbeitung durch VM/LKM in eine benutzerdefinierte BPF-Map umgeleitet.
    • Bestimmte ausgehende Pakete (Egress) mit dem TC-Programm abfangen, indem wir TCP-Pakete abgleichen, die von VM/LKM erzeugt werden. Diese modifizieren wir, indem wir ihre Payload mit unseren C2-Antwortdaten überschreiben. Die ursprünglichen Pakete werden von TCP automatisch erneut übertragen, wodurch der Anschein legitimen Datenverkehrs erhalten bleibt.

Hypervisor

Unser einfacher Hypervisor wurde wie folgt implementiert:

  1. Initiale Systemkonfiguration

    • Hardware-Virtualisierungserweiterungen (Intel VT-x oder AMD-V) im BIOS/UEFI aktivieren (das Rootkit erledigt das nicht; dies muss vorher aktiviert sein).
    • Die Steuerregister (CR0, CR4 und IA32_EFER) konfigurieren, um in den VMX-Modus (Virtual Machine Extensions (Intel)) oder SVM-Modus (Secure Virtual Machine (AMD)) zu wechseln.
  2. Eintritt in den VMX- oder SVM-Modus

    • Die virtualisierungsspezifischen Datenstrukturen initialisieren (VMCS für Intel oder VMCB für AMD).
    • Die Prozessorfunktionen wie VM-Exits programmieren, um die Interaktionen zwischen Gast und Host zu behandeln.
  3. Verwalten der Übergänge zwischen Host und Gast

    • Die Ein- und Austrittspunkte für virtuelle Maschinen (VM-Entry/VM-Exit) konfigurieren.
    • Logik implementieren, um sensible Systemaufrufe des Gasts abzufangen und ihre Auswirkungen zu analysieren.
  4. Erstellung des Gastsystems

    • Speicher für den Gast allokieren und seine Ressourcen (Register, Stack usw.) initialisieren.
  5. Kommunikation

    • Kommunikationskanäle zwischen dem Rootkit und dem Hypervisor verwenden, um Befehle oder Daten zu übertragen.

Persistenz

Persistenz ist eine entscheidende Fähigkeit eines jeden Rootkits, da sie es ihm ermöglicht, die Kontrolle über das Zielsystem auch nach einem Neustart aufrechtzuerhalten.
In seiner aktuellen Implementierung demonstriert der Persistenzmechanismus seine Funktionalität, indem er mithilfe des /bin/touch-Befehls eine Testdatei im Dateisystem erstellt. Diese Platzhalteraktion zeigt die Fähigkeit des Rootkits, privilegierte Operationen auszuführen, und kann erweitert werden, um fortschrittlichere Persistenzstrategien zu implementieren.

Dies ist inzwischen hinfällig, da es nicht unsere Priorität ist, ein Rootkit auf APT-Niveau zu entwickeln, sondern mehr Forschung zu weniger verbreiteten Konzepten zu betreiben.

Entwicklungsumgebung einrichten

Vor dem Kompilieren unseres Rootkits sind mehrere Schritte erforderlich. Die Entwicklungsumgebung besteht aus:

  • einem Alpine-Linux-Image, das grundlegende Werkzeuge bereitstellt
  • einem benutzerdefiniert kompilierten Kernel mit aktiviertem Rust
  • einer QEMU-Virtual-Machine, die durch KVM beschleunigt wird

Beginnen Sie mit dem Klonen des Repositorys und seiner flachen Submodule:

git clone [email protected]:DualHorizon/blackpill.git --recursive --depth 1

Wichtige Abhängigkeiten

Auf einer Arch-basierten Distribution:

sudo pacman -S qemu-base qemu-desktop docker grub

Linux-Kernel

Installieren Sie auf einer Arch-basierten Linux-Distribution Rust und andere Abhängigkeiten:

sudo pacman -S rust rust-src rust-bindgen
sudo pacman -S clang lld llvm

Danach benötigen wir die Rust-Quellen und bindgen:

rustup component add rust-src clippy rustfmt
cargo install --locked bindgen-cli
Tool herunterladen