업데이트로 돌아가기
New releaseJul 23, 2026

deadair v0.4.0

SIEM에서 블라인드(무응답) 상태로 실행 중인 탐지 규칙을 찾습니다.

공유

deadair - SIEM detection coverage health

CI Release Go 1.26 License: Apache-2.0

오픈소스 SIEM 탐지 상태 점검.
텔레메트리가 누락, 오래됨, 지연 또는 스키마 비호환으로 인해 맹목적으로 작동하는 활성 탐지를 찾아냅니다.

로컬에서 실행 · 읽기 전용 · 에이전트 불필요 · 텔레메트리 업로드 없음

기술 문서 읽기 · Detection Engineering Weekly 소개 · tl;dr sec #341 소개

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

의도적으로 누락, 오래됨, 지연 및 미사용 텔레메트리가 있는 일회용 Elastic 랩의 실제 스캔입니다. 짧은 재생 영상을 보려면 이미지를 열거나 make record-scan-lab으로 재현하세요.

deadair가 필요한 이유

규칙이 활성화되고, 예약되고, 오류가 없더라도 필요한 데이터가 사라진 후에는 맹목적으로 작동할 수 있습니다. deadair는 실시간 규칙 인벤토리를 읽고, 백엔드의 네이티브 의미 체계를 사용하여 각 규칙의 입력을 해석하고, 그 뒤에 있는 구체적인 소스를 확인합니다.

다음을 감지합니다:

  • 인덱스, 별칭 또는 데이터 스트림 선택자가 아무것도 해석되지 않는 규칙;
  • 선언된 입력 중 하나는 사라졌지만 다른 입력은 여전히 해석되는 혼합 선택자 규칙;
  • 일치하는 소스가 모두 오래되었거나 비어 있는 규칙;
  • Elastic에서 선언된 필드가 누락된 상태로 실행되는 규칙;
  • Elastic 및 적격 Sentinel Scheduled 규칙에서 수집 지연 맹목 창(blind window);
  • Sentinel에서 알려진 소스가 호환되지 않는 Basic 또는 Auxiliary 테이블 플랜을 사용하는 규칙;
  • Elastic 및 OpenSearch에서 활성 탐지가 읽지 않는 정상 텔레메트리.

deadair는 Elastic Security, OpenSearch Security Analytics 및 Microsoft Sentinel을 지원합니다.

빠른 시작

GitHub Releases에서 macOS, Linux 또는 Windows용 바이너리를 다운로드하거나 Go로 설치하세요:

go install github.com/alephnull-sh/deadair/cmd/deadair@latest

SIEM에 대한 읽기 전용 설정을 출력합니다:

deadair setup elastic      # Elastic Security
deadair setup opensearch   # OpenSearch Security Analytics
deadair setup sentinel     # Microsoft Sentinel

하나의 설정을 실행한 후 확인 및 스캔합니다:

deadair check   # 자격 증명이 스캔할 수 있는지 확인
deadair scan    # 실시간 규칙 및 텔레메트리 평가

종료 코드는 안정적입니다: 0은 구성된 게이트를 통과, 1은 게이트된 발견 항목, 2는 스캔 실패를 의미합니다.

작동 방식

단계deadair가 수행하는 작업
인벤토리활성 탐지와 선언된 입력을 읽습니다
해석Elastic 및 OpenSearch에서 네이티브 인덱스 해석을 사용하고, Sentinel에서는 KQL 분석과 테이블, watchlist, 저장 함수, ASIM 및 매핑된 교차 워크스페이스 증거를 결합합니다
측정소스 신선도와 타이밍, 그리고 백엔드가 지원하는 경우 스키마와 스토리지를 확인합니다
보고각 판정 뒤의 증거와 함께 터미널, JSON, HTML, 플릿 롤업 및 Prometheus 메트릭을 출력합니다

