
Détecte l'injection de processus et la manipulation de mémoire utilisées par les malwares. Repère les régions RWX, les motifs de shellcode, les hooks API, le détournement de threads et le process hollowing. Développé en Rust pour la rapidité. Comprend des interfaces CLI et TUI.
Ghost est un outil de détection d'injection de processus écrit en Rust. Il surveille les processus en cours d'exécution et tente de détecter des éléments suspects comme l'injection de code, la manipulation de la mémoire et d'autres astuces utilisées par les malwares pour se cacher.
L'idée principale est simple : analyser les processus et rechercher des modèles mémoire étranges, des fonctions hookées, du shellcode et d'autres signes indiquant qu'un élément a été altéré. Il fonctionne sous Windows, Linux et macOS (bien que la prise en charge de Windows soit actuellement la plus complète).
Parmi les choses qu'il peut détecter :
Il associe également les comportements détectés au framework MITRE ATT&CK, ce qui est utile si vous documentez des menaces ou rédigez des rapports.



Vous aurez besoin de Rust installé (version 1.70 ou plus récente). Ensuite :
cargo build --release
Sous Windows, vous aurez également besoin des outils de compilation MSVC. Linux nécessite les outils de développement de base (gcc, etc.). macOS nécessite les outils de ligne de commande Xcode.
Il existe deux interfaces : un outil en ligne de commande et une interface utilisateur de terminal interactive.
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 vous offre un tableau de bord avec des statistiques en direct, un historique de détection, et vous pouvez naviguer à l'aide de raccourcis clavier (Tab pour changer de vue, Q pour quitter).
Ghost prend en charge la complétion par tabulation pour Bash, Zsh, Fish, PowerShell et 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
Consultez completions/README.md pour des instructions d'installation détaillées.
Ghost prend en charge des fonctionnalités optionnelles qui peuvent être activées lors de la compilation :
# 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
Remarque : les fonctionnalités de ML nécessitent des modèles entraînés pour fonctionner. Consultez ghost_ml/README.md pour les instructions d'entraînement.
Vous pouvez ajuster le comportement à l'aide d'un fichier de configuration TOML. Consultez examples/ghost.toml comme point de départ. Vous pouvez activer/désactiver des méthodes de détection spécifiques, définir des seuils de confiance, ignorer les processus système et contrôler la fréquence d'analyse.
Exemple d'extrait de configuration :
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
Par défaut, Ghost limite la sortie à 10 indicateurs par détection et déduplique les résultats similaires. Pour les analyses volumineuses, vous pouvez réduire davantage la sortie :
Options en ligne de commande :
# 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
Fichier de configuration :
[output]
verbosity = "minimal" # minimal, normal, or verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
Ceci est utile lorsque vous analysez de nombreux processus ou que vous exécutez une surveillance continue, et que les fichiers de sortie deviendraient autrement trop volumineux.
Le mode surveillance vous permet de surveiller votre système en continu sans avoir à lancer des analyses manuellement. Il est utile pour détecter les tentatives d'injection au moment où elles se produisent.
# 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
En mode surveillance, Ghost :
Exemple de sortie :
[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)
Le mode ligne de base capture un instantané de l'état actuel de votre système. Les analyses ultérieures peuvent comparer avec cette ligne de base pour détecter les changements - utile pour trouver de nouvelles menaces sans avoir à parcourir les problèmes connus.
# 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
Lors de la comparaison avec une ligne de base, Ghost signale :