
Windows होस्ट DFIR ट्राइएज कंसोल जो आर्टिफैक्ट संग्रह, Sigma-सहसंबंधित टाइमलाइन, YARA स्कैन, सॉकेट और अकाउंट निरीक्षण, इंडिकेटर एनरिचमेंट, और एक कैलिब्रेटेड जोखिम स्कोर को श्रृंखलाबद्ध करता है।
Point Kage को किसी संदिग्ध Windows होस्ट पर इंगित करें और यह पूरी ट्राइएज एक ही श्रृंखला में चलाता है: CyLR आर्टिफैक्ट्स एकत्र करता है, Hayabusa इवेंट लॉग्स को Sigma के विरुद्ध सहसंबंधित करता है, THOR Lite YARA मैचों के लिए स्कैन करता है, VirusTotal और AbuseIPDB संकेतकों को योग्य बनाते हैं, और आपकी पसंद का AI प्रदाता रिपोर्ट का मसौदा तैयार करता है। प्रत्येक चरण लाइव स्ट्रीम करता है, जो उसने उत्पादित किया उसे सील करता है, और अकेले ही पुनः चलाया जा सकता है।```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>अवलोकन: बाईं ओर ग्यारह सीलबंद चरण, निष्पादन लॉग
स्ट्रीम होता हुआ, और स्कोर उसके चार घटकों में विभाजित।</sub>
</p>
---
## 📑 विषय-सूची
- [इंस्टॉलेशन](#-installation)
- [अपना पहला स्कैन चलाना](#-running-your-first-scan)
- [THOR Lite मैन्युअल रूप से जोड़ना](#-adding-thor-lite-manually)
- [श्रृंखला](#-the-chain)
- [जोखिम स्कोर](#-risk-score)
- [अलर्ट](#-alerts)
- [सिस्टम संदर्भ](#-system-context)
- [लॉगिंग और ऑडिट](#-logging--audit)
- [YARA](#-yara)
- [सील](#-seals)
- [व्यू](#-views)
- [कॉन्फ़िगरेशन](#-configuration)
- [CLI संदर्भ](#-cli-reference)
- [समस्या निवारण](#-troubleshooting)
- [Linux संस्करण](#-linux-version--in-progress)
- [श्रेय](#-credits)
---
## 📦 इंस्टॉलेशन
### आवश्यकताएँ
| | |
|---|---|
| OS | Windows 10 / 11 या Windows Server |
| Python | [python.org](https://www.python.org/downloads/) से 3.10+, **सभी उपयोगकर्ताओं के लिए इंस्टॉल किया गया** |
| अधिकार | **Administrator** |
| डिस्क | संग्रह के लिए कुछ GB खाली |
### इंस्टॉल```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 रिपोर्ट करता है कि क्या तैयार है और क्या अनुपलब्ध है।```
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
### लॉन्च — व्यवस्थापक के रूप में```powershell
python -m dfirconsole
या launch.bat पर राइट-क्लिक करें → Run as administrator, जो
virtualenv, इंस्टॉल को संभालता है और आपके लिए ब्राउज़र खोलता है।```
Kage DFIR Toolkit 1.5.0
code C:\Kage\dfirconsole
workspace C:\Kage
open http://127.0.0.1:8787
> **वर्कस्पेस वहीं है जहाँ से आपने लॉन्च किया था।** कॉन्फ़िगर करने के लिए कुछ नहीं। टूल्स,
> साक्ष्य और आउटपुट सब कंसोल के बगल में आ जाते हैं।
### पहले बिना किसी जोखिम के इसे आज़माएँ```powershell
python -m dfirconsole --demo
डेमोंस्ट्रेशन मोड एक सिंथेटिक इंट्रूज़न बनाता है — मैलिशियस अटैचमेंट, एन्कोडेड PowerShell, Defender डिसेबल, क्रेडेंशियल थेफ्ट, पर्सिस्टेंस, C2, शैडो कॉपीज़ डिलीट — और उस पर पूरी चेन चलाता है। आपकी मशीन पर कुछ भी छुआ नहीं जाता। असली इंसिडेंट से पहले इंटरफ़ेस सीखने का सबसे अच्छा तरीका।
एडमिनिस्ट्रेटर के रूप में लॉन्च करें, http://127.0.0.1:8787 खोलें, और स्टेटस बार
जाँचें कि वह live run · Windows दिखाता है और demonstration mode नहीं।
Settings पर क्लिक करें:
| फ़ील्ड | उदाहरण | यह क्यों मायने रखता है |
|---|---|---|
| Case reference | INC-2026-0042 | रिपोर्ट, लॉग और आर्काइव का नाम तय करता है |
| Analyst | N. Delaunay | रिपोर्ट हेडर पर दिखाई देता है |
Workspace folder को खाली छोड़ दें, यह लॉन्च फ़ोल्डर को स्वयं ट्रैक करता है। Save पर क्लिक करें।
बायाँ कॉलम chain of custody है। हर चरण में एक चेकबॉक्स है; YARA स्कैन को छोड़कर सभी डिफ़ॉल्ट रूप से टिक किए हुए हैं।
पहली बार चलाने के लिए, इनके अलावा सभी को अनटिक करें:``` ☑ Prepare the workspace ☑ Exclude the folder from Defender ☑ Locate the tooling ☑ Update the Sigma rules
**Run 4 steps** पर क्लिक करें। लगभग एक मिनट। यह CyLR और Hayabusa डाउनलोड करता है और पुष्टि करता है कि आपका elevation वास्तव में काम करता है *इससे पहले* कि कोई लंबी प्रक्रिया शुरू हो।
### चरण 4 — एकत्र करें और विश्लेषण करें
एक बार जब वे चारों सील हो जाएँ, तो बाकी को टिक करें:```
☑ 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
Run पर क्लिक करें और execution log stream को देखें। प्रत्येक पूर्ण हुए चरण को एक seal मिलता है — एक SHA-256 जिसे आप बाद में सत्यापित कर सकते हैं।
| कहाँ | आपको क्या मिलता है |
|---|---|
| Overview | जोखिम स्कोर और उसके चार घटक, परिवार के अनुसार अलर्ट |
| Alerts | प्रत्येक अलर्ट, गंभीरता और परिवार के अनुसार फ़िल्टर करने योग्य |
| System | खाते, प्रक्रियाओं से जुड़े सॉकेट, असामान्य फ़ोल्डर, लॉग कवरेज |
| Indicators | टाइमलाइन से निकाले गए हैश, IP और डोमेन |
किसी भी टेबल पंक्ति पर क्लिक करें ताकि reading pane खुल जाए: प्रत्येक फ़ील्ड, पूरी कमांड
लाइन, सभी raw डेटा। आइटम्स के बीच जाने के लिए ← →, बंद करने के लिए Esc।
API keys कॉन्फ़िगर होने के साथ:``` ☑ Enrich the indicators VirusTotal + AbuseIPDB reputation ☑ Write the summary the AI drafts the report
बिना कुंजियों के, दोनों को *छोड़ा गया* चिह्नित किया जाता है और इसके बजाय एक **स्थानीय राइट-अप** तैयार किया जाता है — समान संरचना, कोई नेटवर्क कॉल नहीं।
### चरण 7 — निर्यात
डैशबोर्ड के ऊपर दाईं ओर:
- **रिपोर्ट** — प्रिंट करने योग्य HTML, तेरह क्रमांकित अनुभाग, PDF के लिए तैयार
- **JSON** — पूर्ण स्थिति, सील सहित
- **लॉग** — कंसोल द्वारा उत्पादित सब कुछ
> 💡 **एकल चरण को फिर से चलाएँ:** बाएँ कॉलम में उसके टैग पर डबल-क्लिक करें। उपयोगी
> जब Hayabusa विफल हो जाता है लेकिन संग्रह ठीक है — दो बार संग्रह करने की आवश्यकता नहीं।
---
## 🔦 THOR Lite को मैन्युअल रूप से जोड़ना
YARA स्कैन वह एकमात्र चरण है जिसे Kage आपके लिए **सेट नहीं कर सकता**। Nextron को
पंजीकरण की आवश्यकता होती है, इसलिए बाइनरी को किसी स्क्रिप्ट द्वारा प्राप्त नहीं किया जा सकता। CyLR और Hayabusa
स्वयं डाउनलोड हो जाते हैं; THOR नहीं होता।
### 1. संग्रह प्राप्त करें
[nextron-systems.com/thor-lite](https://www.nextron-systems.com/thor-lite/) पर पंजीकरण करें और डाउनलोड करें।
आपको स्कैनर **और एक लाइसेंस फ़ाइल** (`.lic`) प्राप्त होती है — आमतौर पर ईमेल द्वारा।
### 2. इसे `tools\thor\` में रखें
Kage ने पहले लॉन्च पर आपके लिए वह फ़ोल्डर पहले ही बना दिया है। संग्रह की
सामग्री को उसमें कॉपी करें, **सब कुछ एक साथ रखते हुए**:```
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
उन्हें एक साथ क्यों रखें? THOR अपनी निष्पादन योग्य फ़ाइल वाली निर्देशिका से चलता है और अपने हस्ताक्षरों को उस निर्देशिका के सापेक्ष हल करता है। केवल बाइनरी को कॉपी करने से आपको एक स्कैनर मिलता है जिसके पास स्कैन करने के लिए कुछ नहीं होता।
अन्य दो उपकरण इसके बगल में रहते हैं, प्रत्येक अपने स्वयं के फ़ोल्डर में:```
tools
├── cylr\ CyLR.exe ← downloaded automatically
├── hayabusa\ hayabusa-.exe ← downloaded automatically
└── thor\ thor64-lite.exe + .lic ← you place this one
### 3. सत्यापित करें```powershell
python preflight.py
| -s | --server | Server URL (default: http://localhost:8080) |
| -t | --token | API token for authentication |
| -o | --output | Output format: json, yaml, table |
| -v | --verbose | Enable verbose logging |
| -q | --quiet | Suppress non-essential output |
| -h | --help | Show help message and exit |
# सर्वर से सभी स्कैन सूचीबद्ध करें
scanner-cli list
# JSON आउटपुट के साथ नया स्कैन शुरू करें
scanner-cli scan --target https://example.com --output json
# किसी विशिष्ट स्कैन का परिणाम प्राप्त करें
scanner-cli results --scan-id abc123
# टोकन के साथ कस्टम सर्वर का उपयोग करें
scanner-cli --server https://api.example.com --token YOUR_TOKEN list
CLI निम्नलिखित स्थानों पर कॉन्फ़िगरेशन फ़ाइल की तलाश करता है:
./.scanner-cli.yaml$HOME/.config/scanner-cli/config.yaml/etc/scanner-cli/config.yamlकॉन्फ़िगरेशन फ़ाइल उदाहरण:
server: http://localhost:8080
token: your-api-token
output: table
verbose: false
सभी API अनुरोधों के लिए Authorization हेडर में Bearer टोकन की आवश्यकता होती है:
Authorization: Bearer <your-token>
| विधि | एंडपॉइंट | विवरण |
|---|---|---|
GET | /api/v1/scans | सभी स्कैन सूचीबद्ध करें |
POST | /api/v1/scans | नया स्कैन शुरू करें |
GET | /api/v1/scans/{id} | स्कैन विवरण प्राप्त करें |
DELETE | /api/v1/scans/{id} | स्कैन रद्द करें |
GET | /api/v1/scans/{id}/results | स्कैन परिणाम प्राप्त करें |
GET | /api/v1/health | स्वास्थ्य जांच एंडपॉइंट |
{
"id": "abc123",
"target": "https://example.com",
"status": "completed",
"created_at": "2024-01-15T10:30:00Z",
"completed_at": "2024-01-15T10:35:00Z",
"findings": [
{
"type": "xss",
"severity": "high",
"url": "https://example.com/search?q=test",
"description": "Reflected XSS vulnerability detected"
}
]
}
सभी त्रुटियाँ निम्नलिखित प्रारूप में एक JSON ऑब्जेक्ट लौटाती हैं:
{
"error": {
"code": 404,
"message": "Scan not found",
"details": "No scan exists with the provided ID"
}
}
सामान्य HTTP स्थिति कोड:
| कोड | विवरण |
|---|---|
200 | सफलता |
201 | बनाया गया |
400 | खराब अनुरोध |
401 | अनधिकृत |
403 | निषिद्ध |
404 | नहीं मिला |
429 | बहुत अधिक अनुरोध |
500 | आंतरिक सर्वर त्रुटि |
| 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) |
यदि लाइसेंस लाइन `[!]` दिखाती है, तो THOR तुरंत शुरू होकर बंद हो जाएगा।
### 4. स्कोप चुनें — यह सब कुछ तय करता है
**Settings → YARA scan folder:**
| मान | स्कैन करता है | समय लेता है |
|---|---|---|
| *(खाली)* | CyLR द्वारा अभी एकत्र किए गए आर्टिफैक्ट्स | मिनट |
| `C:\Users\target` | एक उपयोगकर्ता प्रोफ़ाइल | मिनट |
| `C:\` | पूरा सिस्टम वॉल्यूम | **घंटे** |
चेन में **YARA scan** टिक करें और इसे चलाएँ। फ़ाइलों की जाँच होते ही वर्डिक्ट लाइव दिखाई देते हैं — अलर्ट, चेतावनियाँ, सूचनाएँ *और* साफ़ फ़ाइलें, प्रत्येक अपने हैश के साथ।
**डिफ़ॉल्ट रूप से कोई समय सीमा नहीं।** तीन घंटे की स्वीप एक निर्णय है, कोई विसंगति नहीं। यदि आप एक सीमा चाहते हैं तो मिनटों में सेट करें।
> THOR के बिना, यह चरण स्वयं को *skipped* बताता है और चेन आगे बढ़ती रहती है।
> आप स्कोर का YARA अक्ष खो देते हैं — और कुछ नहीं।
---
## 🔗 चेन
ग्यारह चरण। जो चाहिए उसे टिक करें, किसी एक को अकेले दोबारा चलाने के लिए टैग पर डबल-क्लिक करें।
| # | चरण | वास्तव में क्या चलता है |
|---|---|---|
| 01 | वर्कस्पेस तैयार करें | फ़ोल्डर ट्री, एलिवेशन और खाली जगह की जाँच |
| 02 | Defender से बाहर रखें | `Add-MpPreference -ExclusionPath <workspace>` |
| 03 | टूलिंग का पता लगाएँ | GitHub releases से CyLR + Hayabusa को हल करके डाउनलोड करता है |
| 04 | आर्टिफैक्ट्स एकत्र करें | `CyLR.exe -od evidence\ -of <case>.zip -v` |
| 05 | सिस्टम संदर्भ कैप्चर करें | `systeminfo` · `Get-LocalUser` · `netstat -ano` · `tasklist` · `auditpol` |
| 06 | Sigma नियम अपडेट करें | `hayabusa update-rules` |
| 07 | टाइमलाइन बनाएँ | `hayabusa <csv\|dfir>-timeline -d <Logs> -o hayabusa-output.csv -r <rules>` |
| 08 | टाइमलाइन का विश्लेषण करें | स्कोर, अलर्ट परिवार, संकेतक निष्कर्षण |
| 09 | YARA स्कैन *(वैकल्पिक)* | `thor64-lite.exe --nocsv -p <chosen folder>` |
| 10 | संकेतकों को समृद्ध करें | VirusTotal v3 · AbuseIPDB v2 |
| 11 | सारांश लिखें | आपका AI प्रदाता, या एक स्थानीय राइट-अप |
Hayabusa सबकमांड को उसके स्वयं के help आउटपुट से पढ़ा जाता है, इसलिए v3
(`csv-timeline`) और v4 (`dfir-timeline`) दोनों काम करते हैं, और असमर्थित फ़्लैग
कमांड को विफल करने के बजाय हटा दिए जाते हैं।
---
## 🎯 जोखिम स्कोर
एक **ट्राइएज प्राथमिकता, प्रमाण नहीं** — और इसके ब्रेकडाउन के बिना कभी प्रकाशित नहीं।```
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
चार स्वतंत्र अक्ष, प्रत्येक पर सीमा। यही चीज़ एक शोरगुल वाले नियम को तीन सौ बार सक्रिय होकर असली बहु-चरणीय घुसपैठ के समान निर्णय तक पहुँचने से रोकती है।
विश्वास स्तर गंभीरता से अलग है। यह गिनता है कि कितने स्वतंत्र स्रोत सहमत हैं और क्या लॉगिंग कवरेज पर्याप्त थी — इसलिए केवल Sigma पर आधारित उच्च स्कोर एक मजबूत सुराग के रूप में पढ़ा जाता है, कभी पुष्टि के रूप में नहीं:
| स्कोर | विश्वास उच्च | विश्वास निम्न |
|---|---|---|
| ≥ 70 | कई स्रोतों द्वारा समझौता की पुष्टि | समझौता अत्यधिक संभावित — पुष्टि अभी भी सीमित |
| ≥ 45 | संभावित समझौता — कंटेनमेंट की सिफारिश | एकल स्रोत से मजबूत संकेत |
| ≥ 25 | योग्यता की आवश्यकता वाली संदिग्ध गतिविधि | |
| ≥ 10 | कमजोर संकेत, कोई स्थापित समझौता नहीं | |
| < 10 | कुछ भी निर्णायक नहीं |
हर बार नया स्रोत आने पर पुनर्गणना — टाइमलाइन के बाद, YARA के बाद, enrichment के बाद।