Sentinel은 동일한 규칙-소스 모델을 따릅니다. 해당 어댑터는 리터럴 watchlist, 저장 함수, ASIM 파서, 매핑된 워크스페이스 및 요약 테이블 계보(lineage)도 이해합니다. Azure가 충분한 증거를 제공하면 deadair는 공유 테이블의 필터링된 일부가 조용해졌거나 요약 파이프라인이 뒤처졌음을 보여줄 수 있습니다. 이 두 검사는 참고용이며 게이트를 변경하지 않습니다. 사용 가이드는 증거 규칙을 설명하고, 검증 기록은 실시간 테스트 적용 범위를 기록합니다.

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

누락, 오래됨, 지연 및 비호환 텔레메트리가 시드된 일회용 Sentinel 랩의 실시간 스캔입니다. 짧은 재생 영상을 보려면 이미지를 여세요. 읽기 전용 및 쓰기 거부 테스트는 별도의 Azure 적합성 기록을 참조하세요.

deadair는 탐지의 텔레메트리가 존재하고 정상인지 확인합니다. 규칙 로직을 검증하거나 시뮬레이션된 공격이 알림을 발생시킬 것임을 증명하지는 않습니다. 이러한 작업에는 정적 규칙 검증과 엔드투엔드 탐지 테스트를 사용하세요.

발견 항목

발견 항목의미첫 번째 확인
일치하는 소스 없음규칙의 입력 중 어느 것도 표시 가능한 인덱스, 데이터 스트림 또는 Sentinel 테이블로 해석되지 않음패턴 변경, 누락된 통합 및 자격 증명 범위
모든 소스가 오래되었거나 비어 있음해석된 모든 소스가 현재 사용 불가능함소스 주기 및 수집 경로
필드 누락모든 소스 매핑을 읽은 후 Elastic 규칙 선언 필드가 하나 이상의 해석된 소스에 없거나 검색 불가능함파서, 패키지 및 매핑 변경
지연 맹목 창쌍 이벤트 p95 수집 지연이 규칙의 lookback 여유를 초과함규칙 간격, lookback, 타임스탬프 재정의 및 파이프라인 지연
부분 입력 적용 범위전체 표현식은 해석되지만 그 안의 하나의 양성 선택자가 비어 있음마이그레이션, 폴백 선택자 및 예상 대안; 정책이 게이트하지 않는 한 정보 제공용
소스 플랜 비호환Sentinel 규칙이 분석 규칙 증거 경로에 적격하지 않은 Basic 또는 Auxiliary 테이블에 의존함테이블 플랜 및 규칙 유형
소스 저하소스가 오래되었거나, 비어 있거나, 저용량이거나, 스키마 드리프트가 있음소스 기록 및 예상 유지보수
미사용 텔레메트리Elastic 또는 OpenSearch에서 데이터가 저장되고 있지만 활성 로컬 탐지가 이를 해석하지 않음비활성화된 규칙 및 의도적 수집

모든 판정은 구성된 자격 증명이 볼 수 있는 범위로 제한됩니다. JSON 보고서에는 구성된 표현식, 해석된 소스, 해석 방법, 평가 상태, 백엔드 메타데이터 및 기능 증거가 포함됩니다. 실제 예제와 트리아지에 대해서는 사용 가이드를 참조하세요.

SIEM 연결

Elastic:

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:

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:

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>
# 선택 사항: 리터럴 workspace() 대상에 대한 JSON 허용 목록.
# export DEADAIR_SENTINEL_REMOTES=/restricted/path/sentinel-remotes.json

deadair check
deadair scan

deadair가 규칙의 매핑된 원격 워크스페이스를 평가하기 전에 해당 워크스페이스에 Sentinel이 배포되어 있어야 합니다. 동일 구독 매핑은 소스 가용성을 증명할 수 있습니다. 교차 구독 규칙은 정확한 규칙 ID에 연결된 런타임 증거가 필요합니다. 증거 규칙, 워크스페이스 및 지역 제한, Microsoft의 성능 지침은 Sentinel 사용 세부 정보를 참조하세요.

