
Windows-Host-DFIR-Triage-Konsole, die Artefaktsammlung, Sigma-korrelierte Timelines, YARA-Scans, Socket- und Kontoinspektion, Indikator-Anreicherung und einen kalibrierten Risikoscore verkettet.
Richte Kage auf einen verdächtigen Windows-Host und es führt die gesamte Triage in einer einzigen Kette aus: CyLR sammelt die Artefakte, Hayabusa korreliert die Ereignisprotokolle gegen Sigma, THOR Lite sucht nach YARA-Treffern, VirusTotal und AbuseIPDB qualifizieren die Indikatoren, und der KI-Anbieter deiner Wahl entwirft den Bericht. Jede Stufe streamt live, versiegelt, was sie erzeugt hat, und kann allein erneut abgespielt werden.```bash pip install -r requirements.txt python -m dfirconsole # → http://127.0.0.1:8787
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/55114/7d59d87cd6f41f9d8dc66e4da743e6c6728a7156a06f9de9bdc18cdfd1fbb5cd/de22d9f23b6327fc806bbd1febb370cdca42f33eff3718eca9a0864eeb7d87e2-display-v1.webp" alt="Kage overview" width="100%">
<br><sub>Die Übersicht: elf versiegelte Schritte auf der linken Seite, das Ausführungsprotokoll
das live übertragen wird, und die Punktzahl aufgeteilt in ihre vier Komponenten.</sub>
</p>
---
## 📑 Inhaltsverzeichnis
- [Installation](#-installation)
- [Ersten Scan ausführen](#-running-your-first-scan)
- [THOR Lite manuell hinzufügen](#-adding-thor-lite-manually)
- [Die Kette](#-the-chain)
- [Risikobewertung](#-risk-score)
- [Warnmeldungen](#-alerts)
- [Systemkontext](#-system-context)
- [Protokollierung & Audit](#-logging--audit)
- [YARA](#-yara)
- [Siegel](#-seals)
- [Ansichten](#-views)
- [Konfiguration](#-configuration)
- [CLI-Referenz](#-cli-reference)
- [Fehlerbehebung](#-troubleshooting)
- [Linux-Version](#-linux-version--in-progress)
- [Danksagungen](#-credits)
---
## 📦 Installation
### Voraussetzungen
| | |
|---|---|
| OS | Windows 10 / 11 oder Windows Server |
| Python | 3.10+ von [python.org](https://www.python.org/downloads/), **für alle Benutzer installiert** |
| Rechte | **Administrator** |
| Speicherplatz | einige GB frei für die Sammlung |
### Installieren```powershell
# 1. Extract Kage anywhere — Desktop, C:\Kage, a USB stick, it does not matter
cd C:\Kage
# 2. Install the dependencies
pip install -r requirements.txt
# 3. Check the environment before touching a host
python preflight.py
preflight.py meldet, was bereit ist und was fehlt.```
Workspace : C:\Kage
System : Windows 11
Python : 3.12.3
Dependencies [ok] module fastapi [ok] module uvicorn [ok] module httpx
Rights and disk space [ok] console running as administrator [ok] free space: 84.2 GB
Tooling [!] CyLR in C:\Kage\tools\cylr → the "Locate the tooling" step downloads it [!] THOR Lite → optional step — it will simply be skipped
### Start — als Administrator```powershell
python -m dfirconsole
Oder klicken Sie mit der rechten Maustaste auf launch.bat → Als Administrator ausführen, wodurch die
virtualenv, die Installation und das Öffnen des Browsers für Sie übernommen werden.```
Kage DFIR Toolkit 1.5.0
code C:\Kage\dfirconsole
workspace C:\Kage
open http://127.0.0.1:8787
> **Der Arbeitsbereich ist dort, wo Sie gestartet sind.** Nichts zu konfigurieren. Tools,
> Beweise und Ausgaben landen alle neben der Konsole.
### Probieren Sie es zuerst ohne Risiko aus```powershell
python -m dfirconsole --demo
Der Demonstrationsmodus erzeugt eine synthetische Intrusion — bösartiger Anhang, kodiertes PowerShell, deaktivierter Defender, Credential-Diebstahl, Persistenz, C2, gelöschte Shadow Copies — und führt die gesamte Kette darauf aus. Nichts auf Ihrem Rechner wird berührt. Der beste Weg, die Oberfläche vor einem echten Vorfall kennenzulernen.
Als Administrator starten, http://127.0.0.1:8787 öffnen und prüfen, ob die Statusleiste
live run · Windows anzeigt und nicht demonstration mode.
Auf Settings klicken:
| Feld | Beispiel | Warum es wichtig ist |
|---|---|---|
| Case reference | INC-2026-0042 | benennt den Bericht, das Log und das Archiv |
| Analyst | N. Delaunay | erscheint im Berichtskopf |
Workspace folder leer lassen — es verfolgt den Startordner selbstständig. Auf Save klicken.
Die linke Spalte ist die chain of custody. Jeder Schritt hat ein Kontrollkästchen; alle sind standardmäßig angehakt außer dem YARA-Scan.
Für einen ersten Durchlauf alles abwählen außer:``` ☑ Prepare the workspace ☑ Exclude the folder from Defender ☑ Locate the tooling ☑ Update the Sigma rules
Klicke auf **Run 4 steps**. Etwa eine Minute. Dies lädt CyLR und Hayabusa herunter und
bestätigt, dass deine Rechteausweitung tatsächlich funktioniert, *bevor* etwas Langes beginnt.
### Schritt 4 — Sammeln und analysieren
Sobald diese vier versiegelt sind, markiere den Rest:```
☑ Collect the artefacts CyLR — a few minutes, several GB
☑ Capture the system context accounts, sockets, disk root, log coverage
☑ Build the timeline Hayabusa correlates against Sigma
☑ Analyse the timeline score, alert families, indicators
Klicke auf Ausführen und beobachte den Ausführungslog-Stream. Jeder abgeschlossene Schritt erhält ein Siegel — ein SHA-256, das du später verifizieren kannst.
| Wo | Was du bekommst |
|---|---|
| Übersicht | Risikobewertung mit ihren vier Komponenten, Warnungen nach Familie |
| Warnungen | jede Warnung, filterbar nach Schweregrad und Familie |
| System | Konten, Sockets, die an Prozesse gebunden sind, seltsame Ordner, Log-Abdeckung |
| Indikatoren | Hashes, IPs und Domains, die aus der Timeline extrahiert wurden |
Klicke auf eine beliebige Tabellenzeile, um den Lesebereich zu öffnen: jedes Feld, die vollständige Befehlszeile,
alle Rohdaten. ← → zum Wechseln zwischen Elementen, Esc zum Schließen.
Mit konfigurierten API-Schlüsseln:``` ☑ Enrich the indicators VirusTotal + AbuseIPDB reputation ☑ Write the summary the AI drafts the report
Ohne Schlüssel werden beide als *übersprungen* markiert und stattdessen eine **lokale Auswertung** erstellt — gleiche Struktur, kein Netzwerkaufruf.
### Schritt 7 — Export
Oben rechts im Dashboard:
- **Report** — druckbares HTML, dreizehn nummerierte Abschnitte, bereit für PDF
- **JSON** — der vollständige Zustand, inklusive Siegel
- **Log** — alles, was die Konsole ausgegeben hat
> 💡 **Einen einzelnen Schritt wiederholen:** Doppelklicke auf sein Tag in der linken Spalte. Nützlich,
> wenn Hayabusa fehlschlägt, aber die Sammlung in Ordnung ist — kein zweites Sammeln nötig.
---
## 🔦 THOR Lite manuell hinzufügen
Der YARA-Scan ist der eine Schritt, den Kage **nicht** für dich einrichten kann. Nextron verlangt
eine Registrierung, daher kann die Binärdatei nicht per Skript abgerufen werden. CyLR und Hayabusa
laden sich selbst herunter; THOR nicht.
### 1. Das Archiv besorgen
Registriere dich und lade es herunter unter
[nextron-systems.com/thor-lite](https://www.nextron-systems.com/thor-lite/).
Du erhältst den Scanner **und eine Lizenzdatei** (`.lic`) — normalerweise per E-Mail.
### 2. In `tools\thor\` ablegen
Kage hat diesen Ordner beim ersten Start bereits für dich erstellt. Kopiere den Inhalt des Archivs
hinein und **halte alles zusammen**:```
C:\Kage\
└── tools\
└── thor\ ← everything goes here
├── thor64-lite.exe the scanner
├── yourname.lic the licence — THOR will not start without it
├── config\ from the archive
├── signatures\ from the archive — the YARA rules themselves
└── custom-signatures\ from the archive
Warum sie zusammenbleiben sollten? THOR wird aus dem Verzeichnis ausgeführt, in dem sich seine ausführbare Datei befindet, und löst seine Signaturen relativ zu diesem Verzeichnis auf. Wenn Sie nur die Binärdatei kopieren, erhalten Sie einen Scanner, der nichts zum Scannen hat.
Die anderen beiden Tools befinden sich daneben, jedes in einem eigenen Ordner:```
tools
├── cylr\ CyLR.exe ← downloaded automatically
├── hayabusa\ hayabusa-.exe ← downloaded automatically
└── thor\ thor64-lite.exe + .lic ← you place this one
### 3. Überprüfen```powershell
python preflight.py
| -s | --server | SERVER | http://localhost:8080 | Server URL |
| -t | --token | TOKEN | – | API token |
| -o | --output | FILE | stdout | Output file |
| -v | --verbose | – | false | Enable verbose output |
| -q | --quiet | – | false | Suppress non-error output |
| --timeout | – | SECONDS | 30 | Request timeout |
| --retry | – | COUNT | 3 | Number of retries |
| --insecure | – | – | false | Skip TLS verification |
| --config | – | FILE | ~/.toolrc | Config file path |
# Basic usage
tool scan --target example.com
# With authentication
tool scan --target example.com --token $API_TOKEN
# Output to file
tool scan --target example.com --output results.json
# Verbose mode with custom timeout
tool scan --target example.com --verbose --timeout 60
The tool reads configuration from ~/.toolrc by default. The file uses YAML format:
server: http://localhost:8080
token: your-api-token
timeout: 30
retry: 3
insecure: false
Environment variables override configuration file values:
export TOOL_SERVER=http://localhost:8080
export TOOL_TOKEN=your-api-token
| Code | Description |
|---|---|
0 | Success |
1 | General error |
2 | Invalid arguments |
3 | Authentication failed |
4 | Network error |
5 | Timeout |
If you encounter a connection refused error, verify that the server is running:
curl -I http://localhost:8080/health
Ensure your API token is valid and has not expired. You can regenerate a token from the web interface.
On Unix systems, you may need to make the binary executable:
chmod +x tool
We welcome contributions! Please follow these steps:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Please ensure your code follows the existing style and includes appropriate tests.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this tool useful, please consider:
For support, please open an issue on GitHub or join our community chat.``` Tooling [ok] CyLR in C:\Kage\tools\cylr [ok] Hayabusa in C:\Kage\tools\hayabusa [ok] THOR Lite: C:\Kage\tools\thor\thor64-lite.exe [ok] THOR licence file (*.lic)
Wenn die Lizenzzeile `[!]` anzeigt, startet THOR und stoppt sofort.
### 4. Den Umfang wählen — das entscheidet alles
**Einstellungen → YARA-Scan-Ordner:**
| Wert | Scannt | Dauer |
|---|---|---|
| *(leer)* | die von CyLR gerade gesammelten Artefakte | Minuten |
| `C:\Users\target` | ein Benutzerprofil | Minuten |
| `C:\` | das gesamte Systemvolume | **Stunden** |
Aktiviere **YARA-Scan** in der Kette und führe ihn aus. Urteile erscheinen live, während Dateien
untersucht werden — Alarme, Warnungen, Hinweise *und* saubere Dateien, jeweils mit ihrem Hash.
**Standardmäßig kein Zeitlimit.** Ein dreistündiger Durchlauf ist eine Entscheidung, keine Anomalie.
Lege eines in Minuten fest, wenn du eine Obergrenze möchtest.
> Ohne THOR meldet sich der Schritt als *übersprungen* und die Kette läuft weiter.
> Du verlierst die YARA-Achse der Bewertung — sonst nichts.
---
## 🔗 Die Kette
Elf Schritte. Aktiviere, was du brauchst, doppelklicke auf ein Tag, um einen allein erneut auszuführen.
| # | Schritt | Was tatsächlich ausgeführt wird |
|---|---|---|
| 01 | Den Arbeitsbereich vorbereiten | Ordnerstruktur, Rechte- und Speicherplatzprüfung |
| 02 | Von Defender ausschließen | `Add-MpPreference -ExclusionPath <workspace>` |
| 03 | Die Tooling-Suite lokalisieren | löst CyLR + Hayabusa auf und lädt sie von GitHub-Releases herunter |
| 04 | Die Artefakte sammeln | `CyLR.exe -od evidence\ -of <case>.zip -v` |
| 05 | Den Systemkontext erfassen | `systeminfo` · `Get-LocalUser` · `netstat -ano` · `tasklist` · `auditpol` |
| 06 | Die Sigma-Regeln aktualisieren | `hayabusa update-rules` |
| 07 | Die Timeline erstellen | `hayabusa <csv\|dfir>-timeline -d <Logs> -o hayabusa-output.csv -r <rules>` |
| 08 | Die Timeline analysieren | Bewertung, Alarmfamilien, Indikatorextraktion |
| 09 | YARA-Scan *(optional)* | `thor64-lite.exe --nocsv -p <chosen folder>` |
| 10 | Die Indikatoren anreichern | VirusTotal v3 · AbuseIPDB v2 |
| 11 | Die Zusammenfassung schreiben | dein KI-Anbieter oder eine lokale Ausarbeitung |
Das Hayabusa-Unterkommando wird aus seiner eigenen Hilfeausgabe gelesen, sodass v3
(`csv-timeline`) und v4 (`dfir-timeline`) beide funktionieren und nicht unterstützte Flags
verworfen werden, anstatt den Befehl fehlschlagen zu lassen.
---
## 🎯 Risikobewertung
Eine **Triage-Priorität, kein Beweis** — und niemals ohne ihre Aufschlüsselung veröffentlicht.```
80 / 100 Compromise confirmed by multiple sources
CONFIDENCE HIGH · 441 events analysed
SEVERITY 45 / 45 8 critical, 10 high, 3 medium
KILL CHAIN 25 / 25 10 ATT&CK tactics, 7 decisive
REPUTATION 0 / 20 no indicator confirmed externally
CORROBORATION 10 / 10 3 YARA detections · 3 active connections to public hosts
Vier unabhängige Achsen, jede gedeckelt. Das verhindert, dass eine einzelne verrauschte Regel, die dreihundert Mal auslöst, zum selben Urteil führt wie eine echte mehrstufige Intrusion.
Konfidenz ist von der Schwere getrennt. Sie zählt, wie viele unabhängige Quellen übereinstimmen und ob die Logging-Abdeckung ausreichend war — daher liest sich ein hoher Wert, der allein auf Sigma basiert, als starker Hinweis, niemals als Bestätigung:
| Wert | Konfidenz hoch | Konfidenz niedrig |
|---|---|---|
| ≥ 70 | Kompromittierung durch mehrere Quellen bestätigt | Kompromittierung höchst wahrscheinlich — Bestätigung noch begrenzt |
| ≥ 45 | Wahrscheinliche Kompromittierung — Eindämmung empfohlen | Starke Hinweise aus einer einzelnen Quelle |
| ≥ 25 | Verdächtige Aktivität, die qualifiziert werden muss | |
| ≥ 10 | Schwache Signale, keine festgestellte Kompromittierung | |
| < 10 | Nichts Eindeutiges |
Wird jedes Mal neu berechnet, wenn eine neue Quelle eintrifft — nach der Timeline, nach YARA, nach der Anreicherung.

