Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
deadair — Finds the detection rules in your SIEM that are running blind | Kitploit
Ferramentas/GitHubGitHub/big-comfy/deadair
Vulnerability AnalysisConfiguration AuditingLog Analysis
GitHubbig-comfy/deadair

deadair

Finds the detection rules in your SIEM that are running blind

Ver Repositório
6há 17h 1mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Conteúdo não disponível no idioma solicitado. Mostrando versão em inglês.

deadair - SIEM detection coverage health

CI Release Go 1.26 License: Apache-2.0

Open-source SIEM detection health.
Find enabled detections that are blind because their telemetry is missing, stale, late, or schema-incompatible.

Runs locally · Read-only · No agent · No telemetry upload

Read the technical write-up · Featured in Detection Engineering Weekly · Featured in tl;dr sec #341

deadair scan of a disposable Elastic lab showing dead and impaired detections

Real scan of a disposable Elastic lab with deliberately missing, stale, late, and unused telemetry. Open the image for the short replay, or reproduce it with make record-scan-lab.

Why deadair

A rule can be enabled, scheduled, and error-free after the data it needs has disappeared. deadair reads the live rule inventory, resolves each rule's inputs using the backend's native semantics, and checks the concrete sources behind them.

It catches:

  • rules whose index, alias, or data-stream selectors resolve to nothing;
  • mixed-selector rules where one declared input has disappeared while another still resolves;
  • rules whose matching sources are all stale or empty;
  • on Elastic, rules running with missing declared fields;
  • on Elastic and eligible Sentinel Scheduled rules, an ingest-lag blind window;
  • on Sentinel, rules whose known sources use an incompatible Basic or Auxiliary table plan;
  • on Elastic and OpenSearch, healthy telemetry that no enabled detection reads.

deadair supports Elastic Security, OpenSearch Security Analytics, and Microsoft Sentinel.

Quick start

Download a binary for macOS, Linux, or Windows from GitHub Releases, or install with Go:

root@kitploit:~
go install github.com/alephnull-sh/deadair/cmd/deadair@latest

Print the read-only setup for your SIEM:

root@kitploit:~
deadair setup elastic      # Elastic Security
deadair setup opensearch   # OpenSearch Security Analytics
deadair setup sentinel     # Microsoft Sentinel

Run one setup, then verify and scan:

root@kitploit:~
deadair check   # verify the credential can scan
deadair scan    # assess live rules and telemetry

Exit codes are stable: 0 passes the configured gate, 1 means gated findings, and 2 means the scan failed.

How it works

StageWhat deadair does
Inventoryreads enabled detections and the inputs they declare
Resolveuses native index resolution on Elastic and OpenSearch; on Sentinel, combines KQL analysis with table, watchlist, saved-function, ASIM, and mapped cross-workspace evidence

Sentinel follows the same rule-to-source model. Its adapter also understands literal watchlists, saved functions, ASIM parsers, mapped workspaces, and summary-table lineage. When Azure provides enough evidence, deadair can show that one filtered slice of a shared table has gone quiet or that a summary pipeline has fallen behind. Those two checks are advisory; they do not change the gate. The usage guide describes the evidence rules, and the validation record records the live test coverage.

deadair scan of a disposable Microsoft Sentinel lab showing missing, stale, late, and incompatible telemetry

Live scan of a disposable Sentinel lab seeded with missing, stale, late, and incompatible telemetry. Open the image for the short replay. See the separate Azure conformance record for the read-only and write-denial tests.

deadair checks whether a detection's telemetry is present and healthy. It does not validate rule logic or prove that a simulated attack will fire an alert. Use static rule validation and end-to-end detection tests for those jobs.

Findings

Every verdict is limited to what the configured credential can see. JSON reports include the configured expressions, resolved sources, resolution method, assessment status, backend metadata, and capability evidence. See the usage guide for worked examples and triage.

Connect a SIEM

Elastic:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
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