गंभीरता बताती है कि कितना अत्यावश्यक है। परिवार बताते हैं कि किस प्रकार का।``` 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
पहले इवेंट ID से वर्गीकृत, फिर शब्दावली से। **जब दोनों में मतभेद हो, तो टेक्स्ट जीतता है**: एक `4688` प्रोसेस क्रिएशन है, लेकिन `vssadmin delete shadows` Evasion के अंतर्गत आता है, क्योंकि एक विश्लेषक वहीं देखेगा।
**फ़ैमिली काउंट हमेशा टेबल से मेल खाते हैं।** उन अलर्ट्स पर गणना की जाती है जो वास्तव में सूची तक पहुँचते हैं — एक बैज जो ऐसी पंक्तियों का वादा करता है जो आपको नहीं मिलतीं, वह एक बग है, कोई विवरण नहीं।
**हिस्टोग्राम चयन का अनुसरण करता है।** एक फ़ैमिली सक्रिय होने पर, देखी गई विंडो उस फ़ैमिली के रंग में फिर से बनाई जाती है और एक टिक उसके सबसे व्यस्त क्षण को चिह्नित करता है।
**ट्राइएज स्वयं को फ़्लैग नहीं करता।** THOR चलते समय Windows इवेंट लॉग में लिखता है, और आक्रामक बाइनरीज़ के फ़ोल्डर को स्कैन करने पर Hayabusa हमारे ही स्कैनर को फ़्लैग करता है। उन इवेंट्स को बाहर रखा जाता है, अलग से गिना जाता है, और कुल रिपोर्ट किया जाता है।
---
## 🖥️ सिस्टम संदर्भ

जो कोई इवेंट लॉग आपको नहीं बताता, केवल-पढ़ने के लिए कैप्चर किया गया:```
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
हर सॉकेट को उसके स्वामित्व वाली प्रक्रिया से PID द्वारा मिलान किया जाता है — यही क्रॉस-रेफ़रेंस powershell.exe को किसी सार्वजनिक होस्ट से कनेक्शन बनाए रखते हुए एक नज़र में पठनीय बनाता है।
स्थानीय खातों की Administrators सदस्यता, निष्क्रिय-परंतु-सक्षम स्थिति और अंतिम लॉगऑन के लिए जाँच की जाती है। established कनेक्शनों से प्राप्त सार्वजनिक पते स्वचालित रूप से संकेतक सूची में शामिल हो जाते हैं: ट्राइएज के दौरान जिस पते से बात की जा रही हो, वह तीन दिन पुरानी लॉग प्रविष्टि से पढ़े गए पते से कम से कम उतना ही मूल्यवान होता है।
एक ट्राइएज उतना ही मूल्यवान होता है जितना मशीन ने रिकॉर्ड करने पर सहमति दी हो।``` 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 —
सोलह चैनलों को **सक्रिय / खाली / अक्षम / अनुपस्थित** के रूप में वर्गीकृत किया गया — यह अंतर महत्वपूर्ण है: एक खाली चैनल ठीक करने से एक कमांड दूर है, एक अनुपस्थित चैनल के लिए डिप्लॉयमेंट की आवश्यकता होती है। तेरह `auditpol` उपश्रेणियों को साथ-साथ पढ़ा गया।
कवरेज स्कोर जोखिम स्कोर के बगल में स्थित है। *जोखिम 80, कवरेज 51* का अर्थ है कि निर्णय उपलब्ध जानकारी के आधे हिस्से पर आधारित है — और रिपोर्ट यह बताती है।
---
## 🔬 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… —
The page fills up during the scan, not only when something is found. That is what separates found nothing from looked at nothing.
The scan starts at the first real finding. THOR opens every run with a dozen banner lines — version, build, hostname, working directory, argument list, uptime — and closes with a summary. None of it describes the host being examined, so none of it reaches the view. Hashes from alerts are pushed into the indicator list, ready for VirusTotal.
Each completed step is sealed with a SHA-256, and the seal states what it covers:``` ✔ 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)
जब किसी चरण ने फ़ाइलें उत्पन्न कीं, तो सील उनकी **सामग्री** का हैश है — बाद में इसे फिर से चलाएँ और आपके पास प्रमाण होगा कि आर्टिफ़ैक्ट में कोई बदलाव नहीं किया गया। जब इसने कोई फ़ाइल उत्पन्न नहीं की, तो सील केवल निष्पादन रिकॉर्ड को कवर करती है, और अधिक का संकेत देने के बजाय यही बताती है।
---
## 🧭 व्यूज़
प्रत्येक व्यू का अपना URL होता है, कुछ भी पुनः लोड नहीं होता और कुछ भी खोता नहीं — विश्लेषण सर्वर-साइड रहता है और पूर्ण रीफ़्रेश इसे बहाल कर देता है।
| पता | सामग्री |
|---|---|
| `/` | पाइपलाइन, निष्पादन लॉग, परिवार के अनुसार विभाजन |
| `/alerts` | गंभीरता और परिवार के अनुसार अलर्ट |
| `/indicators` | VirusTotal / AbuseIPDB प्रतिष्ठा के साथ संकेतक |
| `/system` | मशीन, खाते, नेटवर्क, डिस्क रूट, कवरेज |
| `/yara` | THOR निर्णय, स्कैन के दौरान लाइव |
| `/attack` | अनुमानित ATT&CK रणनीतियाँ |
| `/summary` | लिखित रिपोर्ट |
| `/log` | पूर्ण लॉग, डाउनलोड करने योग्य |
### लाइव निष्पादन

