
Detecta injeção de processo e manipulação de memória usadas por malware. Encontra regiões RWX, padrões de shellcode, hooks de API, sequestro de threads e process hollowing. Construído em Rust para velocidade. Inclui interfaces CLI e TUI.
O Ghost é uma ferramenta de detecção de injeção de processo escrita em Rust. Ele monitora os processos em execução e tenta detectar coisas suspeitas, como injeção de código, manipulação de memória e outros truques que malwares usam para se esconder.
A ideia principal é simples: escanear processos e procurar por padrões de memória estranhos, funções com hooks, shellcode e outros sinais de que algo foi adulterado. Funciona no Windows, Linux e macOS (embora o suporte ao Windows seja o mais completo no momento).
Algumas das coisas que ele pode detectar:
Ele também mapeia os comportamentos detectados para o framework MITRE ATT&CK, o que é útil se você estiver documentando ameaças ou escrevendo relatórios.



Você precisará ter o Rust instalado (1.70 ou mais recente). Depois:
cargo build --release
No Windows, você também precisará das ferramentas de build do MSVC. No Linux, são necessárias ferramentas básicas de desenvolvimento (gcc, etc.). No macOS, são necessárias as ferramentas de linha de comando do Xcode.
Existem duas interfaces: uma ferramenta de linha de comando e uma interface de terminal interativa.
CLI:
# Scan all processes
cargo run --bin ghost-cli --release
# Target one process
cargo run --bin ghost-cli --release -- --pid 1234
# Output results as JSON
cargo run --bin ghost-cli --release -- --format json
# Use a config file
cargo run --bin ghost-cli --release -- --config ghost.toml
# Continuous monitoring mode
cargo run --bin ghost-cli --release -- --watch
# Watch with custom interval (10 seconds)
cargo run --bin ghost-cli --release -- --watch --interval 10
TUI:
cargo run --bin ghost-tui --release
A TUI oferece um painel com estatísticas ao vivo, histórico de detecções, e você pode navegar com atalhos de teclado (Tab para alternar visualizações, Q para sair).
O Ghost suporta tab completion para Bash, Zsh, Fish, PowerShell e Elvish.
# Generate completions for your shell
ghost completions bash > /etc/bash_completion.d/ghost
ghost completions zsh > ~/.zfunc/_ghost
ghost completions fish > ~/.config/fish/completions/ghost.fish
# Or use the install script
./completions/install.sh
Consulte completions/README.md para instruções detalhadas de instalação.
O Ghost oferece suporte a recursos opcionais que podem ser habilitados durante a compilação:
# YARA rule scanning (requires libyara)
cargo build --features yara-scanning
# Neural ML integration (requires Python and trained models)
cargo build --features neural-ml
# eBPF detection (Linux only, currently stub implementation)
cargo build --features ebpf-detection
Nota: os recursos de ML exigem modelos treinados para funcionar. Consulte ghost_ml/README.md para instruções de treinamento.
Você pode ajustar o comportamento com um arquivo de configuração TOML. Veja examples/ghost.toml como ponto de partida. Você pode habilitar/desabilitar métodos de detecção específicos, definir limites de confiança, ignorar processos do sistema e controlar a frequência das varreduras.
Exemplo de trecho de configuração:
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
Por padrão, o Ghost limita a saída a 10 indicadores por detecção e deduplica descobertas semelhantes. Para varreduras grandes, você pode reduzir ainda mais a saída:
Opções de linha de comando:
# Summary mode - outputs statistics instead of full details
ghost-cli --summary
# Limit indicators per detection
ghost-cli --max-indicators 5
# Only report malicious detections
ghost-cli --min-threat-level malicious
# Combine for minimal output
ghost-cli --summary --quiet
Arquivo de configuração:
[output]
verbosity = "minimal" # minimal, normal, or verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
Isso é útil ao escanear muitos processos ou ao executar monitoramento contínuo, quando os arquivos de saída cresceriam demais.
O Modo Watch permite monitorar seu sistema continuamente sem precisar executar varreduras manualmente. É útil para detectar tentativas de injeção no momento em que ocorrem.
# Start watching (default: 5 second interval)
ghost-cli --watch
# Custom interval
ghost-cli --watch --interval 10
# Watch specific process
ghost-cli --watch --pid 1234
# Quiet mode - only alerts on new detections
ghost-cli --watch --quiet
Quando executado no modo watch, o Ghost:
Exemplo de saída:
[14:32:15] Scan #1: clean (142 processes, 89ms)
[14:32:20] Scan #2: 2 NEW detections! (2 total, 142 processes, 91ms)
[MALICIOUS] suspicious.exe (PID: 4521) - 87% confidence
[SUSPICIOUS] helper.dll (PID: 2201) - 54% confidence
[14:32:25] Scan #3: 2 known threats (142 processes, 88ms)
O Modo Baseline captura um instantâneo do estado atual do seu sistema. Varreduras posteriores podem comparar com essa linha de base para detectar mudanças - útil para encontrar novas ameaças sem ter que lidar com problemas conhecidos.
# Save current state as baseline
ghost-cli --save-baseline baseline.json
# Later: compare against baseline
ghost-cli --baseline baseline.json
# Combine with watch mode
ghost-cli --watch --baseline baseline.json
Ao comparar com uma linha de base, o Ghost relata:
Exemplo de saída:
3 changes from baseline:
New threats (1):
injector.exe (PID: 8821) - Malicious
Escalated threats (1):
helper.dll (PID: 2201): Suspicious -> Malicious
New indicators (1):
svchost.exe (PID: 1024):
- RWX memory region detected
- Shellcode pattern match
O código de saída é 1 se houver mudanças detectadas e 0 se estiver limpo.
O Ghost pode enviar alertas em tempo real para Slack, Discord ou qualquer endpoint HTTP quando ameaças forem detectadas. Perfeito para integração com SOC ou para receber notificações no celular.
# Slack webhook
ghost-cli --watch --webhook "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# Discord webhook
ghost-cli --watch --webhook "https://discord.com/api/webhooks/123/abc"
# Generic HTTP POST (JSON payload)
ghost-cli --watch --webhook "https://your-siem.example.com/api/alerts"
# Override auto-detected type
ghost-cli --webhook "https://custom.url" --webhook-type slack
O Ghost detecta automaticamente o tipo de webhook pela URL:
hooks.slack.com → formato Slack com attachmentsdiscord.com/api/webhooks → formato Discord com embedsAlertas do Slack incluem attachments com código de cores, nível de ameaça, pontuação de confiança e principais indicadores:
🚨 Ghost detected suspicious activity on *prod-server-01*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 suspicious.exe (PID: 4521)
• RWX memory region detected at 0x7ff...
• Shellcode pattern: NOP sled
Threat Level: Malicious | Confidence: 87%
Alertas do Discord usam embeds ricos com as mesmas informações em um formato limpo.
Webhooks genéricos enviam um payload JSON:
{
"event": "ghost.detection",
"timestamp": "2024-12-06T14:32:15Z",
"hostname": "prod-server-01",
"process_name": "suspicious.exe",
"pid": 4521,
"threat_level": "Malicious",
"confidence": 0.87,
"indicators": ["RWX memory region detected", "..."]
}
Quando o Ghost encontra algo suspeito, ele atribui um nível de ameaça: Clean, Low, Medium, High ou Critical. Isso é baseado em quantos indicadores foram encontrados e em como eles são graves.
Confiança alta nem sempre significa malware - alguns softwares legítimos também fazem coisas estranhas com memória. Use seu julgamento e investigue mais se necessário.
Windows: Totalmente funcional. Enumeração de processos, leitura de memória, detecção de hooks, detecção de process hollowing, validação de PE e análise de threads funcionam.
Linux: Recursos principais funcionais. Enumeração de processos via procfs (/proc), leitura de memória, detecção de LD_PRELOAD e detecção de injeção baseada em ptrace funcionam. O suporte a eBPF exige a flag de recurso ebpf-detection e atualmente é uma implementação provisória (stub).
macOS: Suporte parcial. Enumeração de processos, enumeração de regiões de memória, leitura de memória e enumeração de threads funcionam usando APIs mach VM. A detecção de hooks inclui detecção de DYLD_INSERT_LIBRARIES e um framework de detecção de hooks inline.
Ele foi projetado para ser rápido o suficiente para monitoramento contínuo. Uma varredura completa do sistema (200 processos) normalmente leva menos de 5 segundos. A enumeração de memória por processo leva cerca de 50-100ms. O mecanismo de detecção em si adiciona cerca de 5-10ms por análise.
A ferramenta inclui integração com regras YARA. As regras são armazenadas no diretório rules/ e cobrem famílias comuns de malware, como Metasploit, Cobalt Strike, padrões genéricos de shellcode e técnicas de evasão. Você pode adicionar suas próprias regras - basta colocar arquivos .yar nessa pasta.
Esta é uma ferramenta de espaço de usuário (userspace) com as seguintes limitações:
Há mais detalhes na pasta docs/:
DETECTION_METHODS.md - Explica como cada técnica de detecção funcionaMITRE_ATTACK_COVERAGE.md - Lista quais técnicas do ATT&CK são cobertasPERFORMANCE_GUIDE.md - Dicas para ajustar o desempenhoConfira também CONTRIBUTING.md se quiser contribuir, e SECURITY.md para a política de segurança.
MIT. Consulte o arquivo LICENSE.
Esta ferramenta é para pesquisa de segurança, testes nos seus próprios sistemas e detecção de ameaças reais. Não a use em sistemas que você não possui ou para os quais não tem permissão para testar. Seja responsável.
Além disso, se você estiver investigando um incidente real, lembre-se de que malwares podem detectar quando estão sendo analisados e podem se comportar de forma diferente ou se encerrar. O Ghost tenta ser discreto, mas não há garantia de que um malware avançado não irá notá-lo.