
Framework C2 em Assembly x64 sem arquivos com pivô de protocolo ICMP/DNS de canal duplo, execução direta de syscall e injeção de processo baseada em ptrace para execução furtiva de comandos e exfiltração de dados.
________ ___ ___ ________ ________ _________ ________ ________
|\ ____\|\ \|\ \|\ __ \|\ ____\|\___ ___\ |\ ____\|\_____ \
\ \ \___| \ \ \\\ \ \ \|\ \ \ \___|\|___ \ \_| \ \ \___|\|____|\ \
\ \ \ __ \ \ __ \ \ \\\ \ \_____ \ \ \ \ \ \ \ ____\_\ \
\ \ \|\ \ \ \ \ \ \ \\\ \|____|\ \ \ \ \ \ \ \___|\____ \ \
\ \_______\ \__\ \__\ \_______\____\_\ \ \ \__\ \ \______\\_________\
\|_______|\|__|\|__|\|_______|\_________\ \|__| \|______\|_________|
\|_________|
Implant C2 fileless, puro Assembly x64, utilizando uma arquitetura de Canal Duplo (ICMP / DNS). Zero libc. Zero disco. Invisível para hooks padrão de EDR.
⭐️ Se você considera esta pesquisa útil, por favor, considere dar uma estrela para apoiar o desenvolvimento contínuo
🚨 PESQUISA TÉCNICA COMPLETA & CÓDIGO FONTE: Este repositório é um resumo. Para a análise arquitetural completa, detalhes de evasão de memória W^X e implementação da VTable, visite a página oficial do projeto: ICMP-Ghost Technical Breakdown
Ghost-C2 é um framework de comando e controle escrito inteiramente em Assembly puro x64 Linux, sem dependências de libc. Cada operação passa por chamadas de sistema diretas. Não há tabelas de importação, artefatos de linker dinâmico ou gravações em disco.
Originalmente construído como um canal stealth bruto de ICMP, a versão 3.6.2 introduz uma arquitetura de Pivô de Protocolo de Canal Duplo. Operadores podem alternar perfeitamente o canal de comunicação do implante entre ICMP Raw Sockets silencioso e DNS UDP Tunneling evasivo em tempo real. O implante vive exclusivamente na RAM, injetado em um processo do sistema em execução através de um loader personalizado baseado em ptrace.
Este projeto foi construído para explorar o quanto a stealth em espaço de usuário e a sincronização de estado de rede podem chegar sem tocar no kernel.
┌─────────────────────────────────────────────────────────────┐
│ MÁQUINA DO OPERADOR │
│ │
│ ┌──────────────┐ │
│ │ client.asm │ ← Terminal UI: Prompt IP/Domain + Cmd │
│ │ (Console do │ Criptografa payload com XOR Rotativo │
│ │ Operador) │ Sincronização de Estado: modo ICMP │
│ │ │ / modo DNS │
│ └──────┬───────┘ │
│ │ │
└──────────┼──────────────────────────────────────────────────┘
│ Canal 1: ICMP Raw (Sem estado, Sem porta)
│ Canal 2: DNS UDP Porta 53 (Assimétrico)
┌──────────┼──────────────────────────────────────────────────┐
│ │ MÁQUINA ALVO │
│ ▼ │
│ ┌──────────────┐ ┌─────────────────────────────────┐ │
│ │ loader.asm │────▶│ sniff.asm (PIC) │ │
│ │ (Loader │ │ Vive apenas na RAM │ │
│ │ Fantasma) │ │ dentro do processo │ │
│ └──────────────┘ │ hospedeiro │ │
│ └────────────────┬────────────────┘ │
│ │ │
│ 1. Escaneia /proc por PID alvo │ Escuta ICMP/DNS │
│ 2. ptrace ATTACH │ Valida Autentica. │
│ 3. Força mmap remoto (RW) │ Descriptografa │
│ 4. Injeta shellcode PIC │ comando │
│ 5. mprotect → RX │ fork+execve │
│ 6. Redireciona RIP → shellcode │ memfd_create │
│ 7. ptrace DETACH → sai │ Comprime(DPCM-RLE)│
│ │ Criptografa & │
│ │ Fragmenta │
│ │ Envia Resposta │
└─────────────────────────────────────────┼───────────────────┘
│ Tráfego Criptografado
▼
[ client.asm ]
Recebe & Valida
Descriptografa Payload
Descomprime (Híbrido)
Remonta & Imprime
client.asm — Console do OperadorO terminal do lado do atacante. Lida com UI, gerenciamento dinâmico de memória e sincronização de estado do alvo. Pode enviar pacotes como Echo Requests ICMP ou consultas DNS TXT. Escuta respostas fragmentadas, previne estouros de buffer e reconstrói a saída. Possui um módulo de "Reconexão Ativa de Alvo" para resgatar sessões órfãs.
sniff.asm — Agente Implant PICO implante em execução no alvo. Compilado como um binário bruto (independente de posição, sem cabeçalhos ELF) para que possa ser injetado em endereços de memória arbitrários. Ele atualiza dinamicamente sua VTable interna para alternar entre sniffing ICMP e bind UDP DNS com base em comandos de pivô do operador.
Phantom_Loader/loader.asm — Motor de InjeçãoO mecanismo de entrega. Escaneia /proc, encontra um processo alvo pelo nome comm e injeta o shellcode PIC nele usando uma máquina de estados ptrace de múltiplos estágios. Sai limpo após a injeção — não deixa rastros.
Ghost-C2 v3.6.2 permite que o operador troque o protocolo de rede a quente sem perder o agente. Ao enviar comandos de pivô específicos, as VTables tanto no Mestre quanto no Agente são sobrescritas dinamicamente:
!D (Pivô para DNS): Ambos os nós fecham sockets ICMP e inicializam comunicação UDP Porta 53. Ideal para contornar filtragem estrita de Camada 3, misturando-se ao tráfego DNS corporativo.!I (Pivô para ICMP): O Agente fecha sockets UDP, mata bindings de porta e retorna ao sniffing silencioso de Raw Socket. Perfeito para modo stealth "Fantasma".O motor de transmissão de dados do Ghost-C2 utiliza uma camada híbrida de compressão e codificação fortemente otimizada em Assembly x86-64.