
CVE-2024-4577 탐지 및 대응을 위한 재현 가능한 SOC 랩
HTSOC는 랩 환경에서 자체 구축한 Security Operations Center 시스템입니다. 이 시스템은 로그 수집, Splunk 기반 탐지, TheHive 기반 알림/케이스 관리, Cortex 기반 Observable 분석, MISP 또는 VirusTotal을 통한 IOC 조회를 결합하고, n8n과 Telegram을 통해 알림을 조율합니다.
CVE-2024-4577은 다계층 탐지 역량을 검증하기 위한 하나의 use case일 뿐이며, 전체 프로젝트는 특정 CVE에 국한되지 않습니다.
이 시스템은 완전한 SOC 프로세스를 시뮬레이션합니다:
flowchart LR
K[Kali 또는 테스트 소스] --> W[Windows/XAMPP + Apache/PHP-CGI]
L[Linux endpoint] --> F[Universal Forwarder]
W --> A[Apache access/error log]
W --> S[Windows Security + Sysmon]
A --> F
S --> F
F --> SP[Splunk]
L --> F
SP -->|Alert webhook| TH[TheHive]
TH -->|Alert + Observable| N[n8n]
N --> T[Telegram]
N -->|분석가가 선택한 Analyzer| C[Cortex]
C --> M[MISP]
C --> V[VirusTotal]
M --> N
V --> N
N --> T위 주소는 랩 전용입니다. 재배포 시 환경 변수로 대체하고 서비스를 인터넷에 노출하지 마십시오.
Splunk는 시스템의 탐지 허브입니다. 검색은 brute force 로그인, 의심스러운 NTLM 네트워크 로그온, 높은 권한 그룹 변경, SMB를 통한 lateral movement, 새 Windows 서비스 생성, 인코딩된 PowerShell 및 PHP-CGI argument injection을 다룹니다.
TheHive는 Splunk에서 알림을 수신하고, severity/source/title을 표시하며, Observable을 저장하고 분석가가 알림을 케이스로 전환할 수 있게 합니다. Cortex는 TheHive에서 Observable을 받아 analyzer를 실행합니다. MISP와 VirusTotal은 두 가지 병렬 분석 옵션이며, 직렬 실행은 필수가 아닙니다.
n8n은 TheHive에서 webhook을 수신하고 초기 SOC 알림을 Telegram으로 전송합니다. 분석가가 Observable을 클릭하면 n8n이 callback을 처리하고, analyzer를 결정하고, Cortex job을 생성하고, 보고서를 기다린 후 결과를 Telegram으로 전송합니다. update_id, callback_query_id, suppression 및 job ID 메커니즘은 중복 실행을 방지합니다.
로그 생성
→ Universal Forwarder
→ Splunk search/correlation
→ TheHive alert
→ n8n webhook
→ Telegram SOC Alert
분석가가 Telegram에서 Observable 클릭
→ Telegram callback
→ n8n이 callback에 즉시 응답
→ TheHive에서 Observable 다시 조회
→ Observable 유형 및 analyzer 확인
→ Cortex가 job 생성
→ n8n이 대기 후 보고서 수신
→ Telegram이 결과 전송
n8n은 알림 도착 시 모든 Observable을 자동으로 실행하지 않습니다. Analyzer는 분석가가 선택할 때만 실행되므로 비용이 절감되고 중복 알림이 줄어들며 조사에 대한 통제권이 유지됩니다.
기본 탐지는 config/splunk/core-savedsearches.conf에 있으며, 정상 활동을 제외하는 lookup이 포함됩니다:
이 use case는 두 계층으로 구성됩니다:
Sigma 형식의 규칙 메타데이터는 detections/sigma/cve-2024-4577-php-cgi-argument-injection.yml에 있습니다. Splunk에서 실행되는 검색은 config/splunk/install-cve-detections.ps1에 있습니다.
config/
├── forwarder/ Windows 및 Linux input/output 구성
├── misp/ 내부 조회용 시뮬레이션 IOC
├── n8n/ TheHive–Telegram–Cortex 워크플로우 템플릿
├── splunk/ saved search, lookup 및 correlation 스크립트
└── sysmon/ Windows 텔레메트리 구성
deploy/ 시크릿이 제거된 Docker Compose 템플릿
detections/
└── sigma/ 벤더 독립적인 규칙 메타데이터
scripts/
├── splunk/ API를 통한 검색 업데이트
├── validation/ readiness 확인
└── windows/ 랩 대상 머신 텔레메트리 설치
docs/ 운영 문서 및 Telegram callback 문서
소스와 라이브 시스템 간의 대조는 시스템 인벤토리에 있습니다. 시크릿이 제거된 실제 n8n 워크플로우 매니페스트는 config/n8n/live-workflow-manifest.json에 있으며, 작은 가져오기용 템플릿 파일은 새 랩을 안전하게 구축하기 위해 별도로 유지됩니다.
cp deploy/docker-compose.soc.example.yml deploy/docker-compose.yml
cp .env.example .env
# 시크릿 매니저 또는 로컬 .env 파일로 시크릿 입력.
docker compose -f deploy/docker-compose.yml config
docker compose -f deploy/docker-compose.yml up -d
docker compose -f deploy/docker-compose.yml ps
Compose 템플릿은 TheHive, Cortex, MISP, Cassandra, Elasticsearch, MinIO, Redis 및 MISP 모듈을 배포합니다. n8n은 현재 호스트 서비스로 운영되며 워크플로우 구성은 config/n8n/에 있습니다.
# Windows 랩에서 PowerShell 관리자 권한으로 실행
.\scripts\windows\install-lab-telemetry.ps1
# Splunk 머신에서, 소스 코드에 비밀번호를 기록하지 않음
$env:SPLUNK_PASSWORD = '<local-secret>'
.\config\splunk\install-cve-detections.ps1
python .\scripts\splunk\update-correlation-searches.py
# readiness 확인
.\scripts\validation\check-system-readiness.ps1
Callback 세부 사항은 docs/telegram-callback-setup.md에 있습니다.
테스트는 하향식 순서로 진행됩니다:
랩에서 사용되는 지표: 이벤트 발생부터 Splunk 탐지까지의 MTTD, 알림 발생부터 Telegram 통지까지의 MTTN, 알림 수신부터 triage/케이스 종료까지의 MTTR, False Positive Rate 및 Duplicate rate.
| 구성 요소 | 역할 | 참조 주소 |
|---|
| Kali | 승인된 테스트 트래픽 생성 소스 | 192.168.10.132 |
| Windows/XAMPP | Apache/PHP-CGI 및 Sysmon 대상 머신 | 192.168.10.130:8080 |
| Splunk | 수집, 검색, correlation 및 알림 | 192.168.10.128 |
| TheHive | 알림, 케이스 및 Observable 관리 | 192.168.10.133:9000 |
| Cortex | analyzer 실행 | 192.168.10.133:9001 |
| MISP | 내부 IOC 저장소 | 192.168.10.133:443 |
| n8n | webhook/callback 자동화 | 192.168.10.133:5678 |
| 탐지 | 주요 데이터 | 목표 |
|---|
| Brute Force Login | Windows Event ID 4625 | 시간 창 내 여러 번의 실패한 로그인 시도 |
| Suspicious NTLM Logon | Windows Event ID 4624 | 비정상적인 NTLM을 사용하는 network logon type 3 |
| Privileged Group Change | Event ID 4732/4728/4756 | 높은 권한 그룹에 계정 추가 |
| Lateral Movement SMB | Event ID 4624 | 단일 소스가 여러 호스트에 비정상적으로 접근 |
| New Windows Service | Event ID 7045 | allowlist 외 새 서비스 생성 |
| Encoded PowerShell | Event ID 4688 | -enc 또는 -EncodedCommand를 사용하는 PowerShell |