Die Schwere gibt an, wie dringend. Die Familien geben an, welcher Art.``` FAMILIES AUTHENTICATION 4 INFECTION 1 EXECUTION 6 NETWORK 5 EVASION 5 OTHER 0
TIMESTAMP LEVEL FAMILY RULE ID 09/09 10:26 CRITICAL EVASION Windows Defender Disabled 5001 09/09 11:09 CRITICAL EVASION Volume Shadow Copies Deleted 4688 09/09 11:15 CRITICAL EVASION Security Event Log Cleared 1102 09/09 10:32 CRITICAL AUTH LSASS Memory Access 10
Klassifiziert zuerst nach Event-ID, dann nach Wortlaut. **Wenn die beiden
nicht übereinstimmen, gewinnt der Text**: Ein `4688` ist eine Prozesserstellung,
aber `vssadmin delete shadows` gehört unter Evasion, weil ein Analyst genau dort
danach suchen wird.
**Die Familienzahlen stimmen immer mit der Tabelle überein.** Berechnet über
die Alarme, die tatsächlich die Liste erreichen — ein Badge, das Zeilen
verspricht, die man nicht finden kann, ist ein Bug, kein Detail.
**Das Histogramm folgt der Auswahl.** Ist eine Familie aktiv, wird das
beobachtete Fenster in der Farbe dieser Familie neu gezeichnet und ein Tick
markiert ihren geschäftigsten Moment.
**Die Triage markiert sich nicht selbst.** THOR schreibt während seiner
Ausführung in das Windows-Ereignisprotokoll, und das Scannen eines Ordners mit
offensiven Binärdateien führt dazu, dass Hayabusa unseren eigenen Scanner
markiert. Diese Ereignisse werden ausgeschlossen, separat gezählt und die
Gesamtzahl wird berichtet.
---
## 🖥️ Systemkontext

Was kein Ereignisprotokoll verrät, schreibgeschützt erfasst:```
NETWORK — 7 listening, 4 established, 8 flagged
RISK PROTO LOCAL REMOTE PROCESS
HIGH TCP 10.20.4.11:52233 45.155.205.233:8443 powershell.exe
→ active connection to the Internet · powershell.exe should not
open a socket · remote port 8443 associated with offensive tooling
HIGH TCP 0.0.0.0:3389 — TermService.exe
→ exposed listener on RDP
ROOT C:\ — 3 flagged entries
HIGH C:\Tools folder created 0 day(s) ago
→ non-standard entry at the disk root · name suggests tooling
HIGH C:\Temp folder → frequently abused location
Jeder Socket wird über die PID seinem besitzenden Prozess zugeordnet — diese Querverweisung
macht es auf einen Blick lesbar, wenn powershell.exe eine Verbindung zu einem öffentlichen Host hält.
Lokale Konten werden auf Administratoren-Mitgliedschaft, ruhenden-aber-aktivierten Zustand und letzte Anmeldung geprüft. Öffentliche Adressen aus established-Verbindungen gelangen automatisch in die Indikatorliste: Eine Adresse, mit der während der Triage kommuniziert wird, ist mindestens so viel wert wie eine, die aus einem drei Tage alten Log-Eintrag gelesen wurde.
Eine Triage ist nur so viel wert, wie die Maschine bereit war aufzuzeichnen.``` LOGGING & AUDIT — coverage 51/100 · partial coverage
Blind spots: Sysmon · PowerShell (script blocks) · Process creation · Credential validation
STATE CHANNEL IMPORTANCE EVENTS ACTIVE Security critical 84 213 MISSING Sysmon critical — EMPTY PowerShell (script blocks) critical — ACTIVE System important 12 045 DISABLED WinRM important —
Sechzehn Kanäle klassifiziert als **aktiv / leer / deaktiviert / fehlend** — die
Unterscheidung ist wichtig: Ein leerer Kanal ist einen Befehl von der Behebung entfernt, ein fehlender
erfordert ein Deployment. Dreizehn `auditpol`-Unterkategorien werden daneben gelesen.
Der Abdeckungswert steht neben dem Risikowert. *Risiko 80, Abdeckung 51* bedeutet, dass das
Urteil auf der Hälfte der verfügbaren Informationen beruht — und der Bericht sagt das auch.
---
## 🔬 YARA
```
8 verdicts
VERDICT DETECTION FILE HASH SCORE
ALERT YARA rule HKTL_Rubeus C:\AD\Tools\Rubeus.exe 9c4133ee… 100
ALERT YARA rule HKTL_AmsiTrigger C:\AD\Tools\AmsiTrigger.exe af7af55c… 95
ALERT YARA rule PS_Reverse_Shell C:\AD\Tools\PowerShellTcp… ab1e98e8… 80
WARNING Suspicious filename C:\AD\Tools\svchost32.exe 6b6f1901… —
NOTICE File checked - signed C:\AD\Tools\chrome.exe c5a10bff… —
CLEAN Clean C:\AD\Tools\notepad.exe 20eded6a… —
Die Seite füllt sich während des Scans, nicht erst, wenn etwas gefunden wird. Das ist es, was nichts gefunden von nichts angesehen unterscheidet.
Der Scan beginnt beim ersten echten Fund. THOR eröffnet jeden Lauf mit einem Dutzend Bannerzeilen — Version, Build, Hostname, Arbeitsverzeichnis, Argumentliste, Uptime — und schließt mit einer Zusammenfassung. Nichts davon beschreibt den zu untersuchenden Host, also erreicht nichts davon die Ansicht. Hashes aus Alarmen werden in die Indikatorliste geschoben, bereit für VirusTotal.
Jeder abgeschlossene Schritt wird mit einem SHA-256 versiegelt, und das Siegel gibt an, was es abdeckt:``` ✔ Analyse the timeline SEALED 0.1s seal 31d1991a65598de8 — content of hayabusa-output.csv
✔ Exclude the folder from Defender SEALED 6.2s seal 8f2c04b71ae93d55 — execution record (no file produced)
Wenn ein Schritt Dateien erzeugt hat, ist das Siegel der Hash **ihres Inhalts** — führe ihn später erneut aus, und du hast den Beweis, dass das Artefakt nicht verändert wurde. Wenn er keine erzeugt hat, deckt das Siegel nur den Ausführungsdatensatz ab und sagt das auch, statt mehr zu implizieren.
---
## 🧭 Ansichten
Jede Ansicht hat ihre eigene URL, lädt nichts neu und verliert nichts — die Analyse lebt serverseitig, und ein vollständiges Neuladen stellt sie wieder her.
| Adresse | Inhalt |
|---|---|
| `/` | Pipeline, Ausführungsprotokoll, Aufschlüsselung nach Familie |
| `/alerts` | Warnungen nach Schweregrad und Familie |
| `/indicators` | Indikatoren mit VirusTotal-/AbuseIPDB-Reputation |
| `/system` | Maschine, Konten, Netzwerk, Datenträgerwurzel, Abdeckung |
| `/yara` | THOR-Urteile, live während des Scans |
| `/attack` | abgeleitete ATT&CK-Taktiken |
| `/summary` | schriftlicher Bericht |
| `/log` | vollständiges Protokoll, herunterladbar |
### Live-Ausführung

Jeder Befehl wird während der Ausführung gestreamt. Schritte werden nacheinander versiegelt; die Uhr stoppt, wenn die Kette es tut.
### Indikatoren

Hashes, IPs und Domains, extrahiert aus der Timeline, aus aktiven Sockets und aus YARA-Treffern — jeweils mit ihrer Reputation, sobald die Anreicherung gelaufen ist.
### ATT&CK-Taktiken

### Lesebereich

Jede Zeile, überall, öffnet sich vollständig: jedes Feld, die vollständige Befehlszeile, die rohen THOR-Daten. `←` `→` zum Wechseln zwischen Elementen, `Esc` zum Schließen, **Copy** für JSON.
### Schriftliche Zusammenfassung

Beobachtete Fakten getrennt von bewerteten, kalibrierte Sprache und ein expliziter Abschnitt zu Evidenzlücken, der benennt, was die Protokollierung nicht hätte zeigen können.
### Einstellungen

### Ausführungsprotokoll

---
## 📄 Der Bericht
`/api/report.html` — eigenständig, dunkel, dreizehn nummerierte Abschnitte, bereit zum Drucken als PDF. Keine externe Ressource: Er bleibt in zehn Jahren auf einer Offline-Maschine lesbar.
### Urteil und Punktzahl

Die Punktzahl erscheint nie ohne ihre vier Komponenten, sodass ein Leser eine Achse anfechten kann statt einer undurchsichtigen Zahl.
### Feststellungen und Eindämmung

### Evidenzlücken und Beweiskette

Jeder Schritt mit seinem Siegel und **was dieses Siegel abdeckt** — den Inhalt einer benannten Datei oder allein den Ausführungsdatensatz.
> Beim Drucken als PDF in den Browseroptionen *Hintergrundgrafiken* aktivieren, sonst wird der dunkle Hintergrund verworfen.
---
## ⚙️ Konfiguration
### Werkzeug-Layout
Jedes Werkzeug besitzt einen Ordner, und jedes wird mit einer README ausgeliefert, die erklärt, was hineingehört.```
<workspace>/
├── tools/
│ ├── cylr/ CyLR.exe ← downloaded automatically
│ ├── hayabusa/ hayabusa-<version>.exe ← downloaded automatically
│ └── thor/ thor64-lite.exe + .lic ← manual, registration required
├── evidence/ collection archive, unpacked
└── output/ timeline, logs, enrichment cache
CyLR und Hayabusa installieren sich selbst. Der Schritt Locate the tooling fragt die GitHub-Releases-API ab, wählt das aktuelle Windows-x64-Asset aus und entpackt es in den richtigen Ordner. Eine Version festzunageln bedeutet, dass der Download an dem Tag bricht, an dem das Upstream-Projekt weiterzieht; sie aufzulösen bedeutet, dass die Konsole unbeaufsichtigt weiterläuft. Eine festgeschriebene URL übernimmt, falls die API nicht erreichbar ist.
Alles funktioniert ohne einen einzigen Schlüssel. Nicht konfigurierte Schritte werden als übersprungen markiert, niemals als fehlgeschlagen.
Wohin die Anmeldedaten gehören. Das Repository liefert apikeys.env.example mit, eine Vorlage mit leeren Werten. Kopieren Sie sie, und bewahren Sie die Kopie lokal auf:```powershell
copy apikeys.env.example apikeys.env
notepad apikeys.env
| `-s` | `--server` | Server-Modus aktivieren (Standard) |
| `-c` | `--client` | Client-Modus aktivieren |
| `-p` | `--port` | Port zum Abhören oder Verbinden angeben |
| `-h` | `--host` | Host zum Verbinden angeben (Client-Modus) |
| `-v` | `--verbose` | Ausführliche Ausgabe aktivieren |
| `-q` | `--quiet` | Stille Ausgabe aktivieren |
| `-d` | `--debug` | Debug-Ausgabe aktivieren |
| `-V` | `--version` | Programmversion anzeigen |
| `-H` | `--help` | Hilfemeldung anzeigen |
### Beispiele
#### Grundlegende Verwendung
Starten Sie einen Server, der auf Port 4444 abhört:
```bash
./server -p 4444
Verbinden Sie sich mit einem Server:
./client -h 192.168.1.100 -p 4444
Starten Sie einen Server mit ausführlicher Ausgabe:
./server -p 4444 -v
Verbinden Sie sich mit einem Server mit Debug-Ausgabe:
./client -h 192.168.1.100 -p 4444 -d
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Dieses Tool ist nur für Bildungs- und Testzwecke gedacht. Die Verwendung für unbefugte Aktivitäten ist illegal und verstößt gegen die Ethik. Der Autor ist nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
Beiträge sind willkommen! Bitte reichen Sie einen Pull Request ein.
Bei Fragen oder Anliegen kontaktieren Sie mich bitte unter [email address].

