Torna agli aggiornamenti
New releaseJul 26, 2026

emp3r0r v4.7.1

Autoriparante Maglia Gossip C2 con Scoperta Assistita dei Peer, Esecuzione BOF Multipiattaforma e Agenti Scriptabili.

Condividi
emp3r0r

emp3r0r

C2 a maglia gossip auto-riparante con scoperta assistita dei peer, esecuzione BOF multipiattaforma e agenti scriptabili.


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


Screenshot From 2026-08-26 14-20-24

Cos'è emp3r0r?

emp3r0r è un framework avanzato di post-exploitation e sistema di comando e controllo (C2) a zero-trust progettato per ambienti target Linux e Windows. Costruito da zero per operare in ambienti ad alta sicurezza, emp3r0r combina networking a maglia gossip autonomo, esecuzione fileless solo in memoria, caricamento BOF multipiattaforma, trasferimento file inter-agente e agenti scriptabili in memoria per offrire stealth superiore, controllo operativo e sicurezza operativa (OPSEC).


Punti Salienti e Funzionalità Uniche

🐍 Agenti Scriptabili (Motore Starlark Integrato e Proxy API Win32)

Gli agenti emp3r0r dispongono di un motore di scripting Starlark integrato (un dialetto Python implementato puramente in Go). Gli script vengono eseguiti fileless in memoria senza richiedere Python, Bash o PowerShell installati sul target.

  • Zero Dipendenze Host: Esegue script autonomi senza avviare interpreti di comando (/bin/sh, powershell.exe) o fare affidamento su runtime installati.
  • API Go dell'Agente Integrate: Funzioni esposte per operazioni sul filesystem (read_file, write_file, list_dir, mkdir, remove, exists), networking HTTP (http_get, http_post), esecuzione di comandi (exec_cmd) e hashing (crypto_hash).
  • Proxy API Win32 Dinamico: Su target Windows, gli script Starlark possono caricare dinamicamente DLL di sistema ed eseguire API Win32 native (win_call, win_alloc, win_free, win_read_mem) direttamente dal codice dello script senza compilare codice C nativo.
  • Integrazione Modulare: Gli script Starlark sono definiti tramite manifest JSON (config.json) per un'analisi e distribuzione fluida dei parametri CLI.

Perché è importante: I moduli script tradizionali dei C2 richiedono interpreti host o avvio di processi, lasciando tracce pesanti su disco o nell'esecuzione da riga di comando. Gli agenti scriptabili di emp3r0r eseguono logica complessa interamente in memoria con interazione nativa con il sistema.


🔐 Pinning Crittografico dell'Identità TOFU

emp3r0r applica Trust-On-First-Use (TOFU) con pinning rigoroso di UUID e chiave pubblica al momento dell'arruolamento dell'agente.

  • Binding Immutabile: Una volta arruolato, l'UUID di un agente è ancorato alla sua chiave pubblica crittografica. La ri-arruolamento con credenziali alterate viene rifiutato come tentativo di impersonificazione.
  • Reset Controllato: La de-registrazione richiede un'autorizzazione esplicita dell'operatore tramite forget_agent.

Perché è importante: Previene il dirottamento delle sessioni, la clonazione degli agenti e la deriva silenziosa dell'identità tra ambienti operativi.


🔒 Segretezza Perfetta in Avanti (PFS)

Tutte le comunicazioni C2 e tra peer impongono scambio di chiavi ECDH con chiavi di sessione derivate da HKDF.

  • Chiavi Effimere: Ogni sessione genera chiavi di cifratura uniche.
  • Sicurezza Disaccoppiata: Compromettere le chiavi a lungo termine o un singolo agente non può compromettere comunicazioni passate o parallele.

Perché è importante: Previene la decifratura retrospettiva delle catture di rete intercettate.


🕸️ Rete a Maglia Gossip P2P Autonoma

Gli agenti in segmenti di rete con restrizioni di uscita o isolati scoprono autonomamente i peer e instradano il traffico tramite una rete a maglia basata su gossip (Memberlist).

  • Trasporti Peer Pluggabili: Supporto per mTLS 1.3 camuffato (con certificati effimeri) e KCP (UDP affidabile).
  • Cifratura End-to-End: Tutti i salti della maglia inter-agente sono avvolti in cifratura AES-GCM.
  • Bassa Impronta di Rete: Il relay diretto agente-agente elimina rumore di broadcast non necessario e colli di bottiglia centralizzati di connessione C2.

Perché è importante: Il pivot attraverso reti segmentate avviene autonomamente senza richiedere intervento costante dell'operatore o configurazioni proxy statiche.


📂 Filesystem P2P

