From 027e3c2a4576509394b01b6c4deff122903b5f83 Mon Sep 17 00:00:00 2001 From: kaffa Date: Fri, 24 Apr 2026 10:13:05 +0900 Subject: [PATCH] =?UTF-8?q?sigmatch:=20Phase=205=20=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?=E2=80=94=20state=20DB=20+=202=ED=8A=B8=EB=9E=99=20=ED=83=90?= =?UTF-8?q?=EC=A7=80=20(=ED=81=B4=EB=9F=AC=EC=8A=A4=ED=84=B0+=EB=8B=A8?= =?UTF-8?q?=EB=B0=9C)=20+=20=EC=98=A4=ED=83=90=EB=B0=A9=EC=A7=80=20?= =?UTF-8?q?=EC=84=A4=EA=B3=84=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/netbis-sigmatch.md | 39 ++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/projects/netbis-sigmatch.md b/projects/netbis-sigmatch.md index cb3600c..926cf02 100644 --- a/projects/netbis-sigmatch.md +++ b/projects/netbis-sigmatch.md @@ -47,13 +47,42 @@ Netbis NPM 로그(VictoriaLogs)를 실시간 분석해 **사람 개입 없이 ## 개발 단계 - [x] Phase 1: feature 추출 파이프라인 (`fetch_features.py`) -- [ ] Phase 2: 24h baseline 수집기 (정상 분포 학습용) -- [ ] Phase 3: IsolationForest 기반 anomaly detection -- [ ] Phase 4: DBSCAN 클러스터링 → 시그니처 자동 합성 -- [ ] Phase 5: dry-run (매치 기록만, ban X) -- [ ] Phase 6: CF IP Access Rules 호출 (ban + TTL) +- [x] Phase 2: 24h baseline 수집기 (retrospective, `collect_baseline.py`) +- [x] Phase 3: IsolationForest 기반 anomaly detection (loop.py 내) +- [x] Phase 4: DBSCAN 클러스터링 + 단발 봇 persistence 탐지 (loop.py 내) +- [x] Phase 5: state DB (IP별 persistence/action 이력, `state.py`) +- [ ] **Phase 5b: 장시간 관찰 (현재 진행)** — 수 시간~1일 dry-run, 실제 공격 도달 시 거동 확인 +- [ ] Phase 6: CF IP Access Rules 호출 (managed_challenge → block 승급) - [ ] Phase 7: jp1 Incus 배포 (systemd timer) +## 오탐 방지 설계 (핵심) + +사람이 작성한 공격 패턴 룰 **없음**. 매 사이클 자동 재합성. + +**2트랙 탐지**: + +1. **클러스터 기반 (캠페인 공격)** + - IsolationForest로 outlier 추출 + - DBSCAN으로 outlier 간 유사 패턴 클러스터 + - 클러스터 강도(크기·rate·성공률) 평가 → challenge + - 연속 5+ 사이클 지속 시 block 승급 + +2. **단발 지속 (개별 봇)** + - 클러스터 미형성 noise outlier 중 + - 3+ 사이클 연속 + anomaly_score 하위 50% 이내 + - → challenge, 5+ 사이클 지속 → block + +**조치 레벨**: +- challenge: Cloudflare managed_challenge (CAPTCHA), TTL 30분 — 정상 유저는 한 번 풀고 통과 +- block: TTL 24시간 — challenge 통과 후에도 공격 지속 시만 + +**사람이 조정하는 건 파라미터만** (코드에 공격 지식 없음): +- `min_cluster_ips` (클러스터 최소 IP 수) +- `min_avg_rate`, `min_success` (강도 임계) +- `persistence_for_challenge`, `persistence_for_block` (승급 기준) +- DBSCAN eps, min_samples +- TTL + ## 관찰된 공격 유형 (2026-04-24 실측) **유형 A — 리소스 크롤러**: static_ratio > 0.5, iri_p90 < 0.1, uniq_paths > 50, 짧은 active