प्रत्येक कमांड चलते समय स्ट्रीम होता है। चरण एक-एक करके सील होते हैं; श्रृंखला रुकने पर घड़ी रुक जाती है।
### संकेतक

टाइमलाइन से, सक्रिय सॉकेट से, और YARA हिट से निकाले गए हैश, IP और डोमेन — एनरिचमेंट चलने के बाद प्रत्येक की अपनी प्रतिष्ठा के साथ।
### ATT&CK रणनीतियाँ

### रीडिंग पैन

कोई भी पंक्ति, कहीं भी, पूरी खुलती है: प्रत्येक फ़ील्ड, पूरी कमांड लाइन, कच्चा THOR डेटा। आइटम के बीच जाने के लिए `←` `→`, बंद करने के लिए `Esc`, JSON के लिए **Copy**।
### लिखित सारांश

देखे गए तथ्य आकलित तथ्यों से अलग, संतुलित भाषा, और एक स्पष्ट साक्ष्य-अंतराल अनुभाग जो बताता है कि लॉगिंग क्या नहीं दिखा सकती थी।
### सेटिंग्स

### निष्पादन लॉग

---
## 📄 रिपोर्ट
`/api/report.html` — स्व-निहित, डार्क, तेरह क्रमांकित अनुभाग, PDF में प्रिंट करने के लिए तैयार। कोई बाहरी संसाधन नहीं: यह दस वर्षों बाद भी ऑफ़लाइन मशीन पर पठनीय रहती है।
### निर्णय और स्कोर

