
आपके SIEM में उन डिटेक्शन नियमों को खोजता है जो अंधे चल रहे हैं।
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/banner-dark.svg">
<img alt="deadair - SIEM detection coverage health" src="https://raw.githubusercontent.com/big-comfy/deadair/HEAD/docs/assets/banner-light.svg" width="760">
</picture>
</p>
<p align="center">
<a href="https://github.com/alephnull-sh/deadair/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/alephnull-sh/deadair/actions/workflows/ci.yml/badge.svg"></a>
<a href="https://github.com/alephnull-sh/deadair/releases"><img alt="Release" src="https://img.shields.io/github/v/release/alephnull-sh/deadair"></a>
<img alt="Go 1.26" src="https://img.shields.io/badge/go-1.26-00ADD8">
<a href="https://github.com/big-comfy/deadair/blob/main/LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue"></a>
</p>
<p align="center">
<strong>deadair जाँचता है कि सक्षम SIEM डिटेक्शन के पास अभी भी वह टेलीमेट्री है जिसकी उन्हें आवश्यकता है।</strong><br>
यह अनुपलब्ध या पुराने डेटा, इनजेस्ट विलंब, और स्कीमा बेमेल की रिपोर्ट करता है।
</p>
<p align="center">
स्थानीय रूप से चलता है · केवल-पठन · कोई एजेंट नहीं · कोई टेलीमेट्री अपलोड नहीं
</p>
<p align="center">
<a href="https://alephnull-sh.github.io/deadair/">तकनीकी लेख पढ़ें</a> ·
<a href="https://www.detectionengineering.net/i/208193682/detection-engineering-gem">Detection Engineering Weekly में विशेष रूप से शामिल</a> ·
<a href="https://tldrsec.com/p/tldr-sec-341">tl;dr sec #341 में विशेष रूप से शामिल</a>
</p>
<p align="center">
<a href="https://alephnull-sh.github.io/deadair/#elastic-demo"><img alt="An Elastic scan showing missing and stale inputs, missing fields, and delayed events" src="https://assets.kitploit.com/production/public/readmes/791/fc36f93c2d5fcaceffd370452b89b908a930eb10e810c0187fb3bba59cb156dd.png" width="860"></a>
</p>
<p align="center">
<sub>एक डिस्पोज़ेबल Elastic लैब में अनुपलब्ध फ़ील्ड और विलंबित इवेंट। प्लेबैक नियंत्रणों के साथ संक्षिप्त रिकॉर्डिंग के लिए छवि खोलें, या <code>make record-scan-lab</code> के साथ इसे पुनः उत्पन्न करें।</sub>
</p>
## deadair क्यों
एक नियम सक्षम, शेड्यूल्ड, और त्रुटि-मुक्त हो सकता है, भले ही उसे जिस डेटा की आवश्यकता है वह गायब हो चुका हो। deadair
लाइव नियम इन्वेंटरी पढ़ता है, बैकएंड के मूल सेमांटिक्स का उपयोग करके प्रत्येक नियम के इनपुट को हल करता है, और
उनके पीछे के ठोस स्रोतों की जाँच करता है।
यह पकड़ता है:
- वे नियम जिनके index, alias, या data-stream सेलेक्टर कुछ भी हल नहीं करते;
- मिश्रित-सेलेक्टर नियम जहाँ एक घोषित इनपुट गायब हो गया है जबकि दूसरा अभी भी हल होता है;
- वे नियम जिनके मेल खाते सभी स्रोत पुराने या खाली हैं;
- Elastic पर, घोषित फ़ील्ड गायब होने पर चलने वाले नियम;
- Elastic और पात्र Sentinel Scheduled नियमों पर, एक इनजेस्ट-लैग ब्लाइंड विंडो;
- Sentinel पर, वे नियम जिनके ज्ञात स्रोत असंगत Basic या Auxiliary टेबल प्लान का उपयोग करते हैं;
- Elastic और OpenSearch पर, स्वस्थ टेलीमेट्री जिसे कोई सक्षम डिटेक्शन नहीं पढ़ता।
deadair Elastic Security, OpenSearch Security Analytics, और Microsoft Sentinel का समर्थन करता है।
## त्वरित शुरुआत
macOS, Linux, या Windows के लिए बाइनरी
[GitHub Releases](https://github.com/alephnull-sh/deadair/releases) से डाउनलोड करें, या Go के साथ इंस्टॉल करें:
```sh
go install github.com/alephnull-sh/deadair/cmd/deadair@latest
```
अपने SIEM के लिए केवल-पठन सेटअप प्रिंट करें:
```sh
deadair setup elastic # Elastic Security
deadair setup opensearch # OpenSearch Security Analytics
deadair setup sentinel # Microsoft Sentinel
```
एक सेटअप चलाएँ, फिर सत्यापित करें और स्कैन करें:
```sh
deadair check # verify the credential can scan
deadair scan # assess live rules and telemetry
```
एग्ज़िट कोड स्थिर हैं: `0` कॉन्फ़िगर किए गए गेट को पास करता है, `1` का अर्थ है गेटेड फ़ाइंडिंग्स, और `2` का अर्थ है स्कैन विफल हो गया।
किसी स्रोत और उसके उपभोग करने वाले डिटेक्शन की जाँच करने के लिए:
```sh
deadair scan --json-out report.json --html-out report.html
deadair inspect --source CommonSecurityLog report.json
```
अपनी रिपोर्ट से एक स्रोत नाम का उपयोग करें। [जाँच गाइड](https://github.com/big-comfy/deadair/blob/main/docs/investigate.md) में
व्यक्तिगत Sentinel फ़ीड, रखरखाव, और रिकवरी ट्रैकिंग भी शामिल है।
## यह कैसे काम करता है
| चरण | deadair क्या करता है |
|---|---|
| इन्वेंटरी | सक्षम डिटेक्शन और उनके द्वारा घोषित इनपुट पढ़ता है |
| हल करना | Elastic और OpenSearch पर मूल index रिज़ॉल्यूशन का उपयोग करता है; Sentinel पर, KQL विश्लेषण को table, watchlist, saved-function, ASIM, और मैप किए गए क्रॉस-वर्कस्पेस साक्ष्य के साथ जोड़ता है |
| मापना | स्रोत की ताज़गी और समय, साथ ही स्कीमा और स्टोरेज की जाँच करता है जहाँ बैकएंड उनका समर्थन करता है |
| रिपोर्ट | प्रत्येक निर्णय के पीछे के साक्ष्य के साथ terminal, JSON, HTML, fleet रोलअप, और Prometheus मेट्रिक्स उत्सर्जित करता है |
Sentinel उसी rule-to-source मॉडल का पालन करता है और शाब्दिक watchlists, saved functions, ASIM
parsers, mapped workspaces, और summary-table lineage जोड़ता है। यह तब भी दिखाता है जब किसी
साझा टेबल का फ़िल्टर किया गया स्लाइस शांत हो गया हो या कोई summary pipeline पीछे रह गया हो।
[उपयोग गाइड](https://github.com/big-comfy/deadair/blob/main/docs/usage.md#microsoft-sentinel) साक्ष्य नियमों का वर्णन करती है, और
[सत्यापन रिकॉर्ड](https://github.com/big-comfy/deadair/blob/main/docs/validation.md#sentinel-live-conformance) लाइव परीक्षण कवरेज को रिकॉर्ड करता है।
<p align="center">
<a href="https://alephnull-sh.github.io/deadair/#sentinel-demo"><img alt="A quiet London firewall feed and its dependent detection inside Sentinel CommonSecurityLog" src="https://raw.githubusercontent.com/big-comfy/deadair/main/docs/assets/sentinel-lab.png" width="860"></a>
</p>
<p align="center">
<sub>दो फ़ायरवॉल फ़ीड <code>CommonSecurityLog</code> साझा करते हैं। एक रुक जाता है; दूसरा रिपोर्ट करता रहता है। रिकॉर्डिंग सहेजे गए विफलता और रिकवरी स्कैन दिखाती है। लैब स्थितियों के लिए <a href="https://github.com/big-comfy/deadair/blob/main/docs/validation.md#sentinel-live-conformance">सत्यापन रिकॉर्ड</a> देखें।</sub>
</p>
deadair जाँचता है कि किसी डिटेक्शन की टेलीमेट्री मौजूद और स्वस्थ है या नहीं। यह नियम
लॉजिक को मान्य नहीं करता या यह सिद्ध नहीं करता कि कोई सिम्युलेटेड हमला अलर्ट ट्रिगर करेगा। उन कार्यों के लिए स्टैटिक नियम सत्यापन और एंड-टू-एंड
डिटेक्शन परीक्षणों का उपयोग करें।
## फ़ाइंडिंग्स
| फ़ाइंडिंग | अर्थ | पहली जाँच |
|---|---|---|
| कोई मेल खाता स्रोत नहीं | नियम के किसी भी इनपुट का किसी दृश्यमान index, data stream, या Sentinel table में रिज़ॉल्यूशन नहीं होता | पैटर्न परिवर्तन, अनुपलब्ध इंटीग्रेशन, और क्रेडेंशियल स्कोप |
| सभी स्रोत पुराने या खाली | प्रत्येक हल किया गया स्रोत इस समय अनुपयोगी है | स्रोत कैडेंस और इनजेस्ट पथ |
| अनुपलब्ध फ़ील्ड | प्रत्येक स्रोत मैपिंग पढ़े जाने के बाद एक Elastic नियम-घोषित फ़ील्ड एक या अधिक हल किए गए स्रोतों में अनुपस्थित या गैर-खोजने योग्य है | parser, package, और mapping परिवर्तन |
| लैग ब्लाइंड विंडो | युग्मित-इवेंट p95 इनजेस्ट लैग नियम के lookback मार्जिन से अधिक है | नियम अंतराल, lookback, timestamp override, और pipeline विलंब |
| आंशिक इनपुट कवरेज | पूर्ण अभिव्यक्ति हल हो जाती है, लेकिन उसके भीतर एक positive selector खाली हल होता है | माइग्रेशन, fallback selectors, और अपेक्षित विकल्प; सूचनात्मक जब तक नीति इसे गेट न करे |
| स्रोत प्लान असंगत | एक Sentinel नियम ऐसी Basic या Auxiliary टेबल पर निर्भर करता है जो analytics-rule साक्ष्य पथ के लिए पात्र नहीं है | टेबल प्लान और नियम प्रकार |
| स्रोत गिरावट | एक स्रोत पुराना, खाली, कम-वॉल्यूम, या schema-drifted है | स्रोत इतिहास और अपेक्षित रखरखाव |
| अप्रयुक्त टेलीमेट्री | Elastic या OpenSearch पर, डेटा संग्रहीत किया जा रहा है लेकिन कोई सक्षम स्थानीय डिटेक्शन उस तक नहीं पहुँचता | अक्षम नियम और जानबूझकर संग्रह |
| अपेक्षित producer शांत | एक कॉन्फ़िगर किया गया Sentinel vendor, product, या device फ़ीड ने अपनी सीमा के भीतर रिपोर्ट नहीं किया है | उस फ़ीड का sender और collector |
| summary pipeline अस्वस्थ | एक प्रासंगिक Sentinel summary job विफल हो गया या उसकी अंतिम सफलता अतिदेय है | मूल execution record और summary query |
Producer और summary-pipeline फ़ाइंडिंग्स एग्ज़िट स्थिति को प्रभावित करती हैं जब उनकी कक्षाएँ
नीति में चयनित होती हैं। एक शांत device फ़ीड को उसके साझा टेबल के अन्य उपभोक्ताओं से अलग रिपोर्ट किया जाता है।
प्रत्येक निर्णय उसी तक सीमित है जो कॉन्फ़िगर किया गया क्रेडेंशियल देख सकता है। JSON रिपोर्ट में
कॉन्फ़िगर की गई अभिव्यक्तियाँ, हल किए गए स्रोत, रिज़ॉल्यूशन विधि, मूल्यांकन स्थिति, बैकएंड मेटाडेटा,
और क्षमता साक्ष्य शामिल होते हैं। काम किए गए उदाहरणों और ट्राइएज के लिए [उपयोग गाइड](https://github.com/big-comfy/deadair/blob/main/docs/usage.md) देखें।
## SIEM कनेक्ट करें
Elastic:
```sh
export DEADAIR_ES_URL=https://es.example.internal:9200
export DEADAIR_KIBANA_URL=https://kibana.example.internal:5601
export DEADAIR_API_KEY=<read-only-api-key>
deadair check
deadair scan --json-out report.json --html-out report.html
```
OpenSearch:
```sh
export DEADAIR_BACKEND=opensearch
export DEADAIR_OPENSEARCH_URL=https://opensearch.example.internal:9200
export DEADAIR_OPENSEARCH_USERNAME=deadair
export DEADAIR_OPENSEARCH_PASSWORD=<password>
deadair check
deadair scan
```
Microsoft Sentinel:
```sh
az login --tenant <tenant-id>
export DEADAIR_BACKEND=sentinel
export DEADAIR_AZURE_SUBSCRIPTION_ID=<subscription-id>
export DEADAIR_AZURE_RESOURCE_GROUP=<resource-group>
export DEADAIR_SENTINEL_WORKSPACE=<workspace-resource-name>
# Optional: JSON allowlist for literal workspace() targets.
# export DEADAIR_SENTINEL_REMOTES=/restricted/path/sentinel-remotes.json
deadair check
deadair scan
```
इससे पहले कि deadair किसी नियम के मैप किए गए remote workspace का मूल्यांकन करे, उस workspace पर Sentinel
तैनात होना चाहिए। Same-subscription mappings स्रोत उपलब्धता सिद्ध कर सकते हैं। Cross-subscription नियमों को
सटीक नियम पहचान से जुड़े रनटाइम साक्ष्य की आवश्यकता होती है। साक्ष्य नियमों, workspace और
क्षेत्र सीमाओं, और Microsoft की प्रदर्शन मार्गदर्शिका के लिए
[Sentinel उपयोग विवरण](https://github.com/big-comfy/deadair/blob/main/docs/usage.md#microsoft-sentinel) देखें।
[Elastic](https://github.com/big-comfy/deadair/blob/main/docs/credentials/elastic.md), [OpenSearch](https://github.com/big-comfy/deadair/blob/main/docs/credentials/opensearch.md), या
[Microsoft Sentinel](https://github.com/big-comfy/deadair/blob/main/docs/credentials/sentinel.md) के लिए प्रलेखित केवल-पठन भूमिकाओं का उपयोग करें।
## CI, fleets, और मॉनिटरिंग
```sh
# Gate a candidate rule against live source availability.
deadair scan --rule new-rule.json
# Fail only on new regressions between reports.
deadair diff yesterday.json today.json
# Scan multiple SIEM instances from one process.
deadair scan --fleet fleet.json
# Export cached scan results as Prometheus metrics.
deadair serve --interval 5m
```
`scan --rule` किसी backend-native candidate rule या detector को असंबंधित बैकलॉग से अलग करता है। `diff`
उसी caller-held key के साथ बनाई गई redacted रिपोर्टों के साथ काम करता है। Fleet कॉन्फ़िगरेशन secret मानों को संग्रहीत करने के बजाय
पर्यावरण चर के माध्यम से secrets का संदर्भ देता है।
[आधिकारिक GitHub Action](https://github.com/big-comfy/deadair/blob/main/docs/usage.md#gate-detection-changes) Elastic, OpenSearch, और Sentinel के लिए
single-instance candidate gates को रैप करता है। यह एक job summary लिखता है, एक redacted JSON
रिपोर्ट अपलोड करता है, और बिना नियम इंस्टॉल किए deadair नीति लागू कर सकता है। Sentinel वर्कफ़्लो पहले
runner को Azure से प्रमाणित करते हैं; Action कोई Azure क्रेडेंशियल इनपुट परिभाषित नहीं करता।
अपने स्वयं के वातावरण में परीक्षण करने के लिए कॉन्फ़िगरेशन हेतु
[CI gate व्यवहार](https://github.com/big-comfy/deadair/blob/main/docs/usage.md#gate-detection-changes),
[fleet और MSSP तैनाती](https://github.com/big-comfy/deadair/blob/main/docs/mssp.md), और [Prometheus उदाहरण](https://github.com/big-comfy/deadair/blob/main/contrib) देखें।
## परीक्षित बैकएंड
| बैकएंड | लाइव सत्यापन |
|---|---|
| Elastic Security | 8.19.19 और 9.4.4 पर विश्वसनीय CI |
| OpenSearch Security Analytics | 2.19.6 और 3.7.0 पर विश्वसनीय CI |
| Microsoft Sentinel | डिस्पोज़ेबल UK South workspaces में रिकॉर्ड किया गया opt-in conformance; [सत्यापन स्थिति](https://github.com/big-comfy/deadair/blob/main/docs/validation.md#sentinel-live-conformance) देखें |
Sentinel conformance रन मैनुअल है, शेड्यूल्ड CI नहीं।
## सुरक्षा मॉडल
- सभी adapter कॉल केवल-पठन हैं। विश्वसनीय Elastic और OpenSearch परीक्षणों के साथ-साथ अलग Sentinel लैब
probes सत्यापित करते हैं कि प्रलेखित scan identities प्रतिनिधि writes नहीं कर सकतीं।
- रिपोर्ट, HTML, state फ़ाइलें, और fleet आउटपुट POSIX सिस्टम पर `0600` के साथ लिखे जाते हैं।
- क्रेडेंशियल पर्यावरण चर या फ़ाइलों से आ सकते हैं, जिससे प्रोसेस आर्गुमेंट में secrets से बचा जाता है।
- `--redact` tenant, rule, source, pattern, field, dependency, lineage, provenance,
workspace, watchlist, template, और package पहचानकर्ताओं को keyed HMAC pseudonyms से बदल देता है। मान्य किए गए
dependency probe expressions और उनके KQL आर्गुमेंट कभी serialized नहीं होते। यादृच्छिक बाइट्स से उत्पन्न
`--redact-key-file` भी redaction सक्षम करता है और अलग-अलग रनों में नामों को स्थिर रखता है।
- Exporter डिफ़ॉल्ट रूप से loopback से बाइंड होता है।
- deadair में कोई phone-home व्यवहार या उपयोग टेलीमेट्री नहीं है।
रिपोर्टों को संवेदनशील SOC आर्टिफ़ैक्ट मानें: वे ब्लाइंड डिटेक्शन, स्रोत नाम, स्कीमा अंतराल,
और अप्रयुक्त संग्रह की पहचान करती हैं।
## दस्तावेज़ीकरण
- [उपयोग गाइड](https://github.com/big-comfy/deadair/blob/main/docs/usage.md) — पहले स्कैन, रिपोर्ट साक्ष्य, फ़ाइंडिंग्स, CI gates, state, और fleets
- [टेलीमेट्री अंतराल की जाँच करें](https://github.com/big-comfy/deadair/blob/main/docs/investigate.md) — स्रोत उपभोक्ता, अपेक्षित फ़ीड, और रिकवरी
- [सत्यापन स्थिति](https://github.com/big-comfy/deadair/blob/main/docs/validation.md) — परीक्षित पथ और वर्तमान सीमाएँ
- [आर्किटेक्चर](https://github.com/big-comfy/deadair/blob/main/docs/architecture.md) — बैकएंड अनुबंध, डेटा मॉडल, सुरक्षा गुण, और सीमाएँ
- [सर्वोत्तम अभ्यास](https://github.com/big-comfy/deadair/blob/main/docs/best-practices.md) — रोलआउट क्रम, अलर्ट संदर्भ, और रूटिंग
- [MSSP गाइड](https://github.com/big-comfy/deadair/blob/main/docs/mssp.md) — secrets, redaction, शेड्यूलिंग, और tenant विफलता प्रबंधन
- [चलने वाले लेकिन देख न पाने वाले डिटेक्शन](https://alephnull-sh.github.io/deadair/) — समस्या और एक पुनरुत्पादनीय सिम्युलेशन
## योगदान
बग, सुझाव, या sanitized reproductions के लिए एक issue खोलें। मेंटेनर कोड परिवर्तन संभालते हैं।
विवरण के लिए [CONTRIBUTING.md](https://github.com/big-comfy/deadair/blob/main/CONTRIBUTING.md) देखें।
## लाइसेंस
Apache-2.0.