Condivisione file diretta agente-agente tramite trasporto relay P2P (mTLS/KCP) per accelerare la consegna dei file attraverso reti interne.

  • Tunnel P2P Cifrati: Trasferimenti in tunnel attraverso i peer usando mTLS/KCP per bypassare le restrizioni di uscita e ridurre i colli di bottiglia di banda del C2 centrale.
  • Cache File Intelligente in Memoria: I file vengono memorizzati nella memoria dell'agente come blob cifrati; possono essere serviti senza soluzione di continuità per il download on-demand da parte di altri agenti. Quando richiedono un file, gli agenti controllano prima il loro memfs locale, poi gli altri peer, infine il C2.
  • Fallback Automatico Relay C2: Se un peer target non dispone del file richiesto, lo recupera e lo trasmette dinamicamente dal server C2 on-demand.

Perché è importante: La condivisione file diretta agente-agente massimizza le velocità di trasferimento, bypassa i colli di bottiglia di rete e riduce la visibilità del traffico C2 diretto.


📡 Listener Multi-Protocollo e Stager Pluggabili

Stager downloader Stage 0 flessibili e listener di protocollo per accesso iniziale e consegna del payload.

  • Listener Multi-Protocollo: Listener HTTP, TCP e UDP integrati e autonomi con framing affidabile di acknowledgment di sequenza e profili HTTP personalizzabili. Il listener autonomo supporta TLS opzionale (-tls), generando automaticamente un certificato self-signed quando non viene fornita una coppia cert/chiave.
  • Stager Downloader C Autonomo: Costruito con syscall Linux dirette e indipendenti da libc per compatibilità tra distribuzioni senza errori di simboli.
  • Consegna Stage Cifrata: Il listener cifra il payload staged con RC4 usando una chiave derivata da un segreto fornito dall'operatore; lo stager lo decifra in memoria prima del caricamento riflessivo.
  • Trasporti Stager Pluggabili: Sistema di trasporto modulare che consente agli operatori di inserire moduli di trasporto C personalizzati (transport_<name>.c). Le opzioni autonome integrate includono HTTP, TCP e UDP tramite syscall grezze, oltre a trasporti con librerie dinamiche (es. libcurl tramite risoluzione di simboli a runtime).
    • Vantaggi: Bypassa il filtraggio di uscita e il rilevamento di rete integrando fluidamente il traffico in canali di sistema legittimi (es. libcurl nativo o implementazioni di protocollo personalizzate) senza alterare la logica core dello stager.
  • Packer Auto-Estrattivi Pluggabili: Interfaccia modulare estensibile per stub e packer (pack_<name>.py + unpack_stub_<name>.c). Gli operatori possono scrivere algoritmi di packing/offuscamento personalizzati (le opzioni integrate includono cifratura a flusso RC4 e compressione LZSS greedy) con patch automatica dell'header a runtime.
    • Vantaggi: Rompe le regole YARA statiche di AV/EDR e il pattern matching firmando/compattando il payload Stage 0 con chiavi o algoritmi unici, auto-estraendosi in memoria read/write che viene poi convertita in read/execute prima dell'esecuzione.
  • Dimensione Payload Minima: Mentre i binari agente emp3r0r sono ~20MB senza compressione, questo stager è di 2KB; il payload simile a sRDI che recupera dal listener emp3r0r è ~8MB (compresso dal binario agente in formato oggetto condiviso ELF).
  • Formati Flessibili: Compila in shellcode grezzo position-independent (.bin), shellcode packed auto-estrattivo (packed), eseguibili ELF autonomi o oggetti condivisi (.so).
  • Indurimento in Memoria: Alloca la memoria dello stage come read/write, de-offusca i payload, poi impone read/execute prima del caricamento riflessivo. L'auto-estrattore non mappa mai RWX (read/write → unpack → read/execute), e lo stato mutabile dello stager risiede in una pagina read/write dedicata piuttosto che in codice scrivibile.

🧩 Supporto BOF e PICO Multipiattaforma Nativo (COFF, ELF e PICO)

Esegue moduli binari in memoria su target sia Windows che Linux:

  • Loader COFF Windows: Esegue binari BOF Windows fileless con packing di parametri tipizzati (int, short, cstr, wstr, binary).
  • Loader Oggetti ELF Linux: Carica file oggetto rilocabili ELF (.o) direttamente nella memoria dell'agente su Linux.
  • Moduli PICO Crystal-Kit e Spoofing dello Stack: Loader e packer PICO (Position-Independent Code Object) integrati con spoofer di desincronizzazione callstack SilentMoonwalk per evasione avanzata.
  • Suite BOF Incluse: Supporto integrato per le raccolte di moduli Kerbeus-BOF, Remote-OPs e Situational Awareness (SA).

Perché è importante: Elimina l'overhead di creazione dei processi e aggira il monitoraggio della riga di comando e del callstack eseguendo moduli C compilati in-process con spoofing del callstack.


