
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 :
Exemple de sortie :
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
Le code de sortie est 1 si des changements sont détectés, 0 si tout est propre.
Ghost peut envoyer des alertes en temps réel à Slack, Discord ou tout point de terminaison HTTP lorsqu'une menace est détectée. Parfait pour l'intégration SOC ou pour être notifié sur votre téléphone.
# 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 détecte automatiquement le type de webhook à partir de l'URL :
hooks.slack.com → format Slack avec pièces jointesdiscord.com/api/webhooks → format Discord avec embedsLes alertes Slack incluent des pièces jointes avec code couleur indiquant le niveau de menace, le score de confiance et les principaux indicateurs :
🚨 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%
Les alertes Discord utilisent des embeds riches avec les mêmes informations dans un format épuré.
Les webhooks génériques envoient une charge utile 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", "..."]
}
Lorsque Ghost trouve quelque chose de suspect, il attribue un niveau de menace : Clean, Low, Medium, High ou Critical. Cela dépend du nombre d'indicateurs trouvés et de leur gravité.
Une grande confiance ne signifie pas toujours un malware - certains logiciels légitimes font aussi des choses étranges avec la mémoire. Faites preuve de jugement et approfondissez l'investigation si nécessaire.
Windows : pleinement fonctionnel. L'énumération des processus, la lecture de la mémoire, la détection de hooks, la détection de process hollowing, la validation PE et l'analyse des threads fonctionnent tous.
Linux : fonctionnalités de base opérationnelles. L'énumération des processus via procfs (/proc), la lecture de la mémoire, la détection de LD_PRELOAD et la détection d'injection basée sur ptrace fonctionnent. La prise en charge d'eBPF nécessite l'indicateur de fonctionnalité ebpf-detection et n'est actuellement qu'une implémentation factice (stub).
macOS : prise en charge partielle. L'énumération des processus, l'énumération des régions mémoire, la lecture de la mémoire et l'énumération des threads fonctionnent à l'aide des API mach VM. La détection de hooks inclut la détection de DYLD_INSERT_LIBRARIES et un framework de détection de hooks inline.
Il est conçu pour être suffisamment rapide pour une surveillance continue. Une analyse complète du système (200 processus) prend généralement moins de 5 secondes. L'énumération de la mémoire par processus prend environ 50 à 100 ms. Le moteur de détection ajoute quant à lui environ 5 à 10 ms par analyse.
L'outil inclut une intégration de règles YARA. Les règles sont stockées dans le répertoire rules/ et couvrent des familles de malwares courantes comme Metasploit, Cobalt Strike, des modèles de shellcode génériques et des techniques d'évasion. Vous pouvez ajouter vos propres règles - il suffit de déposer des fichiers .yar dans ce dossier.
Cet outil est un outil d'espace utilisateur avec les limitations suivantes :
Plus de détails sont disponibles dans le dossier docs/ :
DETECTION_METHODS.md - Explique comment fonctionne chaque technique de détectionMITRE_ATTACK_COVERAGE.md - Liste les techniques ATT&CK couvertesPERFORMANCE_GUIDE.md - Conseils pour optimiser les performancesConsultez également CONTRIBUTING.md si vous souhaitez contribuer, et SECURITY.md pour la politique de sécurité.
MIT. Voir le fichier LICENSE.
Cet outil est destiné à la recherche en sécurité, aux tests de vos propres systèmes et à la détection de menaces réelles. Ne l'utilisez pas sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas la permission d'effectuer des tests. Soyez responsable.
De plus, si vous enquêtez sur un incident réel, rappelez-vous que les malwares peuvent détecter qu'ils sont analysés et peuvent se comporter différemment ou s'arrêter. Ghost essaie d'être furtif, mais rien ne garantit qu'un malware avancé ne le remarquera pas.