
SIEM에서 블라인드 상태로 실행 중인 탐지 규칙을 찾아냅니다.
deadair는 활성화된 SIEM 탐지가 여전히 필요한 텔레메트리를 확보하고 있는지 확인합니다.
누락되거나 오래된 데이터, 수집 지연, 스키마 불일치를 보고합니다.
로컬에서 실행 · 읽기 전용 · 에이전트 없음 · 텔레메트리 업로드 없음
기술 문서 읽기 · Detection Engineering Weekly에 소개됨 · tl;dr sec #341에 소개됨
일회용 Elastic 랩에서의 누락된 필드와 지연된 이벤트. 재생 컨트롤이 있는 짧은 녹화를 보려면 이미지를 열거나, make record-scan-lab으로 재현하세요.
규칙은 필요한 데이터가 사라진 뒤에도 활성화되고, 예약되고, 오류 없이 실행될 수 있습니다. deadair는 실시간 규칙 인벤토리를 읽고, 백엔드의 네이티브 시맨틱을 사용해 각 규칙의 입력을 해석하며, 그 뒤에 있는 구체적인 소스를 확인합니다.
deadair가 잡아내는 것:
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 scan --json-out report.json --html-out report.html
deadair inspect --source CommonSecurityLog report.json
보고서에 있는 소스 이름을 사용하세요. 조사 가이드는 개별 Sentinel 피드, 유지보수, 복구 추적도 다룹니다.
| 단계 | deadair가 하는 일 |
|---|---|
| 인벤토리 | 활성화된 탐지와 그들이 선언한 입력을 읽습니다 |
| 해석 | Elastic 및 OpenSearch에서는 네이티브 인덱스 해석을 사용하고, Sentinel에서는 KQL 분석을 테이블, 워치리스트, 저장 함수, ASIM, 매핑된 교차 워크스페이스 증거와 결합합니다 |
| 측정 | 백엔드가 지원하는 경우 소스 신선도와 타이밍, 스키마 및 스토리지를 확인합니다 |
| 보고 | 각 판정의 근거와 함께 터미널, JSON, HTML, 플릿 롤업, Prometheus 메트릭을 출력합니다 |
Sentinel은 동일한 규칙-소스 모델을 따르며 리터럴 워치리스트, 저장 함수, ASIM 파서, 매핑된 워크스페이스, 요약 테이블 계보를 추가합니다. 또한 공유 테이블의 필터링된 슬라이스가 조용해졌거나 요약 파이프라인이 뒤처진 경우도 보여줍니다.
사용 가이드는 증거 규칙을 설명하고, 검증 기록은 실시간 테스트 커버리지를 기록합니다.
두 방화벽 피드가 CommonSecurityLog를 공유합니다. 하나는 멈추고, 다른 하나는 계속 보고합니다. 녹화는 저장된 실패 및 복구 스캔을 보여줍니다. 랩 조건은 검증 기록을 참조하세요.
deadair는 탐지의 텔레메트리가 존재하고 정상인지 확인합니다. 규칙 로직을 검증하거나 시뮬레이션된 공격이 경보를 발생시키는지 증명하지는 않습니다. 그러한 작업에는 정적 규칙 검증과 종단 간 탐지 테스트를 사용하세요.
| 발견 사항 | 의미 | 우선 확인 |
|---|---|---|
| 일치하는 소스 없음 | 규칙의 입력 중 어느 것도 가시적인 인덱스, 데이터 스트림, Sentinel 테이블로 해석되지 않음 | 패턴 변경, 누락된 통합, 자격 증명 범위 |
| 모든 소스가 오래되었거나 비어 있음 | 해석된 모든 소스가 현재 사용 불가 | 소스 주기와 수집 경로 |
| 누락된 필드 | 모든 소스 매핑을 읽은 후 하나 이상의 해석된 소스에서 Elastic 규칙이 선언한 필드가 없거나 검색 불가 | 파서, 패키지, 매핑 변경 |
| 지연 블라인드 윈도우 | 쌍을 이루는 이벤트의 p95 수집 지연이 규칙의 룩백 여유를 초과 | 규칙 간격, 룩백, 타임스탬프 재정의, 파이프라인 지연 |
| 부분 입력 커버리지 | 전체 표현식은 해석되지만 그 안의 양성 선택자 하나가 비어 있게 해석됨 | 마이그레이션, 폴백 선택자, 예상 대안; 정책이 게이트하지 않는 한 정보성 |
| 소스 플랜 비호환 | Sentinel 규칙이 분석 규칙 증거 경로에 적합하지 않은 Basic 또는 Auxiliary 테이블에 의존 | 테이블 플랜과 규칙 유형 |
| 소스 성능 저하 | 소스가 오래되었거나, 비어 있거나, 볼륨이 낮거나, 스키마가 드리프트됨 | 소스 이력과 예상 유지보수 |
| 사용되지 않는 텔레메트리 | Elastic 또는 OpenSearch에서 데이터가 저장되고 있지만 활성화된 로컬 탐지가 이를 해석하지 않음 | 비활성화된 규칙과 의도적 수집 |
| 예상 프로듀서 조용함 | 구성된 Sentinel 벤더, 제품 또는 디바이스 피드가 임계값 내에 보고하지 않음 | 해당 피드의 발신자와 수집기 |
| 요약 파이프라인 비정상 | 관련 Sentinel 요약 작업이 실패했거나 마지막 성공이 지연됨 | 네이티브 실행 기록과 요약 쿼리 |
프로듀서 및 요약 파이프라인 발견 사항은 해당 클래스가 정책에서 선택된 경우 종료 상태에 영향을 줍니다. 조용한 디바이스 피드는 공유 테이블의 다른 소비자와 별도로 보고됩니다.
모든 판정은 구성된 자격 증명이 볼 수 있는 것으로 제한됩니다. JSON 보고서에는 구성된 표현식, 해석된 소스, 해석 방법, 평가 상태, 백엔드 메타데이터, 기능 증거가 포함됩니다. 예제와 트리아지는 사용 가이드를 참조하세요.
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>
# Optional: JSON allowlist for literal workspace() targets.
# export DEADAIR_SENTINEL_REMOTES=/restricted/path/sentinel-remotes.json
deadair check
deadair scan
deadair가 규칙의 매핑된 원격 워크스페이스를 평가하기 전에, 해당 워크스페이스에는 Sentinel이 배포되어 있어야 합니다. 동일 구독 매핑은 소스 가용성을 증명할 수 있습니다. 교차 구독 규칙은 정확한 규칙 ID에 연결된 런타임 증거가 필요합니다. 증거 규칙, 워크스페이스 및 리전 제한, Microsoft의 성능 지침은 Sentinel 사용 세부 정보를 참조하세요.
Elastic, OpenSearch, Microsoft Sentinel에 대해 문서화된 읽기 전용 역할을 사용하세요.
# 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은 백엔드 네이티브 후보 규칙 또는 탐지를 관련 없는 백로그로부터 격리합니다. diff는
동일한 호출자 보유 키로 생성된 편집된 보고서와 함께 작동합니다. 플릿 구성은 비밀 값을 저장하는
대신 환경 변수를 통해 비밀을 참조합니다.