VT_API_KEY=your_virustotal_key ABUSEIPDB_API_KEY=your_abuseipdb_key
AI_PROVIDER=groq AI_API_KEY=your_provider_key AI_MODEL=
**Wo bekommt man sie**
| Schlüssel | Kostenlose Stufe | Registrierung |
|---|---|---|
| `VT_API_KEY` | 4 Anfragen/Minute, 500/Tag | [virustotal.com](https://www.virustotal.com/gui/join-us) |
| `ABUSEIPDB_API_KEY` | 1 000 Abfragen/Tag | [abuseipdb.com](https://www.abuseipdb.com/register) |
| `AI_API_KEY` | variiert — Groq und Ollama sind kostenlos | siehe die Anbietertabelle unten |
Du kannst sie auch als Umgebungsvariablen anstelle einer Datei festlegen, was
normalerweise das ist, was du in einem Container oder auf einer gemeinsam genutzten Responder-Workstation willst:```powershell
$env:VT_API_KEY = "..."
python -m dfirconsole
Jeder hat seinen eigenen Endpunkt, explizit verdrahtet, sodass die Wahl von Groq niemals deinen Schlüssel an OpenAI sendet.
| Provider | Endpunkt | Standardmodell |
|---|---|---|
| Anthropic | api.anthropic.com | claude-sonnet-4-6 |
| OpenAI | api.openai.com/v1 | gpt-4o |
| Groq | api.groq.com/openai/v1 | llama-3.3-70b-versatile |
| Mistral | api.mistral.ai/v1 | mistral-large-latest |
| OpenRouter | openrouter.ai/api/v1 | anthropic/claude-sonnet-4 |
| Ollama | localhost:11434/v1 | llama3.1 — kein Schlüssel |
| None | — | lokale Auswertung |
Kleine kostenlose Kontingente werden berücksichtigt: Groq erlaubt 12 000 Token pro Minute, daher wird die Nutzlast gegen diese Obergrenze gemessen und bei einer Größenablehnung mit weniger Warnungen und kürzeren Details erneut gesendet. Das Urteil bleibt bestehen; nur die unterstützenden Belege werden dünner.
Das Modell wird an einem Standard gemessen — Beobachtetes von Bewertetem getrennt, kalibrierte Sprache, quantifizierte Aussagen, explizite Evidenzlücken und die gutartige Erklärung berücksichtigt.
python -m dfirconsole console on 127.0.0.1:8787 python -m dfirconsole --port 9000 custom port python -m dfirconsole --demo synthetic data, no collection python preflight.py environment check python preflight.py D:\CASE42 check another workspace
python -m pytest tests/ -q 115 tests python tests/ui_check.py browser: full chain, reading pane python tests/ui_nav.py browser: navigation, counts, histogram python tests/ui_flood.py browser: 6000 log lines at once
Browser-Läufe benötigen `pip install playwright && playwright install chromium`.
---
## 🔧 Fehlerbehebung
**„Administratorrechte erforderlich" / Defender-Ausnahme abgelehnt**
Kage läuft nicht mit erhöhten Rechten. Schließe es, klicke mit der rechten Maustaste auf `launch.bat` → *Als Administrator ausführen*, oder öffne zuerst PowerShell als Administrator.
**`did not find executable … python.exe`**
Dein Python stammt aus dem Microsoft Store, das pro Benutzer installiert wird und in einer Administrator-Sitzung verschwindet. Installiere es von python.org neu, *für alle Benutzer*.
**CyLR hat kein Archiv erzeugt / die Sammlung ist leer**
Füge `--force-native` zu **Einstellungen → CyLR-Argumente** hinzu. Dadurch wird das direkte NTFS-Lesen zugunsten der Windows-API aufgegeben, was funktioniert, wenn die Partitionserkennung auf einem Datenträger fehlschlägt.
**THOR startet und verstummt dann**
Seine Lizenz fehlt oder ist abgelaufen, oder `signatures\` wurde nicht neben die Binärdatei kopiert. Führe `preflight.py` aus, um dies zu bestätigen.
---
## 🐧 Linux-Version — in Arbeit
Eine Linux-Triage-Kette wird auf derselben Konsole, mit denselben Ansichten und demselben Bewertungsmodell aufgebaut. Die Parser sind bereits plattformunabhängig; was sich ändert, ist die Evidenzschicht:
| Windows | Linux (in Arbeit) |
|---|---|
| CyLR-Sammlung | UAC / CyLR Linux-Sammlung |
| EVTX + Hayabusa Sigma | `journald` / `auth.log` / `syslog` + Sigma |
| `Get-LocalUser` · `auditpol` | `/etc/passwd` · `/etc/shadow` · `auditd`-Regeln |
| `netstat -ano` + `tasklist` | `ss -tunap` |
| Anomalien im Datenträgerstamm | `/tmp` · `/dev/shm` · `/var/tmp` · cron · systemd-Units |
| THOR Lite | THOR Lite für Linux |
Gib dem Repo einen Stern oder beobachte es, um das Release mitzubekommen.
---
## 🙏 Danksagungen
Kage ist eine Konsole, kein Collector und kein Scanner. Die Schwerstarbeit gehört diesen Projekten, und sie verdienen den Stern weit mehr als dieses Repo:
| Tool | Repository | Rolle in der Kette |
|---|---|---|
| **CyLR** | [orlikoski/CyLR](https://github.com/orlikoski/CyLR) | Live-Artefakt-Sammlung über direktes NTFS |
| **Hayabusa** | [Yamato-Security/hayabusa](https://github.com/Yamato-Security/hayabusa) | Sigma-Korrelation, Timeline-Erstellung |
| **Sigma** | [SigmaHQ/sigma](https://github.com/SigmaHQ/sigma) | die Erkennungsregeln hinter jedem Alarm |
| **THOR Lite** | [NextronSystems/thor-lite](https://github.com/NextronSystems/thor-lite) | YARA- und IOC-Scanning |
| **VirusTotal** | [virustotal.com](https://www.virustotal.com) | Reputation von Hashes, IPs und Domains |
| **AbuseIPDB** | [abuseipdb.com](https://www.abuseipdb.com) | IP-Missbrauchsbewertung |
| **MITRE ATT&CK** | [attack.mitre.org](https://attack.mitre.org) | das Taktik-Framework hinter der Kill-Chain-Achse |
Beachte die jeweilige Lizenz und Nutzungsbedingungen der einzelnen Projekte — insbesondere THOR Lite erfordert eine Registrierung bei Nextron und ist nicht weiterverbreitbar.
---
## 🌐 Ökosystem
| | Tool | Domäne |
|---|---|---|
| ☁️ | [**Kumo** 蜘蛛](https://github.com/karim852/KUMO-Domain-Recon-Tool) | Domain-OSINT & Aufklärung |
| 🌑 | **Kage** 影 | DFIR-Host-Triage |
---
> ⚠️ **Nur für autorisierte Incident Response.**
> Führe Kage nur auf Hosts aus, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zur Untersuchung hast.
<p align="center"><sub>Gebaut für diejenigen, die danach kommen. 影</sub></p>