Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AutoPiff — Windows 커널 드라이버 패치에서 취약점 수정을 탐지하기 위한 의미 분석 엔진 — 58개의 YAML 규칙, Ghidra 디컴파일, 도달 가능성 추적 및 점수화 | Kitploit
도구/GitHubGitHub/splintersfury/autopiff
Static AnalysisVulnerability AnalysisExploitationReverse EngineeringMalware AnalysisBinary AnalysisFirmware Analysis
GitHubsplintersfury/autopiff

AutoPiff

Windows 커널 드라이버 패치에서 취약점 수정을 탐지하기 위한 의미 분석 엔진 — 58개의 YAML 규칙, Ghidra 디컴파일, 도달 가능성 추적 및 점수화

저장소 보기
64426개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AutoPiff

자동 패치 인텔리전스 및 탐지 프레임워크

Windows 커널 드라이버 패치에서 취약점 수정을 탐지하는 의미 분석 엔진입니다. AutoPiff는 보수적인 YAML 규칙을 사용하여 보안 관련 코드 변경을 높은 정밀도와 설명 가능성으로 식별합니다.

개요

AutoPiff는 취약한 드라이버 버전과 패치된 드라이버 버전 간의 차이를 분석하여 다음을 자동으로 탐지합니다.

  • Use-After-Free 수정 (ExFreePool 후 null 할당)
  • 범위 검사 추가 (memcpy 전 길이 유효성 검사)
  • 사용자/커널 경계 강화 (ProbeForRead/ProbeForWrite)
  • 정수 오버플로우 보호 (안전한 수학 헬퍼)
  • 상태 강화 (인터록된 참조 카운팅)
  • IOCTL 입력 유효성 검사, 풀 손상 방지, 권한 검사 등

주요 기능

  • 높은 정밀도: 보수적인 규칙으로 오탐 최소화
  • 설명 가능: 모든 발견 항목에는 근거와 증거 포함
  • 싱크 인식: 규칙이 위험한 API와의 근접성을 고려
  • 점수 모델: 익스플로잇 가능성과 도달 가능성에 따라 발견 항목 순위 지정
  • Karton 통합: 악성코드 분석 파이프라인에서 분산 서비스로 작동

왜 AutoPiff인가?

건초 더미 속의 바늘

root@kitploit:~
공급업체가 연간 500건의 드라이버 업데이트 출시
├── 490건은 기능/성능/미용 변경
├── 8건은 사소한 버그 수정
└── 2건은 묵시적 보안 수정 (CVE 미할당)

자동화 없음: 500건을 수동 검토하여 2건 발견
AutoPiff 사용: 10개의 고점수 항목을 검토하여 2건 발견

보안 패치는 종종 CVE 할당 없이 출시됩니다. 모든 드라이버 업데이트를 수동으로 리버스 엔지니어링하여 보안 관련 변경을 찾는 것은 현실적이지 않습니다. AutoPiff는 중요한 변경 사항을 자동으로 표면화하여 이 문제를 해결합니다.

AutoPiff가 자동화하는 작업

단계수동 노력AutoPiff 사용절약 시간
버전 페어링드라이버당 5-15분자동~100%
디컴파일바이너리당 2-10분배치, 병렬 처리~95%
함수 매칭페어당 30-60분즉시~100%
보안 변경 식별페어당 2-8시간몇 초~99%
초기 분류 및 순위 지정1-2시간즉시~100%
보고서 생성30-60분즉시~100%

총계: 드라이버 페어당 4-12시간 → 2-5분

여전히 인간 전문성이 필요한 작업

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  AutoPiff에 의해 자동화                                            │
│  ├── 바늘 찾기: "ExFreePool 근처에서 변경된 함수"                     │
│  ├── 분류: "Use-After-Free 수정처럼 보임"                         │
│  └── 순위 지정: "점수 5.5 - 조사할 가치 있음"                      │
├─────────────────────────────────────────────────────────────────┤
│  여전히 수동 (귀하의 전문성)                                        │
│  ├── 익스플로잇 가능성 확인: "실제로 이걸 트리거할 수 있나?"          │
│  ├── 근본 원인 분석: "왜 취약했을까?"                               │
│  ├── 익스플로잇 개발: "이 싱크에 어떻게 도달하나?"                   │
│  └── 영향 평가: "실제 위험은 무엇인가?"                              │
└─────────────────────────────────────────────────────────────────┘

AutoPiff는 익스플로잇 연구를 대체하지 않습니다. 정찰 단계를 자동화하여 대규모로 실행 가능하게 만듭니다.

사용 사례

1. 묵시적 패치 탐지

  • CVE 없이 출시된 드라이버 보안 수정 모니터링
  • 높은 점수의 의미 델타가 나타나면 알림 수신
  • 취약점이 공개적으로 공개되기 전에 포착

2. 1-데이 취약점 연구

  • CVE가 발표되면 정확한 패치를 신속하게 식별
  • 패치 패턴을 취약점 클래스와 상관 관계 분석
  • 익스플로잇 개발 일정 단축

