
Erkennt Prozessinjektion und Speichermanipulation, die von Malware verwendet werden. Findet RWX-Bereiche, Shellcode-Muster, API-Hooks, Thread-Entführung und Process-Hollowing. Entwickelt in Rust für Geschwindigkeit. Beinhaltet CLI- und TUI-Schnittstellen.
Ghost ist ein Tool zur Erkennung von Prozessinjektionen, geschrieben in Rust. Es überwacht laufende Prozesse und versucht verdächtige Aktivitäten wie Code-Injektion, Speichermanipulation und andere Tricks zu erkennen, die Malware zur Tarnung verwendet.
Die Grundidee ist einfach: Prozesse scannen und nach merkwürdigen Speichermustern, gehookten Funktionen, Shellcode und anderen Anzeichen für Manipulationen suchen. Es funktioniert unter Windows, Linux und macOS (wobei der Windows-Support derzeit am vollständigsten ist).
Einige der Dinge, die es erkennen kann:
Es ordnet erkannte Verhaltensweisen auch dem MITRE ATT&CK-Framework zu, was bei der Dokumentation von Bedrohungen oder der Erstellung von Berichten hilfreich ist.



Sie benötigen Rust (Version 1.70 oder neuer). Dann:
cargo build --release
Unter Windows werden auch die MSVC-Build-Tools benötigt. Linux benötigt grundlegende Entwicklerwerkzeuge (gcc, etc.). macOS benötigt die Xcode-Befehlszeilentools.
Es gibt zwei Oberflächen: ein Befehlszeilentool und eine interaktive Terminal-Benutzeroberfläche (TUI).
CLI:
# Alle Prozesse scannen
cargo run --bin ghost-cli --release
# Einen bestimmten Prozess ansteuern
cargo run --bin ghost-cli --release -- --pid 1234
# Ergebnisse als JSON ausgeben
cargo run --bin ghost-cli --release -- --format json
# Konfigurationsdatei verwenden
cargo run --bin ghost-cli --release -- --config ghost.toml
# Kontinuierlicher Überwachungsmodus
cargo run --bin ghost-cli --release -- --watch
# Überwachung mit benutzerdefiniertem Intervall (10 Sekunden)
cargo run --bin ghost-cli --release -- --watch --interval 10
TUI:
cargo run --bin ghost-tui --release
Das TUI bietet ein Dashboard mit Live-Statistiken, Erkennungsverlauf und Sie können mit Tastenkombinationen navigieren (Tab zum Wechseln der Ansichten, Q zum Beenden).
Ghost unterstützt Tab-Vervollständigung für Bash, Zsh, Fish, PowerShell und Elvish.
# Vervollständigungen für Ihre Shell generieren
ghost completions bash > /etc/bash_completion.d/ghost
ghost completions zsh > ~/.zfunc/_ghost
ghost completions fish > ~/.config/fish/completions/ghost.fish
# Oder das Installationsskript verwenden
./completions/install.sh
Siehe completions/README.md für detaillierte Installationsanweisungen.
Ghost unterstützt optionale Funktionen, die während des Builds aktiviert werden können:
# YARA-Regel-Scanning (erfordert libyara)
cargo build --features yara-scanning
# Neuronale ML-Integration (erfordert Python und trainierte Modelle)
cargo build --features neural-ml
# eBPF-Erkennung (nur Linux, derzeit Stub-Implementierung)
cargo build --features ebpf-detection
Hinweis: ML-Funktionen erfordern trainierte Modelle, um zu funktionieren. Siehe ghost_ml/README.md für Trainingsanweisungen.
Sie können das Verhalten mit einer TOML-Konfigurationsdatei anpassen. Schauen Sie sich examples/ghost.toml als Ausgangspunkt an. Sie können bestimmte Erkennungsmethoden aktivieren/deaktivieren, Vertrauensschwellenwerte festlegen, Systemprozesse überspringen und die Scanhäufigkeit steuern.
Beispiel für einen Konfigurationsausschnitt:
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
Standardmäßig begrenzt Ghost die Ausgabe auf 10 Indikatoren pro Erkennung und entfernt Duplikate ähnlicher Funde. Bei großen Scans können Sie die Ausgabe weiter reduzieren:
Befehlszeilenoptionen:
# Zusammenfassungsmodus – gibt Statistiken statt vollständiger Details aus
ghost-cli --summary
# Indikatoren pro Erkennung begrenzen
ghost-cli --max-indicators 5
# Nur bösartige Erkennungen melden
ghost-cli --min-threat-level malicious
# Für minimale Ausgabe kombinieren
ghost-cli --summary --quiet
Konfigurationsdatei:
[output]
verbosity = "minimal" # minimal, normal oder verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
Dies ist nützlich beim Scannen vieler Prozesse oder beim Ausführen einer kontinuierlichen Überwachung, bei der Ausgabedateien sonst zu groß werden würden.
Der Watch-Modus ermöglicht es Ihnen, Ihr System kontinuierlich zu überwachen, ohne manuell Scans durchführen zu müssen. Es ist nützlich, um Injektionsversuche zu erfassen, während sie stattfinden.
# Überwachung starten (Standard: 5-Sekunden-Intervall)
ghost-cli --watch
# Benutzerdefiniertes Intervall
ghost-cli --watch --interval 10
# Bestimmten Prozess überwachen
ghost-cli --watch --pid 1234
# Stiller Modus – nur bei neuen Erkennungen alarmieren
ghost-cli --watch --quiet
Im Watch-Modus zeigt Ghost:
Beispielausgabe:
[14:32:15] Scan #1: sauber (142 Prozesse, 89ms)
[14:32:20] Scan #2: 2 NEUE Erkennungen! (2 gesamt, 142 Prozesse, 91ms)
[MALICIOUS] suspicious.exe (PID: 4521) - 87% Konfidenz
[SUSPICIOUS] helper.dll (PID: 2201) - 54% Konfidenz
[14:32:25] Scan #3: 2 bekannte Bedrohungen (142 Prozesse, 88ms)
Der Baseline-Modus erfasst eine Momentaufnahme des aktuellen Systemzustands. Spätere Scans können mit dieser Baseline verglichen werden, um Änderungen zu erkennen – nützlich, um neue Bedrohungen zu finden, ohne sich durch bekannte Probleme zu kämpfen.
# Aktuellen Zustand als Baseline speichern
ghost-cli --save-baseline baseline.json
# Später: Mit Baseline vergleichen
ghost-cli --baseline baseline.json
# Mit Watch-Modus kombinieren
ghost-cli --watch --baseline baseline.json
Beim Vergleich mit einer Baseline meldet Ghost:
Beispielausgabe:
3 Änderungen zur Baseline:
Neue Bedrohungen (1):
injector.exe (PID: 8821) - Bösartig
Hochgestufte Bedrohungen (1):
helper.dll (PID: 2201): Verdächtig -> Bösartig
Neue Indikatoren (1):
svchost.exe (PID: 1024):
- RWX-Speicherbereich erkannt
- Shellcode-Muster gefunden
Rückgabecode ist 1, wenn Änderungen erkannt wurden, 0 wenn sauber.
Ghost kann bei Erkennung von Bedrohungen Echtzeit-Benachrichtigungen an Slack, Discord oder einen beliebigen HTTP-Endpunkt senden. Ideal für die SOC-Integration oder um auf dem Handy benachrichtigt zu werden.
# 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"
# Generischer HTTP-POST (JSON-Payload)
ghost-cli --watch --webhook "https://your-siem.example.com/api/alerts"
# Automatische Erkennung des Typs überschreiben
ghost-cli --webhook "https://custom.url" --webhook-type slack
Ghost erkennt den Webhook-Typ automatisch anhand der URL:
hooks.slack.com → Slack-Format mit Anhängendiscord.com/api/webhooks → Discord-Format mit EmbedsSlack-Benachrichtigungen enthalten farbcodierte Anhänge mit Bedrohungsstufe, Konfidenzwert und den wichtigsten Indikatoren:
🚨 Ghost hat verdächtige Aktivität auf *prod-server-01* erkannt
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 suspicious.exe (PID: 4521)
• RWX-Speicherbereich an 0x7ff... erkannt
• Shellcode-Muster: NOP-Rutsche
Bedrohungsstufe: Bösartig | Konfidenz: 87%
Discord-Benachrichtigungen verwenden reichhaltige Embeds mit denselben Informationen in einem sauberen Format.
Generische Webhooks senden ein JSON-Payload:
{
"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", "..."]
}
Wenn Ghost etwas Verdächtiges findet, wird eine Bedrohungsstufe zugewiesen: Sauber, Niedrig, Mittel, Hoch oder Kritisch. Dies basiert auf der Anzahl der gefundenen Indikatoren und deren Schweregrad.
Hohe Konfidenz bedeutet nicht immer Malware – manche legitime Software macht auch merkwürdige Dinge mit dem Speicher. Bewerten Sie die Situation und untersuchen Sie bei Bedarf weiter.
Windows: Voll funktionsfähig. Prozessaufzählung, Speicherlesen, Hook-Erkennung, Erkennung von Process Hollowing, PE-Validierung und Thread-Analyse funktionieren alle.
Linux: Funktionale Kernfunktionen. Prozessaufzählung über procfs (/proc), Speicherlesen, LD_PRELOAD-Erkennung und ptrace-basierte Injektionserkennung funktionieren. eBPF-Unterstützung erfordert das ebpf-detection-Feature-Flag und ist derzeit eine Stub-Implementierung.
macOS: Teilweise Unterstützung. Prozessaufzählung, Aufzählung von Speicherbereichen, Speicherlesen und Thread-Aufzählung funktionieren über mach-VM-APIs. Hook-Erkennung umfasst DYLD_INSERT_LIBRARIES-Erkennung und Inline-Hook-Erkennungsframework.
Es ist so konzipiert, dass es schnell genug für die kontinuierliche Überwachung ist. Ein vollständiger Systemscan (200 Prozesse) dauert normalerweise unter 5 Sekunden. Die Speicherzählung pro Prozess liegt bei etwa 50–100 ms. Die Erkennungsengine selbst benötigt etwa 5–10 ms pro Analyse.
Das Tool enthält eine YARA-Regel-Integration. Regeln werden im Verzeichnis rules/ gespeichert und decken gängige Malware-Familien wie Metasploit, Cobalt Strike, generische Shellcode-Muster und Umgehungstechniken ab. Sie können eigene Regeln hinzufügen – legen Sie einfach .yar-Dateien in diesem Ordner ab.
Dies ist ein Userspace-Tool mit den folgenden Einschränkungen:
Weitere Details finden Sie im Ordner docs/:
DETECTION_METHODS.md – Erklärt, wie jede Erkennungstechnik funktioniertMITRE_ATTACK_COVERAGE.md – Listet auf, welche ATT&CK-Techniken abgedeckt sindPERFORMANCE_GUIDE.md – Tipps zur LeistungsoptimierungSchauen Sie sich auch CONTRIBUTING.md an, wenn Sie beitragen möchten, und SECURITY.md für die Sicherheitsrichtlinie.
MIT. Siehe die Lizenzdatei.
Dieses Tool dient der Sicherheitsforschung, dem Testen eigener Systeme und dem Erkennen tatsächlicher Bedrohungen. Verwenden Sie es nicht auf Systemen, die Ihnen nicht gehören oder für die Sie keine Berechtigung zum Testen haben. Seien Sie verantwortungsbewusst.
Wenn Sie einen tatsächlichen Vorfall untersuchen, denken Sie daran, dass Malware erkennen kann, dass sie analysiert wird, und sich anders verhalten oder abschalten könnte. Ghost versucht, unauffällig zu sein, aber es gibt keine Garantie, dass fortgeschrittene Malware es nicht bemerkt.