Before deadair assesses a rule's mapped remote workspace, that workspace must have Sentinel deployed. Same-subscription mappings can prove source availability. Cross-subscription rules need runtime evidence tied to the exact rule identity. See the Sentinel usage details for the evidence rules, workspace and region limits, and Microsoft's performance guidance.

Use the documented read-only roles for Elastic, OpenSearch, or Microsoft Sentinel.

CI, fleets, and monitoring

root@kitploit:~
# 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 isolates a backend-native candidate rule or detector from unrelated backlog. diff works with redacted reports created with the same caller-held key. Fleet configuration references secrets through environment variables rather than storing secret values.

The official GitHub Action wraps single-instance candidate gates for Elastic, OpenSearch, and Sentinel. It writes a job summary, uploads a redacted JSON report, and can apply a deadair policy without installing a rule. Sentinel workflows authenticate the runner to Azure first; the Action defines no Azure credential inputs.

See CI gate behavior, fleet and MSSP deployment, and the Prometheus examples for configurations to test in your own environment.

Tested backends

BackendLive validation
Elastic Securitytrusted CI on 8.19.19 and 9.4.4
OpenSearch Security Analyticstrusted CI on 2.19.6 and 3.7.0
Microsoft Sentinelrecorded opt-in conformance in disposable UK South workspaces; see validation status

The Sentinel conformance run is manual, not scheduled CI.

Security model

  • All adapter calls are read-only. Trusted Elastic and OpenSearch tests plus separate Sentinel lab probes verify that the documented scan identities cannot perform representative writes.
  • Reports, HTML, state files, and fleet output are written 0600 on POSIX systems.
  • Credentials can come from environment variables or files, avoiding secrets in process arguments.
  • --redact replaces tenant, rule, source, pattern, field, dependency, lineage, provenance, workspace, watchlist, template, and package identifiers with keyed HMAC pseudonyms. Validated dependency probe expressions and their KQL arguments are never serialized. A --redact-key-file generated from random bytes also enables redaction and keeps names stable across separate runs.
  • The exporter binds to loopback by default.
  • deadair has no phone-home behavior or usage telemetry.

Treat reports as sensitive SOC artifacts: they identify blind detections, source names, schema gaps, and unused collection.

Documentation

  • Usage guide — first scans, report evidence, findings, CI gates, state, and fleets
  • Validation status — tested paths and current limits
  • Architecture — backend contract, data model, safety properties, and limits
  • Best practices — rollout order, alert context, and routing
  • MSSP guide — secrets, redaction, scheduling, and tenant failure handling
  • Detections that run but can't see — the problem and a reproducible simulation

Contributing

Bug reports, sanitized fixtures, correctness cases, docs, and backend proposals are welcome. Start with CONTRIBUTING.md and use the backend RFC template for adapter work.

License

Apache-2.0.

Baixar ferramenta
Measurechecks source freshness and timing, plus schema and storage where the backend supports them
Reportemits terminal, JSON, HTML, fleet rollups, and Prometheus metrics with the evidence behind each verdict
FindingMeaningFirst check
no matching sourcenone of the rule's inputs resolve to a visible index, data stream, or Sentinel tablepattern changes, missing integrations, and credential scope
all sources stale or emptyevery resolved source is unusable right nowsource cadence and the ingest path
missing fieldsan Elastic rule-declared field is absent or non-searchable in one or more resolved sources after every source mapping was readparser, package, and mapping changes
lag blind windowpaired-event p95 ingest lag exceeds the rule's lookback marginrule interval, lookback, timestamp override, and pipeline delay
partial input coveragethe complete expression resolves, but one positive selector within it resolves emptymigrations, fallback selectors, and expected alternatives; informational unless policy gates it
source plan incompatiblea Sentinel rule depends on a Basic or Auxiliary table that is not eligible for the analytics-rule evidence pathtable plan and rule type
source degradationa source is stale, empty, low-volume, or schema-driftedsource history and expected maintenance
unused telemetryon Elastic or OpenSearch, data is being stored but no enabled local detection resolves to itdisabled rules and intentional collection