
Framework C2 in Assembly x64 fileless con pivoting di protocollo ICMP/DNS a doppio canale, esecuzione diretta di syscall e iniezione di processi basata su ptrace per un'esecuzione furtiva di comandi ed esfiltrazione di dati.
________ ___ ___ ________ ________ _________ ________ ________
|\ ____\|\ \|\ \|\ __ \|\ ____\|\___ ___\ |\ ____\|\_____ \
\ \ \___| \ \ \\\ \ \ \|\ \ \ \___|\|___ \ \_| \ \ \___|\|____|\ \
\ \ \ __ \ \ __ \ \ \\\ \ \_____ \ \ \ \ \ \ \ ____\_\ \
\ \ \|\ \ \ \ \ \ \ \\\ \|____|\ \ \ \ \ \ \ \___|\____ \ \
\ \_______\ \__\ \__\ \_______\____\_\ \ \ \__\ \ \______\\_________\
\|_______|\|__|\|__|\|_______|\_________\ \|__| \|______\|_________|
\|_________|
Implant C2 fileless in puro Assembly x64 che utilizza un'architettura a doppio canale (ICMP / DNS). Zero libc. Zero disco. Invisibile agli hook EDR standard.
⭐️ Se trovi utile questa ricerca, considera di mettere una stella per supportare lo sviluppo futuro
🚨 RICERCA TECNICA COMPLETA E CODICE SORGENTE: Questa repository è un riepilogo. Per l'analisi architetturale completa, i dettagli sull'evasione della memoria W^X e l'implementazione della VTable, visita la pagina ufficiale del progetto: ICMP-Ghost Technical Breakdown
Ghost-C2 è un framework di command-and-control scritto interamente in Assembly x64 Linux puro, senza dipendenze da libc. Ogni operazione passa attraverso syscall dirette. Non ci sono tabelle di importazione, nessun artefatto del dynamic linker e nessuna scrittura su disco.
Nato originariamente come canale stealth ICMP raw, la versione 3.6.2 introduce un'architettura di Protocol Pivoting a doppio canale. Gli operatori possono passare senza problemi il canale di comunicazione dell'implant tra ICMP Raw Sockets silenziosi e DNS UDP Tunneling elusivo, al volo. L'implant vive esclusivamente in RAM, iniettato in un processo di sistema in esecuzione tramite un loader personalizzato basato su ptrace.
Questo progetto è stato realizzato per esplorare fino a che punto possono spingersi lo stealth nello spazio utente e la sincronizzazione dello stato di rete senza toccare il kernel.
┌─────────────────────────────────────────────────────────────┐
│ OPERATOR MACHINE │
│ │
│ ┌──────────────┐ │
│ │ client.asm │ ← Terminal UI: Prompt IP/Domain + Cmd │
│ │ (Operator │ Encrypts payload with Rolling XOR │
│ │ Console) │ State Sync: ICMP mode / DNS mode │
│ └──────┬───────┘ │
│ │ │
└──────────┼──────────────────────────────────────────────────┘
│ Channel 1: Raw ICMP (Stateless, Port-less)
│ Channel 2: DNS UDP Port 53 (Asymmetric)
┌──────────┼──────────────────────────────────────────────────┐
│ │ TARGET MACHINE │
│ ▼ │
│ ┌──────────────┐ ┌─────────────────────────────────┐ │
│ │ loader.asm │────▶│ sniff.asm (PIC) │ │
│ │ (Phantom │ │ Lives in RAM only │ │
│ │ Loader) │ │ inside host process │ │
│ └──────────────┘ └────────────────┬────────────────┘ │
│ │ │
│ 1. Scans /proc for target PID │ Listens ICMP/DNS │
│ 2. ptrace ATTACH │ Validates Auth │
│ 3. Force remote mmap (RW) │ Decrypts command │
│ 4. Inject PIC shellcode │ fork+execve │
│ 5. mprotect → RX │ memfd_create │
│ 6. Redirect RIP → shellcode │ Compress(DPCM-RLE)│
│ 7. ptrace DETACH → exits │ Encrypt & Frag. │
│ │ Sends Reply │
└─────────────────────────────────────────┼───────────────────┘
│ Encrypted Traffic
▼
[ client.asm ]
Receives & Validates
Decrypts Payload
Decompresses (Hybrid)
Reassembles & Prints
client.asm — Console dell'OperatoreIl terminale lato attaccante. Gestisce l'interfaccia utente, la gestione dinamica della memoria e la sincronizzazione dello stato del target. Può inviare pacchetti sia come ICMP Echo Request che come query DNS TXT. Ascolta le risposte frammentate, previene i buffer overflow e ricostruisce l'output. Include un modulo di "Active Target Reconnection" per recuperare sessioni orfane.
sniff.asm — Agente Implant PICL'implant in esecuzione sul target. Compilato come binario raw (position-independent, senza header ELF) così da poter essere iniettato in indirizzi di memoria arbitrari. Aggiorna dinamicamente la sua VTable interna per passare dallo sniffing ICMP al binding UDP DNS in base ai comandi di pivot dell'operatore.
Phantom_Loader/loader.asm — Motore di IniezioneIl meccanismo di consegna. Scansiona /proc, trova un processo target tramite il nome comm e vi inietta la shellcode PIC usando una macchina a stati ptrace multistadio. Termina in modo pulito dopo l'iniezione — non lascia tracce.
Ghost-C2 v3.6.2 consente all'operatore di cambiare a caldo il protocollo di rete senza perdere l'agente. Inviando specifici comandi di pivot, le VTable sia nel Master che nell'Agente vengono sovrascritte dinamicamente:
!D (Pivot a DNS): Entrambi i nodi chiudono i socket ICMP e inizializzano la comunicazione UDP sulla Porta 53. Ideale per bypassare un filtraggio Layer 3 rigoroso mimetizzandosi nel traffico DNS aziendale.!I (Pivot a ICMP): L'Agente chiude i socket UDP, elimina i binding di porta e torna allo sniffing silenzioso su Raw Socket. Perfetto per la modalità stealth "Phantom".Il motore di trasmissione dati di Ghost-C2 utilizza un layer ibrido di compressione e codifica pesantemente ottimizzato in Assembly x86-64.