
Douglas-042 HEADQUARTERS कलेक्टरों के लिए केंद्रीय कंसोल। यह एक फ्लीट को स्कैन करता है, होस्ट्स के बीच परिणामों को सहसंबंधित करता है, और एक ही स्थान से IOC फ़ीड्स और SIEM डिलीवरी का प्रबंधन करता है।
Windows और Linux होस्ट के फ्लीट को समझौते के संकेतों के लिए स्कैन करें, तय करें कि वास्तव में क्या मायने रखता है, और उस पर कार्रवाई करें — एक कंसोल से, प्रति होस्ट एक कमांड के साथ।
हंट एक स्कैन नहीं है। Douglas वे आर्टिफैक्ट एकत्र करता है जो एक विश्लेषक हाथ से एकत्र करता — प्रोसेस, सेवाएँ, शेड्यूल किए गए कार्य, ऑटोरन, कनेक्शन, खाते, ड्राइवर, इवेंट लॉग, cron, systemd, शेल इतिहास, वेब रूट — और उन पर 201 अंतर्निहित डिटेक्शन चलाता है, साथ ही आपके स्वयं के Sigma, YARA और कस्टम नियम।
फिर यह वे हिस्से करता है जो अधिकांश टूल आप पर छोड़ देते हैं: यह बताता है कौन-से निष्कर्षों पर अभी भी निर्णय लेने की आवश्यकता है, साठ बाहरी पतों में से पहले किसे देखना है, और आपको RDP सत्र खोले बिना उस पर कुछ करने देता है।
एक कमांड तैनात करें ──▶ हंट ──▶ निष्कर्ष लाइव दिखाई देते हैं
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
IOC फ़ीड मिलान प्रतिष्ठा स्कोर प्रतिक्रिया क्रियाएँ
"यह एक ज्ञात C2 है" "92/100, 340 रिपोर्ट" आइसोलेट · किल · एकत्र करें
जिन एस्टेट को शिकार की सबसे अधिक आवश्यकता होती है, वे अक्सर वही होते हैं जिनके पास EDR नहीं होता: कुछ दर्जन सर्वर, कोई एजेंट बजट नहीं, और एक घटना जो तीन दिन पहले शुरू हुई थी। विकल्प आमतौर पर एक व्यावसायिक प्लेटफ़ॉर्म जिसे किसी ने मंज़ूरी नहीं दी और PowerShell स्क्रिप्ट का एक फ़ोल्डर जिसे कोई हाथ से चलाता है, के बीच होता है।
Douglas उनके बीच में बैठता है। जिस होस्ट की आप जाँच कर रहे हैं उस पर कुछ भी इंस्टॉल नहीं होता — कलेक्टर एक बार चलता है और बाहर निकल जाता है — और हर परिणाम एक कंसोल में आता है जिसे आप सौंप सकते हैं जो भी आगे घटना संभाले।
निष्कर्ष उत्पन्न करना आसान और पढ़ना महंगा है। यह स्क्रीन कतार को इतना छोटा रखने के लिए मौजूद है कि तीसरे दौर में भी कोई इसे पढ़ रहा हो।
तीन परिणाम, और उनके बीच का अंतर छह महीने बाद मायने रखता है:
| निर्णय | यह क्या करता है |
|---|---|
| पुष्ट | वास्तविक। जोखिम स्कोर में बना रहता है, होस्ट लाल बना रहता है। |
| गलत सकारात्मक | स्कोर से हट जाता है केवल उस होस्ट के लिए। |
| दमन | एक स्थायी नियम जो हर भविष्य के स्कैन पर वही निष्कर्ष छिपा देता है। |
कुछ भी कभी हटाया नहीं जाता। एक दमन वापस लें और जो कुछ भी उसने छिपाया था वह वापस आ जाता है। सबसे शोरगुल वाले नियम सबसे नीचे होते हैं क्योंकि उन्हें ट्यून करना कतार को निष्कर्ष-दर-निष्कर्ष काम करने से तेज़ी से साफ़ करता है।
सभी 201 डिटेक्शन 15 श्रेणियों में समूहित हैं — एक बार में एक या एक पूरे परिवार को एक साथ स्विच किया जा सकता है। किसी भी नियम पर क्लिक करें यह पढ़ने के लिए कि यह क्या जाँचता है, यह वैध रूप से कैसे सक्रिय होता है, और आगे क्या करना है।
स्क्रीन जिस अंतर को स्पष्ट करती है, क्योंकि इसे गलत समझना आम है:
किसी नियम को बंद करना उसे दमित करने के समान नहीं है। बंद का अर्थ है कि कलेक्टर कभी जाँच नहीं चलाता — कुछ भी उत्पन्न नहीं होता और समीक्षा के लिए कुछ नहीं होता। एक दमन निष्कर्ष को रिकॉर्ड करता है और उसे किसी के द्वारा लिए गए निर्णय के रूप में चिह्नित करता है, साथ में एक कारण जुड़ा होता है।
बंद का उपयोग उस शोर के परिवार के लिए करें जिसे आपने स्वीकार कर लिया है। दमन का उपयोग किसी विशिष्ट होस्ट पर किसी विशिष्ट पैटर्न के लिए करें।
Fired के नीचे एक डैश आमतौर पर स्वस्थ उत्तर होता है: DGL-014 केवल तब सक्रिय होता है जब कोई लॉग साफ़ किया गया लगता है। सूची वह है जो टूल जाँचता है, न कि वह जो गलत है।
फ़ॉर्म आपके पहले नियम के लिए तेज़ है और बीसवें के लिए धीमा। इसलिए नियम टेक्स्ट के रूप में भी लिखे जा सकते हैं — टाइप करते समय जाँचे जाते हैं, 11 आर्टिफैक्ट टेबल और 13 ऑपरेटर के विरुद्ध।
नीचे का बॉक्स दो काम करता है। जब नियम गलत होता है तो यह पंक्ति का नाम बताता है, न कि नियम का:
line 7: Condition 1: 'is_maybe' is not an operator.
जब यह सही होता है, तो यह बताता है कि नियम वास्तव में किससे मेल खाएगा — क्योंकि एक नियम जो सत्यापित होता है और फिर उससे भिन्न किसी चीज़ से मेल खाता है जिसका उसके लेखक ने अर्थ लगाया था, वह विफलता है जिसे पकड़ना उचित है:
वैध — ACME-001 Services पढ़ता है और तब मेल खाता है जब Signed false हो और PathName में 'Program Files' न हो और PathName में 'System32' न हो
JSON, YAML या CSV में आयात और निर्यात करें। राउंड-ट्रिप की गारंटी है — हमारा स्वयं का निर्यात तीनों प्रारूपों में हमारे स्वयं के वैलिडेटर को पास करता है।
| प्रश्न | कब | परिणाम | |
|---|---|---|---|
| IOC फ़ीड | क्या इस C2 सूची से कुछ भी मेरे होस्ट पर है? | हंट के दौरान |
पंद्रह फ़ीड स्रोत उपयोग के लिए तैयार आते हैं — Feodo, ThreatFox, URLhaus, TweetFeed, USOM, SSL Blacklist, Emerging Threats, OpenPhish, MISP — साथ ही एक कस्टम फ़ीड जो कोई भी URL पढ़ता है जो संकेतक-आकार का डेटा लौटाता है।
चार प्रतिष्ठा प्रदाता: AbuseIPDB, VirusTotal, ThreatFox (मुफ़्त टियर) और GreyNoise (सशुल्क, डिफ़ॉल्ट रूप से बंद)। निर्णयों को कभी एक संख्या में मिलाया नहीं जाता — AbuseIPDB शिकायतें गिनता है, VirusTotal इंजन गिनता है, ThreatFox अवसंरचना जानता है, और उनका औसत एक ऐसा आंकड़ा है जिसका कोई भी बचाव नहीं करेगा। बैज सबसे खराब निर्णय को उस प्रदाता के साथ दिखाता है जिसने वह दिया।
मुफ़्त टियर संरक्षित हैं: परिणाम 12 घंटे कैश किए जाते हैं, प्रति रन 40 पते, और एक दैनिक काउंटर जो प्रदाता से पहले रुक जाता है। निजी पते कभी नहीं भेजे जाते।
तीन समूहों में ग्यारह क्रियाएँ — देखें, कार्रवाई करें, रोकें। पाँच केवल-पढ़ने वाली क्रियाएँ उन छह से भिन्न रूप से चिह्नित हैं जो होस्ट को बदलती हैं, और हर परिवर्तनकारी क्रिया के लिए एक लिखित कारण आवश्यक है।
आइसोलेशन जानबूझकर कंसोल को पहुँच योग्य बनाए रखता है: अपने ही
एजेंट से कटा हुआ होस्ट दूर से जारी नहीं किया जा सकता, और किसी को उस तक पैदल जाना पड़ेगा।
जो लक्ष्य घुसपैठ को रोकने के बजाय मशीन को तोड़ देंगे —
lsass.exe, systemd, pid 1, Administrator, /bin/bash — उन्हें अस्वीकार किया जाता है, चेतावनी नहीं दी जाती, क्योंकि जिस क्षण इसका उपयोग होता है वही क्षण है जब कोई चेतावनियाँ नहीं पढ़ रहा होता।
आउटपुट टर्मिनल डंप के बजाय संरचित कार्ड के रूप में वापस आता है, और पंक्तियाँ कार्रवाई योग्य होती हैं: एक प्रोसेस सूची में प्रति पंक्ति एक Kill बटन होता है, एक पते में Reputation।
| Windows | Linux | |
|---|---|---|
| Sigma | Event Log + Sysmon | auditd execve + auth/cron/syslog |
| YARA | फ़ाइल सामग्री | फ़ाइल सामग्री |
Linux Sigma नियम जिनका लॉग स्रोत पढ़ा नहीं जा सकता, अपलोड पर कारण के साथ अस्वीकार कर दिए जाते हैं, बजाय लोड किए जाने और कभी सक्रिय न होने के लिए छोड़े जाने के — एक ऐसे नियम से खाली परिणाम जो चल ही नहीं सका, बिल्कुल वैसा ही दिखता है जैसा एक स्वच्छ होस्ट।
Linux एजेंट जाँचता है कि auditd इंस्टॉल है, चल रहा है, और उसमें नियम लोड हैं, फिर बताता है कि क्या गायब है और उसकी कीमत क्या है:
Detection capabilities on this host
auditd : NOT RUNNING
Nothing records what executes on this host, so execution
rules cannot fire and a clean result only means the sweep
could not look. Install it:
apt install auditd && systemctl enable --now auditd
तीन समूहों में ग्यारह गंतव्य:
चैट और पेजिंग गंतव्य एक रिकॉर्ड के बजाय एक वाक्य प्रस्तुत करते हैं, और सीमित करते हैं कि एक संदेश में कितने निष्कर्ष जाएँ: जिस चैनल में सौ पंक्तियाँ चिपका दी जाती हैं, वह चैनल लोग म्यूट कर देते हैं।
git clone https://github.com/YOURNAME/douglas-042.git
cd douglas-042
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000
या Docker के साथ:
docker compose up -d
http://your-server:8000 खोलें
डिफ़ॉल्ट लॉगिन
उपयोगकर्ता नाम:
adminपासवर्ड:douglasकंसोल पहले साइन-इन पर पासवर्ड परिवर्तन को बाध्य करता है — किसी पैकेज में बेक किया गया डिफ़ॉल्ट बिना ध्यान दिए बचा नहीं रहना चाहिए। यदि आप अपना स्वयं का चुनना पसंद करते हैं तो पहले स्टार्ट से पहले
.envमेंDOUGLAS_CONSOLE_PASSWORDसेट करें।
.envकेवल तब पढ़ा जाता है जब डेटाबेस खाली हो। पहले स्टार्ट के बाद,python3 -m app.manage passwd adminसे रीसेट करें।
स्टार्ट-अप पर आपको अगले चरण के लिए नामांकन टोकन मिलता है:
Created the initial admin account: admin
The default password is still in use. Change it at first sign-in.
Enrollment token ready: dgl-enroll-xBAk8...
Douglas-042 console 1.0 ready
Deploy → प्लेटफ़ॉर्म चुनें → एक कमांड कॉपी करें।
Windows — एलिवेटेड PowerShell:
iex (irm 'http://console:8000/api/v1/reports/deploy/script?token=YOUR_TOKEN')
Linux — root के रूप में:
curl -sSL 'http://console:8000/api/v1/reports/deploy/script?token=YOUR_TOKEN&platform=linux' | sudo bash
टर्मिनल में छह चरण स्ट्रीम होते हैं: डाउनलोड, नामांकन, कलेक्टर प्राप्त करें, सेवा इंस्टॉल करें, पुष्टि करें कि यह जीवित है, पहला चेक-इन। यदि नामांकन विफल हो जाता है, तो कुछ भी इंस्टॉल नहीं होता, और यह ऐसा कहता है।
┌──────────────────────────────────────────────────────────┐
│ कंसोल — FastAPI + SQLite, एक प्रोसेस, कोई कतार नहीं │
│ ट्राइएज · निष्कर्ष · ग्राफ़ · नियम · प्रतिक्रिया · रिपोर्ट │
└───────────────▲──────────────────────────────────────────┘
│ एजेंट पोल करते हैं: हार्टबीट 20s, क्रियाएँ 5s
┌───────────────┴──────────────────────────────────────────┐
│ एजेंट (PowerShell / shell) │
│ └── कलेक्टर — चलता है, रिपोर्ट करता है, बाहर निकलता है │
│ 201 अंतर्निहित नियम + Sigma + YARA + आपके नियम │
└──────────────────────────────────────────────────────────┘
Dashboard · Cases · Fleet · Hunts · Response · Findings · Triage · Frequency · Graph · MITRE matrix · Timeline · Diff · Built-in rules · My rules · Sigma · YARA · IOC feeds · Threat intel · Integrations · Schedules · Users · Deploy · Logs & events
संग्रह अखंडता · ऑटोरन और स्टार्टअप · प्रोसेस और नेटवर्क · सेवाएँ और कार्य · दृढ़ता तंत्र · सुरक्षा स्थिति · ड्राइवर और कर्नेल · निष्पादन साक्ष्य · प्रमाणीकरण और खाते · दूरस्थ पहुँच · Sysmon, Kerberos और AD · फ़ाइलें, वेबशेल और डेटा चोरी · उपयोगकर्ता गतिविधि और विश्वास · रूटकिट और मेमोरी · संकेतक मिलान
दोनों: स्थानीय खाते और समूह · हस्ताक्षर और हैश के साथ चल रही प्रोसेस · TCP कनेक्शन और बाहरी एंडपॉइंट · सेवाएँ · हाल ही में लिखी गई फ़ाइलें · इन-मेमोरी कोड · वेब रूट और वेबशेल पैटर्न
Windows: इवेंट लॉग · शेड्यूल किए गए कार्य · ऑटोरन · रजिस्ट्री दृढ़ता · WMI सदस्यताएँ · ड्राइवर · SMB शेयर · Prefetch · प्रमाणपत्र स्टोर
Linux: cron · systemd यूनिट · शेल स्टार्टअप फ़ाइलें · LD_PRELOAD · setuid बाइनरी · authorized_keys और sshd कॉन्फ़िग · शेल इतिहास · auth लॉग · कर्नेल taint · WordPress
कंसोल: Python 3.11+, छह निर्भरताएँ (FastAPI, uvicorn, SQLAlchemy, pydantic, python-multipart, PyYAML)। 1 GB VM पर चलता है।
Windows होस्ट: PowerShell 5.1+, प्रशासक। और कुछ नहीं।
Linux होस्ट: bash और curl। python3 लाइव प्रगति और
फ़ाइल-सामग्री नियम सक्षम करता है; auditd निष्पादन डिटेक्शन सक्षम करता है। कंसोल आपको
बताता है कि कौन-से किस होस्ट पर गायब हैं।
0600 अनुमतियों के साथ उत्पन्न होती हैं — किसी पैकेज में भेजी गई एक निश्चित
कुंजी उन सभी के द्वारा साझा की जाएगी जिन्होंने इसे डाउनलोड किया।📄 तकनीकी रिपोर्ट (PDF) — 14 पृष्ठ जिसमें आर्किटेक्चर, हर कंसोल स्क्रीन, सभी 37 कलेक्टर मॉड्यूल, डिटेक्शन मॉडल, प्रतिक्रिया क्रियाएँ और सुरक्षा मॉडल शामिल हैं।
MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त। LICENSE देखें।
DGL-IOC — एक पुष्ट मिलान, स्कोर नहीं |
| संवर्धन | इस होस्ट ने 60 पतों से बात की — पहले किससे? | हंट के बाद | 92/100, 340 रिपोर्ट, ज्ञात Cobalt Strike C2 |
| # | स्क्रीन | यह करें | आपको मिलता है |
|---|
| 1 | IOC फ़ीड | Feodo Tracker जोड़ें, Refresh दबाएँ | C2 डिटेक्शन — लिखने के लिए कोई नियम नहीं |
| 2 | खतरा इंटेल | एक मुफ़्त AbuseIPDB कुंजी पेस्ट करें, Test दबाएँ | ग्राफ़ पर ट्राइएज क्रम |
| 3 | फ्लीट | एक होस्ट चुनें, Launch hunt | निष्कर्ष, लाइव |
| 4 | लॉग और इवेंट | मॉड्यूल त्रुटियों की तलाश करें | क्या स्वीप वास्तव में देख सका |
| 5 | ट्राइएज | कतार पर काम करें, सबसे शोरगुल वाले नियम ट्यून करें | एक सूची जिसे कोई अभी भी पढ़ता है |
| 6 | मेरे नियम | 6 उदाहरण लोड करें, एक खोलें | अपने स्वयं के कैसे लिखें |
| 7 | एकीकरण | Slack webhook, फ़्लोर HIGH पर | आपको इसके बारे में देखे बिना पता चलता है |