स्कोर कभी भी अपने चार घटकों के बिना प्रकट नहीं होता, ताकि पाठक एक अपारदर्शी संख्या के बजाय एक अक्ष को चुनौती दे सके।
### निष्कर्ष और रोकथाम

### साक्ष्य अंतराल और अभिरक्षा श्रृंखला

प्रत्येक चरण अपनी सील और **वह सील क्या कवर करती है** के साथ — किसी नामित फ़ाइल की सामग्री, या केवल निष्पादन रिकॉर्ड।
> PDF में प्रिंट करते समय, ब्राउज़र विकल्पों में *Background graphics* को टिक करें, अन्यथा डार्क बैकग्राउंड हटा दिया जाता है।
---
## ⚙️ कॉन्फ़िगरेशन
### टूलिंग लेआउट
प्रत्येक टूल का अपना फ़ोल्डर होता है, और प्रत्येक के साथ एक README आता है जो बताता है कि उसमें क्या रखा जाता है।```
<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 और Hayabusa स्वयं इंस्टॉल हो जाते हैं। Locate the tooling चरण GitHub releases API को क्वेरी करता है, वर्तमान Windows x64 asset चुनता है और उसे सही फ़ोल्डर में अनपैक करता है। किसी संस्करण को pin करने का मतलब है कि जिस दिन upstream आगे बढ़ता है उस दिन डाउनलोड टूट जाता है; इसे resolve करने का मतलब है कि कंसोल बिना निगरानी के काम करता रहता है। यदि API अगम्य हो तो एक pinned URL कार्यभार संभाल लेता है।
सब कुछ बिना किसी एक key के भी काम करता है। अनकॉन्फ़िगर किए गए चरण skipped के रूप में चिह्नित होते हैं, कभी failed नहीं।
क्रेडेंशियल कहाँ जाते हैं। रिपॉज़िटरी apikeys.env.example के साथ आती है, जो खाली मानों वाला एक टेम्पलेट है। इसे कॉपी करें, कॉपी को लोकल रखें:```powershell
copy apikeys.env.example apikeys.env
notepad apikeys.env
## अवलोकन
यह रिपॉजिटरी **CVE-2025-55182** के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) प्रदान करती है, जो **React Server Components (RSC)** में एक गंभीर **अपुष्ट रिमोट कोड एक्ज़ीक्यूशन (RCE)** भेद्यता है, जिसे **React2Shell** के नाम से भी जाना जाता है।
यह भेद्यता React के **Flight protocol** डिसेरिएलाइज़ेशन लॉजिक को प्रभावित करती है, जिससे एक अपुष्ट हमलावर को विशेष रूप से तैयार किए गए HTTP अनुरोध के माध्यम से सर्वर पर मनमाना कोड निष्पादित करने की अनुमति मिलती है।
---
## भेद्यता विवरण
- **CVE ID:** CVE-2025-55182
- **उपनाम:** React2Shell
- **प्रभावित सॉफ़्टवेयर:** React Server Components (RSC)
- **भेद्यता का प्रकार:** अपुष्ट रिमोट कोड एक्ज़ीक्यूशन (RCE)
- **हमला वेक्टर:** नेटवर्क / HTTP
- **प्रभाव:** सर्वर पर मनमाना कोड निष्पादन
- **आवश्यक विशेषाधिकार:** कोई नहीं (अपुष्ट)
---
## तकनीकी पृष्ठभूमि
React Server Components संचार के लिए **Flight protocol** का उपयोग करते हैं, जो सर्वर और क्लाइंट के बीच React तत्वों, प्रॉमिस और मॉड्यूल संदर्भों को सीरियलाइज़ और डिसेरिएलाइज़ करता है।
Flight protocol के भीतर डिसेरिएलाइज़ेशन प्रक्रिया इनपुट को ठीक से मान्य या सैनिटाइज़ नहीं करती है, जिससे हमलावर दुर्भावनापूर्ण पेलोड को इंजेक्ट कर सकते हैं जो सर्वर पर डिसेरिएलाइज़ और निष्पादित होते हैं।
---
## प्रभावित घटक
- React Server Components (RSC) का उपयोग करने वाले React एप्लिकेशन
- Next.js एप्लिकेशन जो RSC का उपयोग करते हैं
- Flight protocol डिसेरिएलाइज़ेशन को उजागर करने वाले कस्टम सर्वर
---
## PoC का उपयोग कैसे करें
### पूर्वापेक्षाएँ
- Python 3.8+
- `requests` लाइब्रेरी
### इंस्टॉलेशन
```bash
pip install requests
python3 poc.py --target http://target-host:3000
| विकल्प | विवरण |
|---|---|
--target | लक्ष्य URL (आवश्यक) |
--command | निष्पादित करने के लिए कमांड (डिफ़ॉल्ट: id) |
--verbose | विस्तृत आउटपुट सक्षम करें |
यह PoC केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। इसका उपयोग केवल उन प्रणालियों पर करें जिनके लिए आपके पास स्पष्ट लिखित प्राधिकरण है।
अनधिकृत पहुँच या हमला अवैध है और स्थानीय और अंतर्राष्ट्रीय कानूनों का उल्लंघन कर सकता है।
VT_API_KEY=your_virustotal_key ABUSEIPDB_API_KEY=your_abuseipdb_key
AI_PROVIDER=groq AI_API_KEY=your_provider_key AI_MODEL=
**उन्हें कहाँ से प्राप्त करें**
| Key | Free tier | Sign up |
|---|---|---|
| `VT_API_KEY` | 4 requests/minute, 500/day | [virustotal.com](https://www.virustotal.com/gui/join-us) |
| `ABUSEIPDB_API_KEY` | 1 000 checks/day | [abuseipdb.com](https://www.abuseipdb.com/register) |
| `AI_API_KEY` | varies — Groq and Ollama are free | see the provider table below |
आप उन्हें फ़ाइल के बजाय environment variables के रूप में भी सेट कर सकते हैं, जो
आमतौर पर कंटेनर में या साझा responder workstation पर आपकी आवश्यकता होती है:```powershell
$env:VT_API_KEY = "..."
python -m dfirconsole
प्रत्येक का अपना एंडपॉइंट होता है, जो स्पष्ट रूप से जुड़ा होता है, इसलिए Groq चुनने पर आपकी कुंजी कभी OpenAI को नहीं भेजी जाती।
| प्रदाता | एंडपॉइंट | डिफ़ॉल्ट मॉडल |
|---|---|---|
| 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 — कोई कुंजी नहीं |
| None | — | स्थानीय राइट-अप |
छोटे मुफ़्त टियर संभाले जाते हैं: Groq प्रति मिनट 12 000 टोकन की अनुमति देता है, इसलिए पेलोड को उस सीमा के विरुद्ध मापा जाता है और, आकार अस्वीकृति पर, कम अलर्ट और छोटे विवरणों के साथ फिर से चलाया जाता है। निर्णय बचा रहता है; केवल सहायक साक्ष्य पतला हो जाता है।
मॉडल को एक मानक पर रखा जाता है — देखे गए को आंके गए से अलग, संतुलित भाषा, मात्रात्मक कथन, स्पष्ट साक्ष्य अंतराल, और सौम्य व्याख्या पर विचार किया जाता है।
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
ब्राउज़र रन के लिए `pip install playwright && playwright install chromium` आवश्यक है।
---
## 🔧 समस्या निवारण
**"Administrator rights required" / Defender exclusion refused**
Kage elevated नहीं है। इसे बंद करें, `launch.bat` पर राइट-क्लिक करें → *Run as
administrator*, या पहले PowerShell को administrator के रूप में खोलें।
**`did not find executable … python.exe`**
आपका Python Microsoft Store से आया है, जो प्रति उपयोगकर्ता इंस्टॉल होता है और
administrator सत्र में गायब हो जाता है। python.org से *for all users* के लिए
पुनः इंस्टॉल करें।
**CyLR ने कोई archive नहीं बनाया / collection खाली है**
**Settings → CyLR arguments** में `--force-native` जोड़ें। यह raw NTFS पढ़ने की
बजाय Windows API का उपयोग करता है, जो तब काम करता है जब किसी डिस्क पर
partition detection विफल हो जाती है।
**THOR शुरू होकर चुप हो जाता है**
इसका licence गायब या समाप्त है, या `signatures\` को binary के बगल में कॉपी
नहीं किया गया। पुष्टि के लिए `preflight.py` चलाएँ।
---
## 🐧 Linux संस्करण — प्रगति पर
एक Linux triage chain उसी console, उसी views, उसी scoring model पर बनाई जा रही
है। Parsers पहले से ही platform-agnostic हैं; जो बदलता है वह evidence layer है:
| Windows | Linux (प्रगति पर) |
|---|---|
| CyLR collection | UAC / CyLR Linux collection |
| EVTX + Hayabusa Sigma | `journald` / `auth.log` / `syslog` + Sigma |
| `Get-LocalUser` · `auditpol` | `/etc/passwd` · `/etc/shadow` · `auditd` rules |
| `netstat -ano` + `tasklist` | `ss -tunap` |
| Disk root anomalies | `/tmp` · `/dev/shm` · `/var/tmp` · cron · systemd units |
| THOR Lite | THOR Lite for Linux |
रिलीज़ को पकड़ने के लिए repo को star या watch करें।
---
## 🙏 श्रेय
Kage एक console है, collector या scanner नहीं। भारी काम इन परियोजनाओं का है,
और वे इस repo से कहीं अधिक star की हकदार हैं:
| Tool | Repository | श्रृंखला में भूमिका |
|---|---|---|
| **CyLR** | [orlikoski/CyLR](https://github.com/orlikoski/CyLR) | raw NTFS पर live artefact collection |
| **Hayabusa** | [Yamato-Security/hayabusa](https://github.com/Yamato-Security/hayabusa) | Sigma correlation, timeline generation |
| **Sigma** | [SigmaHQ/sigma](https://github.com/SigmaHQ/sigma) | हर alert के पीछे की detection rules |
| **THOR Lite** | [NextronSystems/thor-lite](https://github.com/NextronSystems/thor-lite) | YARA और IOC scanning |
| **VirusTotal** | [virustotal.com](https://www.virustotal.com) | hash, IP और domain reputation |
| **AbuseIPDB** | [abuseipdb.com](https://www.abuseipdb.com) | IP abuse scoring |
| **MITRE ATT&CK** | [attack.mitre.org](https://attack.mitre.org) | kill-chain axis के पीछे का tactic framework |
प्रत्येक परियोजना के अपने licence और उपयोग की शर्तों का सम्मान करें — विशेष रूप
से THOR Lite के लिए Nextron के साथ पंजीकरण आवश्यक है और यह पुनर्वितरण योग्य नहीं है।
---
## 🌐 पारिस्थितिकी तंत्र
| | Tool | Domain |
|---|---|---|
| ☁️ | [**Kumo** 蜘蛛](https://github.com/karim852/KUMO-Domain-Recon-Tool) | domain OSINT और reconnaissance |
| 🌑 | **Kage** 影 | DFIR host triage |
---
> ⚠️ **केवल अधिकृत incident response के लिए।**
> Kage को केवल उन hosts पर चलाएँ जिनके आप स्वामी हैं या जिनकी जाँच के लिए आपके पास स्पष्ट लिखित अनुमति है।
<p align="center"><sub>Built for those who arrive after. 影</sub></p>