
Rileva l'iniezione di processi e la manipolazione della memoria utilizzate dal malware. Individua regioni RWX, pattern di shellcode, hook API, hijacking dei thread e process hollowing. Sviluppato in Rust per la velocità. Include interfacce CLI e TUI.
Ghost è uno strumento di rilevamento dell'iniezione di processi scritto in Rust. Monitora i processi in esecuzione e cerca di individuare attività sospette come l'iniezione di codice, la manipolazione della memoria e altri trucchi usati dal malware per nascondersi.
L'idea principale è semplice: analizzare i processi e cercare pattern di memoria anomali, funzioni hookate, shellcode e altri segni di manomissione. Funziona su Windows, Linux e macOS (anche se al momento il supporto Windows è il più completo).
Ecco alcune delle cose che può rilevare:
Inoltre, mappa i comportamenti rilevati sul framework MITRE ATT&CK, utile se stai documentando minacce o scrivendo report.



Devi avere Rust installato (1.70 o successivo). Poi:
cargo build --release
Su Windows ti servono anche gli strumenti di compilazione MSVC. Linux richiede gli strumenti di sviluppo di base (gcc, ecc.). macOS richiede gli strumenti da riga di comando di Xcode.
Ci sono due interfacce: uno strumento a riga di comando e un'interfaccia utente interattiva da terminale.
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
La TUI offre una dashboard con statistiche in tempo reale, cronologia dei rilevamenti e puoi navigare tramite scorciatoie da tastiera (Tab per cambiare vista, Q per uscire).
Ghost supporta il completamento tramite tab per Bash, Zsh, Fish, PowerShell ed 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
Consulta completions/README.md per istruzioni dettagliate sull'installazione.
Ghost supporta funzionalità opzionali che possono essere attivate in fase di compilazione:
# 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: le funzionalità di ML richiedono modelli addestrati per funzionare. Consulta ghost_ml/README.md per le istruzioni di addestramento.
Puoi modificare il comportamento con un file di configurazione TOML. Dai un'occhiata a examples/ghost.toml come punto di partenza. Puoi abilitare/disabilitare metodi di rilevamento specifici, impostare soglie di confidenza, saltare i processi di sistema e controllare la frequenza delle scansioni.
Esempio di frammento di configurazione:
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
Di default, Ghost limita l'output a 10 indicatori per rilevamento e deduplica risultati simili. Per scansioni estese, puoi ridurre ulteriormente l'output:
Opzioni da riga di 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
File di configurazione:
[output]
verbosity = "minimal" # minimal, normal, or verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
Ciò è utile quando si esegue la scansione di molti processi o quando si utilizza il monitoraggio continuo, dove altrimenti i file di output diventerebbero troppo grandi.
La modalità watch ti consente di monitorare il sistema in modo continuo senza dover eseguire scansioni manualmente. È utile per cogliere i tentativi di iniezione mentre si verificano.
# 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 è in esecuzione in modalità watch, Ghost:
Esempio di output:
[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)
La modalità baseline cattura un'istantanea dello stato attuale del sistema. Le scansioni successive possono confrontarsi con questa baseline per rilevare i cambiamenti: utile per individuare nuove minacce senza dover passare in rassegna problemi noti.
# 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
Quando confronta con una baseline, Ghost segnala:
Esempio di output:
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
Il codice di uscita è 1 se vengono rilevate modifiche, 0 se è tutto pulito.
Ghost può inviare avvisi in tempo reale a Slack, Discord o qualsiasi endpoint HTTP quando vengono rilevate minacce. Perfetto per l'integrazione con un SOC o per ricevere notifiche sul telefono.
# 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
Ghost rileva automaticamente il tipo di webhook dall'URL:
hooks.slack.com → formato Slack con allegatidiscord.com/api/webhooks → formato Discord con embedGli avvisi Slack includono allegati con codifica a colori, livello di minaccia, punteggio di confidenza e indicatori principali:
🚨 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%
Gli avvisi Discord utilizzano rich embed con le stesse informazioni in un formato pulito.
I webhook generici inviano un 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 Ghost trova qualcosa di sospetto, assegna un livello di minaccia: Clean, Low, Medium, High o Critical. Questo si basa su quanti indicatori ha trovato e su quanto siano gravi.
Un'elevata confidenza non significa sempre malware: anche alcuni software legittimi fanno cose strane con la memoria. Usa il tuo giudizio e approfondisci se necessario.
Windows: completamente funzionante. Enumerazione dei processi, lettura della memoria, rilevamento degli hook, rilevamento del process hollowing, validazione PE e analisi dei thread: tutto funziona.
Linux: funzionalità principali operative. Funzionano l'enumerazione dei processi tramite procfs (/proc), la lettura della memoria, il rilevamento di LD_PRELOAD e il rilevamento di iniezioni basato su ptrace. Il supporto eBPF richiede il flag di funzionalità ebpf-detection ed è attualmente un'implementazione stub.
macOS: supporto parziale. Funzionano l'enumerazione dei processi, l'enumerazione delle regioni di memoria, la lettura della memoria e l'enumerazione dei thread tramite le API mach VM. Il rilevamento degli hook include il rilevamento di DYLD_INSERT_LIBRARIES e un framework per il rilevamento di hook inline.
È progettato per essere abbastanza veloce da supportare il monitoraggio continuo. Una scansione completa del sistema (200 processi) richiede in genere meno di 5 secondi. L'enumerazione della memoria per processo richiede circa 50-100 ms. Il motore di rilevamento aggiunge circa 5-10 ms per analisi.
Lo strumento include l'integrazione delle regole YARA. Le regole sono archiviate nella directory rules/ e coprono famiglie di malware comuni come Metasploit, Cobalt Strike, pattern generici di shellcode e tecniche di evasione. Puoi aggiungere le tue regole: basta inserire i file .yar in quella cartella.
Questo è uno strumento in spazio utente con le seguenti limitazioni:
Maggiori dettagli nella cartella docs/:
DETECTION_METHODS.md - Spiega come funziona ogni tecnica di rilevamentoMITRE_ATTACK_COVERAGE.md - Elenca le tecniche ATT&CK copertePERFORMANCE_GUIDE.md - Suggerimenti per ottimizzare le prestazioniDai un'occhiata anche a CONTRIBUTING.md se vuoi contribuire e a SECURITY.md per la policy di sicurezza.
MIT. Consulta il file LICENSE.
Questo strumento è pensato per la ricerca sulla sicurezza, per testare i tuoi sistemi e per individuare minacce reali. Non usarlo su sistemi che non possiedi o su cui non hai il permesso di effettuare test. Sii responsabile.
Inoltre, se stai indagando su un incidente reale, ricorda che il malware può rilevare di essere analizzato e potrebbe comportarsi in modo diverso o spegnersi. Ghost cerca di essere furtivo, ma non c'è alcuna garanzia che un malware avanzato non se ne accorga.