3. 공급업체 보안 감사

  • 드라이버 제품군의 모든 버전을 시간 경과에 따라 분석
  • 수정 사항이 나타난 시점을 보여주는 타임라인 생성
  • 공급업체가 취약점을 처리하는 패턴 식별

4. 역사적 CVE 코퍼스 구축

  • 알려진 CVE 드라이버 페어를 처리하여 학습 데이터 구축
  • 탐지 규칙 검증 및 개선
  • 패치 시그니처 지식 베이스 생성

아키텍처

AutoPiff는 8개의 순차적 단계와 병렬 DriverAtlas 분기로 구성된 Karton 파이프라인으로 실행됩니다. 각 단계는 Redis/RabbitMQ를 통해 통신하는 독립적인 마이크로서비스입니다.

root@kitploit:~
graph LR
    sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Stage 0<br/>Monitor"]
    s0 --> s14["Stages 1-4<br/>Patch Differ"]
    s0 --> triage["DriverAtlas<br/>Triage"]:::triage
    s14 --> s5["Stage 5<br/>Reachability"]
    s5 --> s6["Stage 6<br/>Ranking"]
    s6 --> s7["Stage 7<br/>Report"]
    s6 --> s8["Stage 8<br/>Alerter"]
    triage --> alerts["MWDB Tags<br/>+ Alerts"]:::triage

    classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
    classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
    classDef default fill:#16213e,stroke:#0f3460,color:#eee
단계서비스수행 작업
0driver-monitorWinBIndex와 VirusTotal에서 새 드라이버 버전을 폴링하여 MWDB에 업로드
1-4karton-patch-differ버전 페어링, Ghidra 디컴파일, 함수 매칭, 의미 규칙 평가
5karton-reachabilityIOCTL/IRP 진입점에서 변경된 함수까지 Ghidra 호출 그래프 BFS, 전체 디컴파일 내보내기
6karton-ranking도달 가능성, 의미 심각도 및 공격 표면을 사용하여 발견 항목 점수화
7karton-report구조화된 마크다운 보고서 생성, MWDB에 업로드
8autopiff-alerter점수 >= 8.0인 발견 항목에 대해 Telegram 알림 전송
—autopiff-driver-triageDriverAtlas 공격 표면 점수화 (1-4와 병렬), MWDB 샘플 태깅, Telegram 알림

의미 규칙

AutoPiff는 22개 범주에 걸쳐 58개의 규칙을 포함합니다. 전체 사양은 Docs/semantic_rules.md에서, 기술 참조는 Docs/SEMANTIC_RULES_REFERENCE.md에서 확인하세요.

범주예시 탐지
bounds_checkmemcpy 전 길이 검사 추가
lifetime_fixExFreePool 후 null 할당
user_boundary_checkProbeForRead/ProbeForWrite 추가
int_overflow안전한 수학 헬퍼 사용
state_hardening인터록된 참조 카운트 연산
ioctl_input_validation디스패치 핸들러의 새로운 크기/유형 검사
pool_type_hardeningNonPagedPoolNx로 마이그레이션
privilege_checkSeSinglePrivilegeCheck 추가

싱크 그룹

규칙 엔진은 8개의 싱크 그룹에 걸쳐 50개 이상의 위험한 API 심볼을 추적합니다.

  • memory_copy: RtlCopyMemory, memcpy, memmove
  • pool_alloc: ExAllocatePool, ExAllocatePoolWithTag
  • pool_free: ExFreePool, ExFreePoolWithTag
  • user_probe: ProbeForRead, ProbeForWrite
  • io_sanitization: RtlULongAdd, RtlSizeTMult
  • exceptions: __try, __except
  • string_copy: strcpy, wcsncpy
  • refcounting: InterlockedIncrement/Decrement

점수 모델

발견 항목은 구성 가능한 모델(rules/scoring.yaml)을 사용하여 점수화됩니다.

root@kitploit:~
final_score = semantic_score + reachability_bonus + sink_bonus - penalties

점수 구성 요소:

  • 의미 점수: 규칙 가중치 x 신뢰도 x 범주 승수
  • 도달 가능성 보너스: IOCTL (+4.0), IRP (+2.5), PnP (+2.0), 내부 (+0.5)
  • 싱크 보너스: memory_copy (+1.5), user_probe (+1.5), pool_alloc (+1.2)
  • 패널티: 낮은 매칭 품질, 높은 노이즈 위험

게이팅:

  • 신뢰도 < 0.45인 발견 항목은 폐기됨
  • 매칭 신뢰도 < 0.40은 점수를 3.0으로 제한

설치

Karton 서비스로 (권장)

root@kitploit:~
git clone https://github.com/splintersfury/AutoPiff.git
cd AutoPiff
docker compose up -d

MWDB, 대시보드 및 모니터링을 포함한 전체 프로덕션 스택은 driver_analyzer를 참조하세요.

독립형 라이브러리

root@kitploit:~
pip install pyyaml

from services.karton_patch_differ.rule_engine import SemanticRuleEngine

engine = SemanticRuleEngine('rules/semantic_rules.yaml', 'rules/sinks.yaml')
hits = engine.evaluate(func_name, old_code, new_code, diff_lines)

설정

환경 변수

