
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.