
Dateiloses x64-Assembly-C2-Framework mit Dual-Channel-ICMP/DNS-Protokoll-Pivoting, direkter Syscall-Ausführung und ptrace-basierter Prozessinjektion für verdeckte Befehlsausführung und Datenextiltration.
________ ___ ___ ________ ________ _________ ________ ________
|\ ____\|\ \|\ \|\ __ \|\ ____\|\___ ___\ |\ ____\|\_____ \
\ \ \___| \ \ \\\ \ \ \|\ \ \ \___|\|___ \ \_| \ \ \___|\|____|\ \
\ \ \ __ \ \ __ \ \ \\\ \ \_____ \ \ \ \ \ \ \ ____\_\ \
\ \ \|\ \ \ \ \ \ \ \ \\\ \|____|\ \ \ \ \ \ \ \___|\____ \ \
\ \_______\ \__\ \__\ \_______\____\_\ \ \ \__\ \ \______\\_________\
\|_______|\|__|\|__|\|_______|\_________\ \|__| \|______\|_________|
\|_________|
Dateiloser, reiner x64-Assembly-C2-Implantat, der eine Dual-Channel-Architektur (ICMP / DNS) nutzt. Null libc. Null Festplatte. Unsichtbar für standardmäßige EDR-Hooks.
⭐️ Wenn du diese Forschung nützlich findest, ziehe bitte in Betracht, ihr einen Stern zu geben, um die weitere Entwicklung zu unterstützen
🚨 VOLLSTÄNDIGE TECHNISCHE FORSCHUNG & QUELLCODE: Dieses Repository ist eine Zusammenfassung. Für die vollständige architektonische Aufschlüsselung, W^X-Speicher-Evasion-Details und VTable-Implementierung besuche die offizielle Projektseite: ICMP-Ghost Technical Breakdown
Ghost-C2 ist ein Command-and-Control-Framework, das vollständig in reinem x64-Linux-Assembly ohne libc-Abhängigkeiten geschrieben ist. Jeder Vorgang läuft über direkte Syscalls. Es gibt keine Importtabellen, keine Dynamic-Linker-Artefakte und keine Schreibvorgänge auf die Festplatte.
Ursprünglich als roher ICMP-Stealth-Kanal konzipiert, führt Version 3.6.2 eine Dual-Channel-Protokoll-Pivoting-Architektur ein. Betreiber können den Kommunikationskanal des Implantats im laufenden Betrieb nahtlos zwischen stillen ICMP-Raw-Sockets und ausweichendem DNS-UDP-Tunneling umschalten. Das Implantat lebt ausschließlich im RAM und wird über einen benutzerdefinierten ptrace-basierten Loader in einen laufenden Systemprozess injiziert.
Dieses Projekt entstand, um zu erkunden, wie weit User-Space-Stealth und Netzwerkzustandssynchronisation gehen können, ohne den Kernel zu berühren.
┌─────────────────────────────────────────────────────────────┐
│ 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 — Operator-KonsoleDas Terminal auf Angreiferseite. Verwaltet UI, dynamische Speicherverwaltung und Zielzustandssynchronisation. Kann Pakete entweder als ICMP-Echo-Requests oder DNS-TXT-Abfragen versenden. Lauscht auf fragmentierte Antworten, verhindert Pufferüberläufe und rekonstruiert die Ausgabe. Verfügt über ein Modul zur „Active Target Reconnection“, um verwaiste Sitzungen zu retten.
sniff.asm — PIC-Implantat-AgentDas auf dem Zielsystem laufende Implantat. Wird als rohes Binärformat kompiliert (positionsunabhängig, ohne ELF-Header), sodass es in beliebige Speicheradressen injiziert werden kann. Es aktualisiert dynamisch seine interne VTable, um auf Basis von Operator-Pivot-Befehlen zwischen ICMP-Sniffing und UDP-DNS-Bindung umzuschalten.
Phantom_Loader/loader.asm — Injektions-EngineDer Zustellmechanismus. Durchsucht /proc, findet einen Zielprozess anhand des Comm-Namens und injiziert den PIC-Shellcode mithilfe einer mehrstufigen ptrace-Zustandsmaschine. Beendet sich sauber nach der Injektion – hinterlässt keine Spuren.
Ghost-C2 v3.6.2 erlaubt dem Betreiber, das Netzwerkprotokoll zu wechseln, ohne den Agent zu verlieren. Durch das Senden spezifischer Pivot-Befehle werden die VTables sowohl im Master als auch im Agent dynamisch überschrieben:
!D (Pivot zu DNS): Beide Knoten schließen ICMP-Sockets und initialisieren die Kommunikation über UDP-Port 53. Ideal, um strenge Layer-3-Filter zu umgehen, indem man sich in den Unternehmens-DNS-Verkehr einfügt.!I (Pivot zu ICMP): Der Agent schließt UDP-Sockets, beendet Portbindungen und fällt zurück in stilles Raw-Socket-Sniffing. Perfekt für den „Phantom“-Stealth-Modus.Die Datenübertragungs-Engine von Ghost-C2 nutzt eine hybride Kompressions- und Kodierungsschicht, die stark in x86-64-Assembly optimiert ist.