AI/ML DFIR 탐지 패키지
AI/ML 공격 및 침해에 대한 오픈 소스 탐지 시그니처.
LLM 애플리케이션, MCP 서버, ML 공급망, AI 인프라, AI 기반 내부자 위협, RAG/벡터 데이터베이스 공격의 침해를 탐지하기 위한 Sigma, YARA, Suricata 규칙을 벤더 중립적으로 모았습니다.
**depalmar.github.io/ai-dfir-toolkit**에서 확인하세요. 이 아티팩트 카탈로그에는 탐지 규칙, ATLAS/OWASP 매핑, 사례 연구, 조사 가이드가 포함되어 있으며, 페이지는 푸시될 때마다 이 저장소로부터 재구축되므로 내용과 벗어나지 않습니다.
공격 배경, 포렌식 아티팩트, Mermaid 공격 체인 다이어그램 및 실습 조사 절차가 담긴 보조 조사 가이드는 docs/ai-dfir-investigation-guide.md를 참조하세요.
라이선스: Apache 2.0.
면책 조항
이것은 독립적인 개인 프로젝트입니다. 어떠한 고용주와도 제휴하거나 승인받았거나 그들을 대신하여 제작된 것이 아닙니다. 모든 연구는 공개 출처(게시된 CVE, 벤더 권고 사항, 학술 논문 및 벤더 중립적 보안 연구)를 기반으로 합니다. 커뮤니티의 기여를 환영합니다.
이것이 존재하는 이유
기존 탐지 콘텐츠 대부분은 벤더 SIEM에 잠겨 있거나 블로그 게시물 곳곳에 흩어져 있습니다. AI/ML 공격은 다음을 아우르는 탐지 범위가 필요합니다:
- 엔드포인트 (Claude Desktop / Cursor / Copilot 설정 변조)
- 클라우드 SaaS 로그 (Bedrock, Azure OpenAI, M365 Copilot)
- 네트워크 (벡터 DB 유출, 모델 유출, ShadowRay C2)
- 파일 아티팩트 (오염된 pickle 모델, 악성 MCP 설정)
이 패키지는 오픈 표준만을 사용하므로 규칙을 오픈 Sigma/YARA/Suricata 도구를 통해 모든 최신 탐지 스택에 배포할 수 있습니다.
구조
ai-dfir-toolkit/
├── 01-llm-prompt-injection/ # 프롬프트 주입, 탈옥(jailbreaks), 간접 주입
├── 02-mcp-attacks/ # MCP 도구 오염, 설정 변조, 러그 풀(rug pulls)
...
각 카테고리 디렉터리에는 해당 위협과 규칙 파일이 네이티브 형식(Sigma의 경우 .yml, YARA의 경우 .yar, Suricata의 경우 .rules)으로 설명된 README.md가 포함되어 있습니다.
| 포맷 | 사용 사례 | 배포 위치 |
|---|
Sigma (.yml) | 범용 로그 기반 탐지 | pySigma 백엔드를 통한 모든 SIEM |
| ... | | |
모든 규칙은 개방형 포맷을 사용합니다. 벤더별 전용 쿼리 언어나 독점 필드 스키마가 없습니다. pySigma 백엔드를 사용하여 사용 중인 플랫폼에 맞게 변환하십시오.
빠른 시작 (Quick start)
Elastic / Kibana
pip install sigma-cli pysigma-backend-elasticsearch
sigma convert -t lucene --without-pipeline ai-dfir-toolkit/**/*.yml > ai-dfir-toolkit.lucene
이 규칙들은 벤더 중립적인 Sigma 형식입니다. 다른 SIEM 쿼리 언어로 변환하려면 pySigma 백엔드 목록을 참조하십시오.
대소문자 구분 (Case sensitivity): 키워드 기반 규칙(프롬프트 주입, 탈옥(jailbreak), 시스템 프롬프트 추출 등)은 Sigma 컨벤션에 따라 contains 일치 여부가 대소문자를 구분하지 않습니다. 공격자의 텍스트는 대소문자가 다양하므로, 이 규칙들은 소문자로 작성되었으며 백엔드가 케이스 폴딩(case fold) 기능을 사용하도록 의존합니다. Elastic의 경우, 일치하는 콘텐츠 필드는 keyword가 아닌 분석된 text로 매핑되어 있는지 확인하십시오 (문자열 필드의 기본값). keyword 매핑은 대소문자를 구분하여 일치시키므로 대문자로 된 입력은 놓칠 수 있습니다. re|i 수정자를 사용하여 강제하려고 시도하지 마십시오. Lucene의 정규식 엔진은 (?i) 플래그를 지원하지 않으며, 결과 쿼리는 유효하지 않습니다.
YARA 스캐닝 (YARA scanning)
yara -r ai-dfir-toolkit/03-model-supply-chain/*.yar /path/to/models/
...
Suricata
cp ai-dfir-toolkit/**/*.rules /etc/suricata/rules/
echo 'rule-files: [ai-dfir.rules]' >> /etc/suricata/suricata.yaml
suricata -T -c /etc/suricata/suricata.yaml
...
아티팩트 카탈로그 (Artifact Catalog)
artifacts/는 AI 코딩 에이전트, 로컬 LLM 런타임, 에이전트 워크플로우 엔진, 그리고 Model Context Protocol(MCP) 구성 요소가 남긴 엔드포인트 아티팩트를 기계가 읽을 수 있는 카탈로그입니다. 여기에는 설치 경로, 자격 증명 저장소, MCP 설정 파일, 리스닝 포트, 프로세스 관계, 레지스트리 키 등이 포함되며, 각 항목은 포렌식 가치와 소싱 신뢰도로 평가되고 IR(Incident Response) 분류를 위한 수집 우선순위가 지정됩니다.
총 11가지 도구 카테고리가 다루어집니다: 로컬 LLM 런타임, 코딩 에이전트 및 IDE, 에이전트 프레임워크, 코딩-에이전트 CLI, 워크플로우 엔진, 브라우저 에이전트, 컴퓨터 사용 에이전트, MCP 호스트, 클라우드 에이전트, 코드 완성 도구, 그리고 코드 실행 에이전트입니다. 이와 함께 자체적인 출처(provenance)를 지닌 문서화된 인시던트 사례 연구들이 있으며, 분석가가 의견 불일치를 해결하는 대신 contested 필드에 기록합니다.
벤더 중립적인 Sigma 탐지 규칙과 osquery 인벤토리 팩을 제공하며, 네 가지 다운스트림 형식으로 생성된 피드를 포함합니다:
위협 인텔리전스 (Threat intel)
이 카탈로그 위에는 위협 인텔리전스 계층이 있습니다:
- 행위자 프로필(Actor profiles): 속성 그룹과 리포터가 명명한 클러스터를 포함하는 20개의 프로필.
- 사례 연구(Case studies): 22개로, 221개의 인디케이터를 포함합니다.
- 고정 프레임워크(Pinned frameworks): ATLAS 2026.09, ATT&CK 19.2, CISA KEV, 그리고 OWASP LLM 및 Agentic 2026 목록.
각 프로파일은 해당 내용을 인용한 사례 및 보고된 출현 기록을 기반으로 파생됩니다. 이 내용은 행위자가 사용하는 기술, 이 저장소에서 각 기술을 탐지하는 규칙, 행위자가 악용하는 목록화된 도구, 그리고 그 도구들 중 어떤 아티팩트를 먼저 수집해야 하는지를 제공합니다. 해당 사이트는 다음 기능을 추가합니다:
- 교차 필터링 위협 인텔리전스(Threat intel) 뷰: 커버리지 격차(coverage gaps), 피해자학(victimology), 타임라인, 기술 히트맵(technique heatmap), 탐지 백로그(detection backlog), 행위자 유사성 및 클러스터
- Maltego 스타일의 그래프 작업대(graph workbench)
- 자체 포함형 분류 스크립트(PowerShell 또는 bash) 또는 이에 상응하는 Velociraptor/KAPE 명령을 생성하는 수집 계획(collection plan)
피드: intel.json(artifacts/docs/api/intel.json), OpenCTI 또는 MISP용 STIX 2.1 번들, 그리고 Maltego 가져오기 CSV. 두 개의 예약된 워크플로우가 이를 최신 상태로 유지합니다:
- 프레임워크 핀(pins)은 매주 새로 고침되며, 참조 데이터만 변경되었을 때 자동 병합됩니다.
- 새로운 공개 보고서는 사람이 연구할 수 있도록
intel-candidate 이슈로 도착합니다.
현재 카운트 — 목록화된 도구, 문서화된 아티팩트, 자격 증명 위치(credential locations), MCP 설정 경로(MCP config paths), 사례 연구, 그리고 위험 및 신뢰도 분석 — 는 artifacts/README.md의 목차표를 참조하십시오. 해당 표는 scripts/readme_counts.py에 의해 생성되며 CI에서 게이팅되므로, 그 숫자가 확실하게 최신인 유일한 장소입니다.
커버리지 개요
161개의 개별 시그니처를 포함하는 70개의 규칙 파일 — 아홉 가지 공격 클래스 카테고리와 교차 도구 엔드포인트 세트:
| 카테고리 | 파일 | 시그니처 | ATLAS 기법 | OWASP LLM 2026 | OWASP Agentic |
|---|
| LLM 프롬프트 인젝션 (LLM Prompt Injection) | 8 | 10 | T0051, T0054, T0029 | LLM01, LLM02, LLM06, LLM08 | ASI01 |
| ... | | | | | |
엔드포인트 세트는 artifacts/detections/에 위치하며, 특정 공격 클래스보다는 호스트의 에이전트 동작에 한정되어 적용되므로 아티팩트 카탈로그 내 모든 도구에 걸쳐 적용됩니다. 여기에 있는 osquery 팩은 Sigma 규칙으로는 답변할 수 없는 "어떤 호스트가 이것을 가지고 있는가"라는 인벤토리 질문에 답합니다.
시그니처 개수에는 다중 문서 Sigma YAML, 단일 YARA 파일 내의 여러 rule 블록, 그리고 단일 Suricata .rules 파일 내의 여러 alert 라인이 포함됩니다. 하나의 파일이 종종 여러 관련 변종을 다룹니다.
규칙별 매핑은 MAPPINGS.md를 참조하십시오.
튜닝 참고 사항 (Tuning notes)
이 규칙들은 노이즈보다 신호(signal over noise)에 치우치도록 작성되었지만, 모든 환경은 다릅니다. 각 규칙에는 다음 내용이 포함됩니다:
falsepositives: 섹션: 알려진 오탐(FP) 시나리오 목록
level: 필드 (low / medium / high / critical) — 프로덕션에서는 high 이상부터 시작하는 것을 권장합니다.
- 튜닝 가능한 선택자(Tunable selectors): 특정 조직/사용자/네임스페이스로 범위를 지정할 수 있습니다.
권장 배포 순서:
- 테스트 인덱스/워크스페이스에 7일 동안 배포합니다.
- 탐지된 히트(hits)를 분류하고,
selection 및 filter 블록을 튜닝합니다.
- 적절한 심각도로 프로덕션에 승격시킵니다.
테스트 (Testing)
tests/ 디렉토리에는 규칙의 정확성을 검증하기 위한 샘플 아티팩트(악성 및 무해)가 포함되어 있습니다. 다음을 실행하십시오:
예상 결과: 15개 통과, 0개 실패.
이 스위트는 yara 바이너리가 누락된 경우 깨끗한 실행으로 보고하는 대신 강제 종료됩니다. 그렇지 않으면 도구의 부재가 모든 "매치 없음 예상(expect no matches)" 검증을 통과로 처리하여 아무것도 테스트하지 않으면서도 시스템이 정상인 것처럼 보이게 할 것입니다.
기여 (Contributing)
PR 환영합니다. 규칙 제출 요구 사항:
- 공격 기법을 참조합니다 — ATLAS ID, CVE 또는 발표된 연구
tests/에 테스트 데이터를 포함합니다 — 샘플 로그 라인, 파일 또는 PCAP
- 규칙 내의 오탐지(false positives)를 문서화합니다
- 위협과 일치하는 소문자, snake_case 파일명을 사용합니다
- Sigma 규칙에서
attack.atlas.txxxx로 태그 지정합니다
Sigma 형식: Sigma 사양을 따르세요.
참고 자료 (References)
라이선스 (License)
Apache License 2.0 — 자세한 내용은 LICENSE를 참조하세요.
이 규칙들은 상업적 및 비상업적 환경에서 자유롭게 사용, 수정 및 재배포할 수 있습니다. 출처 표기는 감사하지만 필수는 아닙니다.
artifacts/catalog/, artifacts/case-studies/, 그리고 artifacts/docs/api/ 아래의 카탈로그 데이터는 CC BY 4.0 라이선스를 따르며, artifacts/LICENSE-DATA를 참조하세요. artifacts/ 아래의 스크립트와 스키마를 포함한 모든 다른 콘텐츠는 저장소의 Apache-2.0 라이선스 하에 있습니다.
유지 관리자 (Maintainer): Raymond DePalma — 독립 보안 연구원.
본 프로젝트는 개인적인 것이며 어떠한 고용주와도 관련이 없습니다.