🔑 Manipolazione Token Windows On-Demand

Gli agenti su Windows possono rubare, memorizzare nella cache e impersonare token di accesso da processi in esecuzione — interamente in-process usando syscall NT indirette.

  • Rubare e Memorizzare: steal_token --pid <PID> duplica un token di processo tramite NtOpenProcess + NtDuplicateToken e lo memorizza in memoria per SID. Opzionalmente, incatena l'impersonificazione con --token <sid> per elevare da un'identità rubata a un'altra.
  • Enumerare: list_tokens mostra tutti i token memorizzati nella cache con nomi DOMAIN\User (SID).
  • Impersonificazione Universale: Riferisce un token memorizzato per SID (--token <sid>) in qualsiasi modulo — Go, Starlark, COFF/BOF. L'impersonificazione a livello di thread (NtSetInformationThread) viene applicata attorno alle operazioni sensibili.
  • Starlark Consapevole dei Token: Le funzioni integrate (read_file, write_file, exec_cmd, proxy API Win32, ecc.) impersonano automaticamente per ogni syscall quando un token è impostato, e exec_cmd può avviare processi figli sotto l'identità rubata tramite CreateProcessWithTokenW.

Perché è importante: Nessuno strumento esterno, nessun artefatto su disco, nessun rumore di creazione di processi. Il furto e il riutilizzo dei token avvengono interamente in-process usando syscall indirette, con token rubati immediatamente consumabili da ogni modulo integrato.


🎭 Trasporto C2 Pluggabile, Evasione JA3 uTLS e Protocollo CBOR

  • Modalità C2 Pluggabili: Beaconing flessibile (http_poll) con profili HTTP malleabili e streaming (h2conn) su HTTP/2.
  • Randomizzazione Firma JA3: Utilizza uTLS per randomizzare le impronte TLS Client Hello, sconfiggendo le firme di rete statiche.
  • Protocollo Wire Binario: Utilizza CBOR (Concise Binary Object Representation) per tutti i dati di controllo e la serializzazione wire, riducendo le dimensioni dei payload di rete del 30-40% rispetto a JSON.

💾 Storage Cifrato Memory-First

  • Filesystem Virtuale Cifrato in Memoria: Tutte le operazioni sui file dell'agente usano un filesystem virtuale AES-GCM in memoria. I dati di grandi dimensioni vengono automaticamente riversati su storage su disco cifrato senza header o estensioni identificabili.
  • Cache Intelligente Alimentata da P2P: Ogni agente abilitato P2P memorizza nella cache i file recuperati dal C2 nel memfs; poi li rende disponibili per altri peer, minimizzando l'impronta del traffico C2 sfruttando al contempo connessioni inter-agente veloci.

Avvio Rapido

1. Installazione del Server C2

La compilazione di emp3r0r richiede Docker o Podman sull'host. Non è richiesta alcuna toolchain Go locale.

# Clona il repository
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r

# Compila all'interno di un container e installa localmente
./install.py

L'installer compila i binari core all'interno di un container usa-e-getta, genera il emp3r0r-operator-kit.tar.zst precompilato, configura le capability Linux richieste (setcap) e imposta le directory di runtime di sistema.

Opzioni:

./install.py [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build] \
  [--lightweight] [--targets linux/amd64,windows/amd64]

Usa --lightweight per compilare solo i target exe/dll linux/amd64 e windows/amd64 (il più veloce, per distribuzioni solo x86-64), oppure --targets OS/ARCH,... per compilare un set specifico di tipi di payload.

Avvia il server C2:

emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377

Nota: Se installato con utente root invece del sudo standard, il tuo utente corrente potrebbe non essere in grado di avviare emp3r0r poiché i permessi non possono essere impostati correttamente dall'installer. Lo stesso vale anche per le tue macchine operatore.


2. Configurazione della Macchina Operatore

Trasferisci il emp3r0r-operator-kit.tar.zst generato sulla tua macchina operatore ed esegui l'installer:

tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.py

Collega il client operatore al server C2 usando le credenziali del tunnel WireGuard stampate dal 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

3. Genera i Payload dell'Agente

Usa il comando generate all'interno dell'interfaccia operatore emp3r0r per creare i payload.

Agente C2 Diretto:

generate --type linux_executable --arch amd64 --cc your.domain.com

Agente Gateway a Maglia:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --direct-c2 --p2p-transport mtls

Peer Intermedio a Maglia:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport mtls --peers 1.2.3.4

Documentazione e Risorse


Supporta lo Sviluppo

Se emp3r0r si è rivelato prezioso nella tua ricerca e nei tuoi test di sicurezza, considera di supportare il suo sviluppo continuo tramite GitHub Sponsors.

Categorie