zhadyz/AI_SOC
요약
AI-SOC는 로컬 LLM과 머신러닝을 결합하여 보안 운영 센터(SOC)를 연구하기 위한 오픈소스 구현체입니다. Ollama 기반의 로컬 추론과 RAG를 활용하여 경보 분류, 공격 시뮬레이션, 대응 계획 수립을 수행합니다.
핵심 포인트
- 로컬 우선(Local-first) 방식을 채택하여 보안 데이터 유출 방지
- ML 기반 침입 탐지와 LLM 기반 경보 분류의 결합
- MITRE ATT&CK 및 CVE 데이터를 활용한 RAG 기반 보안 지식 검색
- 공격 캠페인 시뮬레이션 및 자율적 대응 계획 수립 기능 제공
보안 운영 연구를 위한 로컬 AI 서비스, 머신러닝 (Machine-learning) 침입 탐지, 경보 강화 (Alert enrichment), 공격 캠페인 시뮬레이션 및 대응 계획.
AI-SOC는 AI 지원 보안 운영 센터 (Security Operations Center, SOC)의 연구 등급 구현체입니다. 이는 학습된 IDS 모델, 로컬 LLM 경보 분류 (Alert triage), 보안 지식에 대한 검색 (Retrieval), Wazuh 통합, 사고 상관관계 분석 (Incident correlation), 군집 규모의 공격 시뮬레이션, 그리고 프로토타입 대응 오케스트레이터 (Response orchestrator)를 결합합니다.
이 프로젝트는 의도적으로 로컬 우선 (Local-first) 방식을 취합니다. 즉, 보안 이벤트 데이터는 호스팅된 LLM API 대신 로컬 서비스와 Ollama 기반의 LLM 추론을 통해 처리됩니다.
AI-SOC는 하나의 운영적 질문에 답합니다:
노이즈가 많은 경보 스트림과 모델링된 환경이 주어졌을 때, 어떤 위협이 중요한가? 공격자는 어떻게 진행할 수 있는가? 그리고 어떤 방어 조치를 가장 먼저 고려해야 하는가?
AI-SOC는 다음과 같은 여러 협력 서비스들을 통해 이를 수행합니다:
- CICIDS2017 스타일의 네트워크 흐름 (Network-flow) 특징에 대한 ML 추론
- 구조화된 JSON 출력 및 신뢰도 보고를 포함한 LLM 경보 분류 (Alert triage)
- MITRE ATT&CK, CVE 데이터 및 보안 런북 (Security runbooks)에 대한 RAG 검색
- Wazuh 경보 수집 및 강화 (Enrichment)
- 분석가 라벨링 및 재학습 워크플로우를 위한 피드백 캡처
- 킬 체인 (Kill-chain) 추적을 포함한 사고 상관관계 분석
- 공격자 및 방어자 아키타입을 활용한 공격 캠페인 시뮬레이션
- D3FEND 매핑 및 단계적 자율성 제어를 통한 대응 계획
이것은 즉시 투입 가능한 프로덕션용 SOC가 아닙니다. 이는 실행 가능한 로컬 서비스, 학습된 아티팩트 (Artifacts), 문서화된 실험, 그리고 의도적으로 스텁 (Stubbed) 처리된 일부 프로덕션 통합 기능을 갖춘 상당한 수준의 연구 구현체입니다.
| 영역 | 상태 | 비고 |
|---|---|---|
| ML 추론 API | 구현됨 | models/ 내의 학습된 Random Forest, XGBoost, Decision Tree 아티팩트를 사용하는 FastAPI 서비스; 77개의 특징 (Features)을 기대함. |
| ... | docker-compose/integrated-stack.yml | 실험적/오래됨 |
flowchart TB
events["보안 이벤트 및 네트워크 흐름 데이터 (Security Events and Network Flow Data)"]
subgraph collect["탐지 및 수집 (Detection and Collection)"]
...
.
|-- docker-compose/ SIEM, AI 서비스, 모니터링을 위한 Compose 스택
|-- services/
...
- Docker Engine 23+ 및 Docker Compose v2
- 로컬 개발을 위한 Python 3.10+
- 최소 16 GB RAM; 전체 스택 구동을 위해 32 GB 권장
- 이미지, 모델 및 서비스 데이터를 위한 20 GB 이상의 여유 디스크 공간
- 가장 완전한 SIEM/네트워크 센서 설정을 위한 Linux
- 로컬 AI 서비스 개발 및 Windows 호환 SIEM compose 경로를 위한 Windows/macOS 지원
Linux/macOS:
git clone https://github.com/zhadyz/AI_SOC.git
cd AI_SOC
./deploy-ai-soc.sh
Windows PowerShell:
git clone https://github.com/zhadyz/AI_SOC.git
cd AI_SOC
.\deploy-ai-soc.ps1
배포 스크립트는 세 가지 단계를 수행합니다:
- Wazuh SIEM 코어 시작
docker-compose/ai-services.yml로부터 AI 서비스 빌드 및 시작docker-compose/monitoring-stack.yml로부터 모니터링 스택 시작
또한 필요한 경우 .env.example로부터 .env를 생성하고, 가능한 경우 로컬 인증서를 생성하며, 구성된 Ollama 모델을 풀(pull)하고, RAG 지식 베이스 인제스션(ingestion)을 트리거합니다.
# SIEM 코어
docker compose -f docker-compose/phase1-siem-core.yml up -d
# AI 서비스
...
Windows 또는 macOS에서는 다음을 사용하십시오:
docker compose -f docker-compose/phase1-siem-core-windows.yml up -d
./deploy-ai-soc.sh --stop
또는:
.\deploy-ai-soc.ps1 -Stop
| 서비스 | URL |
|---|---|
| Wazuh Dashboard | https://localhost:443 |
| ... |
로컬 compose 파일의 기본 자격 증명은 개발용입니다. 격리된 실험실 환경 이외에서 사용하기 전에 .env 값을 변경하십시오.
curl -X POST http://localhost:8100/analyze \
-H "Content-Type: application/json" \
-d '{
...
예상 응답 형태:
{
"alert_id": "test-001",
"severity": "high",
...
추론 API (Inference API)는 models/feature_names.pkl에 저장된 학습된 피처 순서대로 정확히 77개의 흐름 피처 (flow features)를 기대합니다.
python - <<'PY'
import json
import urllib.request
...
모두 0으로 구성된 벡터는 단순한 스모크 테스트 (smoke-test) 페이로드일 뿐입니다. 실제 예측에는 models/feature_names.pkl에 저장된 학습된 피처 순서를 사용해야 합니다.
curl -X POST http://localhost:8300/retrieve \"\n-H "Content-Type: application/json" \"\n-d '{
...
curl -X POST http://localhost:8400/feedback/test-001 \"\n-H "Content-Type: application/json" \"\n-d '{
...
curl http://localhost:8600/incidents
curl http://localhost:8600/predict/reconnaissance
# 단일 캠페인 (Single campaign)
curl -X POST "http://localhost:8600/simulate?timesteps=3"
# 스웜 시뮬레이션 (Swarm simulation)
...
curl -X POST http://localhost:8800/defend \"\n-H "Content-Type: application/json" \"\n-d '{
...
응답 오케스트레이터 (response orchestrator)를 평가하는 동안에는 드라이 런 (dry-run) 모드를 사용하십시오. 방화벽 (Firewall), EDR, 그리고 ID (identity) 작업은 프로덕션 통합 (production integrations)으로 교체되지 않는 한 어댑터 스텁 (adapter stubs)입니다.
ML 베이스라인 (ML baseline)은 BENIGN 대 ATTACK 이진 분류 (binary classification)를 포함하는 CICIDS2017 스타일의 네트워크 플로우 (network-flow) 데이터로 학습되었습니다.
| 모델 (Model) | 정확도 (Accuracy) | 오탐률 (False Positive Rate) | 비고 (Notes) |
|---|---|---|---|
| Random Forest | 99.28% | 0.25% | 현재 아티팩트 (artifacts) 중 전반적으로 가장 우수한 균형을 보임. |
| ... |
아티팩트 (Artifacts):
models/random_forest_ids.pkl
models/xgboost_ids.pkl
models/decision_tree_ids.pkl
models/scaler.pkl
models/label_encoder.pkl
models/feature_names.pkl
학습 및 배포 노트 (Training and deployment notes):
상관관계 엔진 (correlation engine)에는 멀티 에이전트 공격 캠페인 시뮬레이션 (multi-agent attack-campaign simulation)을 위한 연구 프로토타입이 포함되어 있습니다:
- 네 가지 공격자 아키타입 (attacker archetypes): 기회주의자 (opportunist), APT, 랜섬웨어 (ransomware), 내부자 (insider)
- 세 가지 방어자 아키타입 (defender archetypes): SOC 분석가 (SOC analyst), 사고 대응자 (incident responder), 위협 헌터 (threat hunter)
- 에이전트 실행 확장을 위한 리더/팔로워 몬테카를로 (Leader/follower Monte Carlo) 설계
- 방어 및 취약성 불확실성을 위한 환경 무작위화 (Environment randomization)
- 호스트 위험 히트맵 (Host risk heatmaps), 공격 경로 빈도 (attack-path frequencies), 신뢰 구간 (confidence intervals), 그리고 방어 효과 요약 (defense-effectiveness summaries)
실험 아티팩트 (Experiment artifacts)는 다음 경로에 저장됩니다:
services/correlation-engine/experiments_v3/
services/correlation-engine/paper_draft.md
포함된 실험 아티팩트(artifacts)에서 보고된 주요 결과:
| 결과 | 보고된 결과 |
|---|---|
| 총 에이전트 실행 횟수 | 37,575 |
| ... |
시뮬레이터는 우선순위 지정, 연구 및 'what-if' 분석에 유용합니다. 추가적인 검증 없이 침투 테스트(penetration testing), 적대적 에뮬레이션(adversary emulation) 또는 운영 환경의 리스크 스코어링(risk scoring)을 대체하는 용도로 취급해서는 안 됩니다.
응답 오케스트레이터(response orchestrator)는 탐지된 기법(techniques)과 시뮬레이션 출력을 후보 방어 동작으로 전환합니다:
- 상관관계 엔진(correlation engine)에서 인시던트 컨텍스트(incident context)를 가져옴
- 선택적으로 시뮬레이션 실행
- ATT&CK 기법을 D3FEND 대응책(countermeasures)에 매핑
- 영향도(impact), 안전성(safety) 및 신뢰도(confidence)에 따라 동작 점수 산정
- 승인 티어(approval tier) 할당
- 자동 안전 동작을 실행하거나 인간의 승인이 필요한 동작을 대기열에 추가
- 재시뮬레이션 및 모니터링을 통해 결과 검증
- 피드백을 위해 결과 기록
승인 티어(Approval tiers):
| 티어 | 동작 |
|---|---|
| Observe | 로그만 기록 |
| ... |
안전 불변성(Safety invariant): 모델의 신뢰도와 관계없이 핵심 자산에 영향을 미치거나 폭발 반경(blast radius)이 큰 동작은 인간의 승인이 필요합니다.
테스트 의존성 설치:
pip install -r tests/requirements.txt
전체 테스트 스위트 실행:
pytest tests/
구조 검증기(structural validator) 실행:
PYTHONIOENCODING=utf-8 python tests/validate_tests.py
Windows PowerShell의 경우:
$env:PYTHONIOENCODING = "utf-8"
python tests\validate_tests.py
현재 테스트 참고 사항:
- 일부 테스트 및 CI 스니펫(snippets)은 여전히 78개의 ML 피처(features)를 가정하고 있으나, 현재 API 및 아티팩트는 77개를 사용합니다.
- CI 워크플로 단계에서 현재 여러 곳에 허용적인
|| true패턴을 사용하고 있습니다. CI를 릴리스 게이트(release gate)로 취급하기 전에 이를 강화해야 합니다. - 브라우저, 로드 및 통합 테스트를 실행하려면 관련 로컬 서비스가 실행 중이어야 합니다.
AI-SOC는 추가적인 보안 강화(hardened)를 거치지 않는 한 실험실/연구 환경을 위해 구축되었습니다.
운영 환경과 유사한 사용 전 주의사항:
.env파일의 모든 기본 비밀번호를 교체하십시오..env파일을 유지하십시오.
, 생성된 인증서(certificates), 그리고 자격 증명(credentials)을 git에서 제외하십시오. - 서비스가 호스트 간에 통신하는 경우 TLS를 활성화하십시오.
- 노출된 서비스 엔드포인트(endpoints)에 API 인증을 추가하십시오.
- 컨테이너 네트워크 경계와 호스트 네트워크 센서(host-network sensor) 설정을 검토하십시오.
- 응답-액션 스텁(response-action stubs)을 검증된 벤더 통합(vendor integrations)으로 교체하십시오.
- 자동화된 액션에 사용하기 전에 LLM 출력을 검증하십시오.
- 전체 77개 피처(feature) 흐름 데이터가 존재하지 않는 한, 경고 메타데이터로부터의 ML 예측은 신뢰도가 낮은 것으로 간주하십시오.
저장소에는 다음 내용에 대한 추가 지침이 포함되어 있습니다:
-
운영 환경 방화벽, EDR, 그리고 ID 어댑터(identity adapters)는 구현되지 않았습니다.
-
적대적 ML(Adversarial ML) 회피 테스트가 완료되지 않았습니다.
-
ML 모델은 이진(binary) 분류만 수행합니다. 다중 클래스(multi-class) 공격 레이블링은 향후 과제로 남아 있습니다.
-
시뮬레이터 결과는 실제 레드팀(red-team) 결과와 벤치마킹되지 않았습니다.
-
일부 서비스 수준의 README 파일은 현재 구현 상태보다 뒤처져 있습니다.
docker-compose/integrated-stack.yml은 이 체크아웃(checkout)에서 표준(canonical) 배포 경로가 아닙니다. -
잘못되거나 악의적인 레이블에 대한 피드백 루프(feedback-loop) 보호가 구현되지 않았습니다.
-
재학습 개선을 위한 종단적(longitudinal) 증거는 시간이 경과함에 따른 운영 데이터가 필요합니다.
-
모든 테스트와 CI를 현재의 77개 피처 모델 계약(model contract)에 맞춥니다.
-
스텁(stubbed) 처리된 응답 어댑터를 실제 pfSense, CrowdStrike, Microsoft Defender 또는 ID 제공자(identity-provider) 통합으로 교체합니다.
-
다중 클래스 IDS 분류를 추가합니다.
-
적대적 강건성(adversarial robustness) 평가를 추가합니다.
-
그래프 기반 사고 상관관계(incident correlation)를 추가합니다.
-
Wazuh 인벤토리 및 취약점 데이터로부터 시뮬레이션 환경을 자동 채웁니다.
-
제어된 적대자 에뮬레이션(adversary-emulation) 연습을 통해 시뮬레이터 예측을 검증합니다.
-
모델 재학습 전에 더 강력한 피드백-레이블 검증을 추가합니다.
| 주제 | 링크 |
|---|---|
| Quickstart | docs/getting-started/quickstart.md |
| ... |
게시된 문서는 프로젝트 내에서 research.onyxlab.ai로 참조됩니다.
; 로컬 문서는 MkDocs로 서빙할 수 있습니다:
pip install mkdocs mkdocs-material
mkdocs serve
이 구현은 다음 조사 논문(survey paper)을 기반으로 합니다:
AI-Augmented SOC: 보안 자동화를 위한 LLM 및 에이전트 조사 (A Survey of LLMs and Agents for Security Automation)
Srinivas, S., Kirk, B., Zendejas, J., Espino, M., Boskovich, M., Bari, A., Dajani, K., and Alzahrani, N.
Informatics, vol. 5, no. 4, article 95, 2025.
이 플랫폼은 해당 연구의 여러 주제를 구현하고 테스트합니다:
- 맹목적인 자동화가 아닌 인간-AI 협업 (Human-AI collaboration)
- 로컬 LLM을 사용한 경보 분류 (Alert triage) 및 요약
- 검색 (Retrieval)을 통한 위협 인텔리전스 근거 마련 (Threat-intelligence grounding)
- 분석가 수정을 위한 피드백 루프 (Feedback loops)
- AI 서비스를 기존 SIEM 인프라에 연결할 때 발생하는 실질적인 마찰 (Practical friction)
@misc{aisoc2025,
title = {AI-Augmented Security Operations Center: A Research Implementation},
author = {Bari, Abdul},
...
@article{srinivas2025aiaugsoc,
title = {AI-Augmented SOC: A Survey of LLMs and Agents for Security Automation},
author = {Srinivas, Siddhant and Kirk, Brandon and Zendejas, Julissa and
...
Apache License 2.0. LICENSE를 참조하십시오.
Abdul Bari
California State University, San Bernardino
연락처: z@onyxlab.ai
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기