변수설명기본값
MWDB_API_URLMWDB Core API 엔드포인트http://mwdb-core:8080/api/
MWDB_API_KEY업로드용 MWDB API 키(필수)
KARTON_REDIS_HOSTKarton용 Redis 호스트karton-redis
AUTOPIFF_GHIDRA_TIMEOUTGhidra 디컴파일 시간 초과 (초)900
VT_API_KEY드라이버 모니터링용 VirusTotal API 키(선택 사항)
TELEGRAM_BOT_TOKEN알림용 Telegram 봇 토큰(선택 사항)
TELEGRAM_CHAT_ID알림용 Telegram 채팅(선택 사항)
AUTOPIFF_SCORE_THRESHOLDTelegram 알림 최소 점수8.0
DRIVERATLAS_SCORE_THRESHOLD트라이지 알림 최소 공격 표면 점수8.0

규칙 사용자 정의

rules/semantic_rules.yaml을 편집하여 규칙을 추가하거나 수정하세요.

root@kitploit:~
rules:
  - rule_id: my_custom_rule
    category: bounds_check
    confidence: 0.85
    required_signals:
      - sink_group: memory_copy
      - change_type: guard_added
      - guard_kind: length_check
    plain_english_summary: Added length validation before memory copy.

출력 형식

AutoPiff는 MWDB 샘플에 첨부된 JSON 보고서를 생성합니다.

root@kitploit:~
{
  "pairing": {
    "driver_new": {"sha256": "...", "version": "2.0.9.0"},
    "driver_old": {"sha256": "...", "version": "2.0.8.0"},
    "decision": "accept",
    "confidence": 0.95
  },
  "semantic_deltas": {
    "deltas": [
      {
        "function": "HandleIoctl",
        "rule_id": "null_after_free_added",
        "category": "lifetime_fix",
        "confidence": 0.88,
        "sinks": ["pool_free"],
        "final_score": 5.5,
        "why_matters": "Pointer is now set to NULL after freeing memory."
      }
    ],
    "summary": {
      "total_deltas": 1,
      "top_score": 5.5,
      "match_rate": 100.0
    }
  }
}

문서

문서설명
Docs/semantic_rules.md의미 규칙 사양: 규칙 구조 및 각 범주가 탐지하는 내용
Docs/SEMANTIC_RULES_REFERENCE.md규칙 엔진, 평가 로직 및 점수화에 대한 기술 참조
Docs/reachability.md디스패치 진입점에서 호출 그래프 BFS에 대한 도달 가능성 태깅 사양
Docs/reporting.md보고서 출력 사양 및 형식
Docs/decisions.md설계 결정 및 근거 기록
rules/semantic_rules.yaml58개 탐지 규칙 모두 (YAML)
rules/sinks.yaml범주별로 그룹화된 50개 이상의 위험한 API 심볼
rules/scoring.yaml점수 모델 구성
schemas/모든 파이프라인 단계 출력에 대한 JSON 스키마

프로젝트 구조

root@kitploit:~
AutoPiff/
├── Docs/                          # 설계 문서 및 사양
├── ghidra/scripts/                # Ghidra 헤드리스 스크립트
│   └── autopiff_reachability.py   # 도달 가능성 BFS + 디컴파일 내보내기
├── rules/
│   ├── semantic_rules.yaml        # 58개 탐지 규칙
│   ├── sinks.yaml                 # 50개 이상의 위험한 API 심볼
│   └── scoring.yaml               # 점수 모델 구성
├── schemas/                       # 각 단계에 대한 JSON 스키마
├── services/
│   ├── karton-patch-differ/       # 1-4단계: 차이 분석 + 의미 분석
│   ├── karton-reachability/       # 5단계: 호출 그래프 + 디컴파일
│   ├── karton-ranking/            # 6단계: 점수화
│   ├── karton-report/             # 7단계: 보고서 생성
│   ├── karton-driver-triage/      # DriverAtlas 공격 표면 트라이지
│   ├── autopiff-alerter/          # 8단계: Telegram 알림
│   ├── driver-monitor/            # 0단계: 버전 폴링
│   └── dashboard/                 # 웹 UI
├── tests/unit/                    # 137개 단위 테스트
├── docker-compose.yml
└── README.md

driver_analyzer와의 통합

AutoPiff는 driver_analyzer와 함께 작동하도록 설계되었으며, 이는 전체 프로덕션 인프라(MWDB, Karton, MinIO, 대시보드)를 제공합니다. driver_analyzer compose 파일은 AutoPiff 서비스를 직접 빌드합니다.

root@kitploit:~
# driver_analyzer/docker-compose.yml 내
karton-driver-patch-differ:
  build:
    context: ../AutoPiff
    dockerfile: services/karton-patch-differ/Dockerfile
  volumes:
    - ../AutoPiff/rules:/app/rules:ro

설치 지침은 driver_analyzer README를 참조하세요.

라이선스

MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.

감사의 말

  • Karton - 분산 악성코드 처리 프레임워크
  • MWDB Core - 악성코드 저장소
  • Ghidra - NSA의 소프트웨어 리버스 엔지니어링 프레임워크
도구 다운로드