Elastic, OpenSearch 또는 Microsoft Sentinel에 대한 문서화된 읽기 전용 역할을 사용하세요.

CI, 플릿 및 모니터링

# 실시간 소스 가용성에 대해 후보 규칙을 게이트합니다.
deadair scan --rule new-rule.json

# 보고서 간의 새로운 회귀에 대해서만 실패합니다.
deadair diff yesterday.json today.json

# 하나의 프로세스에서 여러 SIEM 인스턴스를 스캔합니다.
deadair scan --fleet fleet.json

# 캐시된 스캔 결과를 Prometheus 메트릭으로 내보냅니다.
deadair serve --interval 5m

scan --rule은 백엔드 네이티브 후보 규칙 또는 탐지기를 관련 없는 백로그에서 격리합니다. diff는 동일한 호출자 보유 키로 생성된 수정된 보고서와 함께 작동합니다. 플릿 구성은 비밀 값을 저장하는 대신 환경 변수를 통해 비밀을 참조합니다.

공식 GitHub Action은 Elastic, OpenSearch 및 Sentinel에 대한 단일 인스턴스 후보 게이트를 래핑합니다. 작업 요약을 작성하고, 수정된 JSON 보고서를 업로드하며, 규칙을 설치하지 않고 deadair 정책을 적용할 수 있습니다. Sentinel 워크플로는 먼저 러너를 Azure에 인증합니다. Action은 Azure 자격 증명 입력을 정의하지 않습니다.

CI 게이트 동작, 플릿 및 MSSP 배포Prometheus 예제를 참조하여 자체 환경에서 테스트할 구성을 확인하세요.

테스트된 백엔드

백엔드실시간 검증
Elastic Security8.19.19 및 9.4.4에서 신뢰할 수 있는 CI
OpenSearch Security Analytics2.19.6 및 3.7.0에서 신뢰할 수 있는 CI
Microsoft Sentinel일회용 UK South 워크스페이스에서 기록된 옵트인 적합성; 검증 상태 참조

Sentinel 적합성 실행은 예약된 CI가 아닌 수동입니다.

보안 모델

  • 모든 어댑터 호출은 읽기 전용입니다. 신뢰할 수 있는 Elastic 및 OpenSearch 테스트와 별도의 Sentinel 랩 프로브는 문서화된 스캔 ID가 대표적인 쓰기를 수행할 수 없음을 검증합니다.
  • 보고서, HTML, 상태 파일 및 플릿 출력은 POSIX 시스템에서 0600으로 작성됩니다.
  • 자격 증명은 환경 변수 또는 파일에서 가져올 수 있어 프로세스 인수에 비밀이 노출되지 않습니다.
  • --redact는 테넌트, 규칙, 소스, 패턴, 필드, 종속성, 계보, 출처, 워크스페이스, watchlist, 템플릿 및 패키지 식별자를 키 기반 HMAC 가명으로 대체합니다. 검증된 종속성 프로브 표현식과 해당 KQL 인수는 직렬화되지 않습니다. 임의 바이트에서 생성된 --redact-key-file은 수정을 활성화하고 별도 실행 간에 이름을 안정적으로 유지합니다.
  • 내보내기는 기본적으로 루프백에 바인딩됩니다.
  • deadair에는 전화 집(phone-home) 동작이나 사용량 텔레메트리가 없습니다.

보고서는 민감한 SOC 아티팩트로 취급하세요: 맹목 탐지, 소스 이름, 스키마 격차 및 미사용 수집을 식별합니다.

문서

기여

버그 보고서, 정리된 픽스처, 정확성 사례, 문서 및 백엔드 제안을 환영합니다. CONTRIBUTING.md로 시작하고 어댑터 작업에는 백엔드 RFC 템플릿을 사용하세요.

라이선스

Apache-2.0.

카테고리