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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Anvil — Anvil은 Windows thick client 애플리케이션을 위한 런타임 우선(runtime-first) 공격 표면 평가 도구로, 표적화된 애플리케이션 보안 평가를 수행하는 침투 테스터와 보안 연구자를 위해 설계되었습니다. 단일 표적 실행에서 여러 공격 클래스를 포괄합니다. | Kitploit
도구/GitHubGitHub/shellkraft/anvil
Privilege EscalationReconnaissanceVulnerability AnalysisExploitationPost-ExploitationPenetration TestingBinary AnalysisRed Teaming
GitHubshellkraft/anvil

Anvil

Anvil은 Windows thick client 애플리케이션을 위한 런타임 우선(runtime-first) 공격 표면 평가 도구로, 표적화된 애플리케이션 보안 평가를 수행하는 침투 테스터와 보안 연구자를 위해 설계되었습니다. 단일 표적 실행에서 여러 공격 클래스를 포괄합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

logo


Windows thick 클라이언트를 위한 런타임 우선 권한 상승 및 공격 표면 평가.

Anvil은 Windows thick 클라이언트 애플리케이션을 위한 런타임 우선 권한 상승 및 공격 표면 평가 도구입니다. 파일 시스템을 맹목적으로 스캔하는 대신, Procmon 캡처와 Windows AccessCheck를 결합하여 런타임에 관찰되고 표준 사용자에게 쓰기 가능한 경로만 보고함으로써, 일반적인 열거 도구에서 발생하는 거짓 긍정 소음을 제거합니다.


목차

  • 주요 기능
  • 작동 방식
  • 모듈
  • 요구 사항
  • Sysinternals 도구
  • 설치
  • 배포
  • 사용법
  • 예제
  • 출력
  • 심각도 모델
  • 필터
  • 면책 조항

주요 기능

대부분의 thick 클라이언트 평가 도구는 하나 또는 두 가지 공격 클래스를 다룹니다. Anvil은 런타임 관찰, ACL로 확인된 이용 가능성 및 넓은 공격 표면이 모두 동일한 대상 실행에 포함되어야 하며, 게이트가 있는 파이프라인이 결과를 실행 가능하게 유지한다는 아이디어를 기반으로 구축되었습니다.

거짓 긍정 파이프라인

모든 후보는 보고되기 전에 순차적으로 4개의 게이트를 통과합니다.

하드 게이트

  • 프로세스 무결성은 High 또는 SYSTEM IL이어야 함
  • 경로는 System32, SysWOW64 또는 Program Files 내부에 있으면 안 됨
  • 디렉터리는 표준 사용자에게 쓰기 가능 — Windows AccessCheck API를 통해 확인

모듈 로직 게이트

  • 심볼릭 링크: 배치 플래그(Supersede, OverwriteIf 등) + 교차 사용자 쓰기 가능 가드
  • COM: 레지스트리 CLSID가 누락되거나 쓰기 가능한 DLL 경로와 연관됨
  • 바이너리: PATH 순서 확인 — System32 앞에 나타나는 쓰기 가능한 항목만
  • 따옴표 없는 경로: 중간 유령 디렉터리가 쓰기 가능한지 확인, 커널 .sys 경로 제외

작동 방식

  1. 대상 확인
    도구는 (--exe, --service 또는 --pid에서) 실행 대상 경로를 확인합니다. 서비스인 경우 현재 PID 및 상태와 함께 ServiceInfo를 가져옵니다.

  2. Procmon 캡처

    • 서비스의 경우: Procmon을 시작한 후 서비스를 깨끗하게 다시 시작합니다(상태 전환 대기 포함). 새 PID를 캡처합니다.
    • 일반 EXE의 경우: 프로세스가 Medium 무결성 수준(복제된 Explorer 토큰 사용)으로 시작되어 표준 사용자를 시뮬레이션합니다. PID가 기록됩니다.

    프로세스 무결성 수준은 시작 직후(프로세스가 살아 있는 동안) 읽혀 컨텍스트에 저장됩니다.

  3. 모듈별 필터링된 분석
    각 모듈은 자체 .pmc 필터(filters/에 저장)를 사용하여 Procmon에서 필터링된 CSV 내보내기를 요청합니다. CSV를 구문 분석하고 일련의 게이트가 적용됩니다:

    • 무결성 ≥ High
    • 보호된 시스템 디렉터리가 아님
    • 디렉터리가 표준 사용자에게 쓰기 가능(AccessCheck)
    • 추가 모듈별 로직(예: 심볼릭 링크의 배치, COM의 레지스트리-파일 연관)
  4. 정적 상관 분석
    com 모듈은 추가 정적 패스를 수행합니다 — 대상 바이너리에서 포함된 CLSID를 스캔하고 각각을 HKLM 및 HKCU와 비교하여 캡처 기간 동안 실행되지 않은 하이재킹 기회를 찾아냅니다. 이들은 [Static Correlation] 태그로 표시됩니다.

  5. 보고
    결과는 터미널에 출력(색상 코딩)되며 선택적으로 JSON 또는 독립형 HTML 보고서로 기록됩니다.


아키텍처

root@kitploit:~
flowchart TB
    %% Phase 1
    subgraph Phase1["Phase 1: Target & Runtime Discovery"]
        TR["Target Resolver<br/>--exe / --service / --pid"] -->
        IL["Integrity Gate<br/>Medium-IL launch / Service restart"] -->
        PM["Procmon Engine<br/>Runtime FS / Reg / Pipe events"]
    end

    %% Phase 2
    subgraph Phase2["Phase 2: Signal Reduction"]
        direction LR
        PF["Per-Module PMC Filters<br/>High-signal traces only"] -->
        CSV["Filtered CSV Export"]
    end

    %% Phase 3
    subgraph Phase3["Phase 3: Exploitability Gates"]
        HG["Hard Gates<br/>High-Integrity target<br/>Not protected path"] -->
        ACL["AccessChk Validation<br/>Writable by standard user"] -->
        LG["Logic Gates<br/>Module-specific rules"]
    end

    %% Phase 4
    subgraph Phase4["Phase 4: Correlation"]
        RT["Runtime Findings"]
        ST["Static Correlation<br/>COM: CLSID binary scan / registry"]
    end

    %% Phase 5
    subgraph Phase5["Phase 5: Reporting"]
        SV["Severity Engine<br/>P1–P5"] --> OUT["Console Output"]
        SV --> JSON["JSON Report"]
        SV --> HTML["HTML Report"]
    end

    %% Cross-phase flow
    PM --> PF
    CSV --> HG
    LG --> RT
    ST -.-> RT
    RT --> SV

    %% Styling
    classDef p1 fill:#0f2a44,stroke:#4cc9f0,color:#e6f1ff
    classDef p2 fill:#2b193d,stroke:#f72585,color:#fde8f3
    classDef p3 fill:#1f2d1c,stroke:#7ae582,color:#eaf7ea
    classDef p4 fill:#3a1f1f,stroke:#ffb703,color:#fff3d6
    classDef p5 fill:#0b2e2a,stroke:#00f5d4,color:#e6fffb

    class Phase1 p1
    class Phase2 p2
    class Phase3 p3
    class Phase4 p4
    class Phase5 p5
    linkStyle default stroke:#9aa4b2,stroke-width:2px

비교



모듈

모든 Procmon 기반 모듈은 filters/ 디렉터리에 일치하는 .pmc 필터 파일이 필요합니다(필터 참조).


요구 사항

Python

  • Python 3.8 이상
  • 관리자 권한으로 실행해야 함
  • Windows 10 / Server 2016 이상

Python 패키지

Anvil은 첫 실행 시 두 종속성을 자동 설치합니다. 수동으로 설치할 수도 있습니다:

root@kitploit:~
pip install rich pefile
root@kitploit:~
pip install rich>=13.0 pefile>=2023.2.7

Sysinternals 도구

Anvil은 세 개의 Sysinternals 바이너리를 사용합니다.

확인 순서

매 실행마다 Anvil은 다음 우선순위로 각 도구를 확인합니다:

  1. 명시적 플래그 — --procmon, --handle 또는 --accesschk (아래 참조)
  2. 레지스트리 캐시 — HKCU\Software\Anvil (첫 번째 성공적인 확인 시 기록)
  3. PATH — 표준 where 스타일 검색
  4. 자동 다운로드 — live.sysinternals.com에서 가져와 %LOCALAPPDATA%\Anvil\sysinternals\에 저장

도구가 어떤 경로로든 확인되면 그 경로가 레지스트리 캐시에 기록됩니다. 이후 실행은 단계 1–3을 완전히 건너뛰고 캐시된 경로로 바로 이동합니다.

다운로드 실패

도구를 다운로드할 수 없는 경우(인터넷 없음, 방화벽, 프록시) Anvil은 구조화된 오류를 출력하고 즉시 종료됩니다. 누락된 도구와 사용할 플래그를 나열하는 오류 메시지가 표시됩니다.

수동으로 바이너리 제공

해당 플래그를 사용하여 바이너리 경로를 지정하십시오. Anvil은 이를 %LOCALAPPDATA%\Anvil\sysinternals\로 복사하고 레지스트리 캐시에 경로를 기록합니다. 첫 실행 후에는 플래그를 다시 사용할 필요가 없습니다.

root@kitploit:~
python anvil.py --exe "C:\App\target.exe" --procmon   "D:\Tools\Procmon64.exe" --handle    "D:\Tools\handle.exe" --accesschk "D:\Tools\accesschk.exe"

설치

root@kitploit:~
# 저장소 클론
git clone https://github.com/shellkraft/Anvil.git
cd Anvil

# 실행 — 첫 스캔 시 종속성 자동 설치
python.exe anvil.py

팁: Anvil을 실행하기 전에 항상 터미널을 관리자 권한으로 실행으로 시작하십시오.


배포

독립 실행형 실행 파일로 컴파일

PyInstaller 필요 (pip install pyinstaller):

root@kitploit:~
python -m PyInstaller --onefile --console --add-data "filters;filters" --add-data "modules/logo.png;." --icon .\modules\logo.ico --name Anvil anvil.py

출력 바이너리는 dist\Anvil.exe에 있습니다. 대상 컴퓨터에 Python 설치가 필요하지 않습니다.

참고: Windows SmartScreen은 서명되지 않았으므로 처음 실행 시 컴파일된 실행 파일을 차단할 수 있습니다.

사전 빌드된 바이너리

사전 빌드된 Anvil.exe는 Releases 페이지에서 제공됩니다. — 인터넷에서 무작위 바이너리를 신뢰하는 것이 위협 모델에 포함된다면 사용하십시오.

버전SHA-256VirusTotal
V1.0.00ecf5a62...4/72

SHA-256은 certutil -hashfile Anvil.exe SHA256(Windows) 또는 sha256sum Anvil.exe(Linux)로 확인할 수 있습니다.


사용법

root@kitploit:~
python anvil.py [--exe PATH | --service NAME | --pid PID] [옵션]

대상 (하나 필수)

플래그설명
--exe PATH대상 실행 파일. Procmon 캡처를 위해 Medium IL로 시작됨.
--service NAMEWindows 서비스 이름. 레지스트리에서 EXE 확인; 시작을 캡처하기 위해 서비스 재시작.
--pid PID이미 실행 중인 프로세스에 연결. Procmon은 진행 중인 활동을 캡처.

모듈 선택

플래그기본값설명
--modules LISTall실행할 모듈 목록(쉼표로 구분).

모듈 이름: dll, com, registry, binary, configs, installdir, memory, symlink, unquoted, pesec, pipes

Sysinternals 경로

캡처

플래그기본값설명
--procmon-runtime SEC30Procmon 캡처 창(초). 느리게 시작되는 앱의 경우 증가.

출력


예제

데스크톱 애플리케이션 기본 스캔:

root@kitploit:~
python anvil.py --exe "C:\Program Files\MyApp\myapp.exe" --report report.html

느리게 시작되는 앱을 위한 더 긴 캡처 창:

root@kitploit:~
python anvil.py --exe "C:\Program Files\MyApp\myapp.exe" --procmon-runtime 60 --scan-install-dir

Windows 서비스 대상:

root@kitploit:~
python anvil.py --service MyAppSvc --modules dll,binary,unquoted,registry

이미 실행 중인 프로세스에 연결:

root@kitploit:~
python anvil.py --pid 4872 --report report.html --verbose

특정 모듈만 실행:

root@kitploit:~
python anvil.py --exe "C:\App\app.exe" --modules dll,symlink,unquoted

프로세스 메모리 스캔에 추가 사용자 정의 문자열 포함:

root@kitploit:~
python anvil.py --exe "C:\App\app.exe" --modules memory --memory-strings "InternalSecret,DevPassword"
**

**에어갭 환경 — Sysinternals 수동 제공 (한 번 복사됨):**

python anvil.py --exe "C:\App\app.exe" --procmon "E:\Sysint\Procmon64.exe" --handle "E:\Sysint\handle.exe" --accesschk "E:\Sysint\accesschk.exe"

root@kitploit:~

---

## 출력

### 터미널

심각도별 색상 코딩, 선택적 `--verbose` 세부 정보 블록. `rich` 패키지 필요(자동 설치).

<img width="1161" height="772" alt="Image" src="https://assets.kitploit.com/production/public/readmes/12586/0b81de03f45d8374811b095c17583f11df6ba2ce10c55127cbc23240a976d63f.png" />

### JSON (`--report findings.json`)

기계 판독 가능한 결과 객체 배열:
```json
[
  {
    "severity": "P1",
    "module": "DLL Hijacking",
    "message": "[System→User] Phantom DLL: version.dll",
    "detail": "DLL name   : version.dll\nAttempted  : C:\\ProgramData\\MyApp\\version.dll\n..."
  }
]

HTML (--report report.html) [권장]

자체 포함 단일 파일 보고서:

  • 요약 및 심각도 분석
  • 모듈별 결과 테이블
  • 심각도 또는 취약점 클래스별 필터링
  • 확장 가능한 전체 세부 정보
  • 스캔 메타데이터 (대상, 타임스탬프, 무결성 수준)
Image

심각도 모델


필터

모든 .pmc 필터 파일은 저장소의 filters/ 디렉터리에 포함되어 있습니다 — 설정이 필요 없습니다. Procmon 기반 모듈이 자동으로 가져옵니다.

필터 재생성

필터 파일이 손실되거나 손상된 경우 위의 규칙을 사용하여 Procmon에서 재생성하십시오: **Filter → Filter…**로 조건을 구성한 후 **File → Export Configuration…**로 filters/<name>.pmc에 저장합니다.

Anvil은 다음 실행 시 해당 모듈에 대해 .pmc 파일을 자동으로 가져옵니다.


면책 조항

Anvil은 보안 연구, 버그 바운티 헌팅 및 승인된 침투 테스트 작업을 위해 설계되었습니다. 소유하고 있거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오.

운영 참고 사항

  • Anvil은 캡처 중에 서비스를 다시 시작합니다. 평가 중인 시스템에서 대상 서비스가 일시적으로 중단됩니다.
  • 메모리 모듈은 실행 중인 프로세스에 연결됩니다. 실행 전에 대상 환경에서 허용되는지 확인하십시오.
  • 관리자 권한 실행이 필요합니다. 평가의 참여 규칙과 일치하는지 확인하십시오.
도구 다운로드
기능AnviLSpartacusRobberwinPEASProcmon
자동 검색✅✅✅✅❌
런타임 확인 검색✅❌❌❌✅
유령 DLL 탐지✅✅❌❌◐
검색 순서 인식 분석✅❌❌❌❌
ACL 기반 쓰기 가능성 검증✅ (AccessChk)◐◐기본❌
모듈별 신호 필터링✅ (.pmc 필터)❌❌❌❌
거짓 긍정 제거 (게이트 파이프라인)✅❌❌❌❌
서비스 재시작 및 PID 재캡처✅❌❌❌❌
Medium-IL 사용자 시뮬레이션✅❌❌❌❌
DLL 하이재킹 (thick 클라이언트 인식)✅❌❌◐❌
COM 하이재킹 상관 분석✅❌❌❌❌
네임드 파이프 ACL / 가장 분석✅❌❌❌❌
심볼릭 링크 / 정션 남용 탐지✅❌◐◐❌
메모리 비밀 (실행 중 프로세스 스캔)✅❌❌◐❌
PE 보안 / 완화 분석✅❌❌◐❌
권한 상승 평가 (비-악용)✅✅✅❌❌
자동 악용❌✅✅❌❌
신뢰도 / 심각도 점수 매기기✅ (P1–P5)❌❌❌❌
대상별 분석 (exe / svc / pid)✅❌❌❌✅
구조화된 보고 (JSON / HTML)✅❌❌TXT❌
자체 포함 바이너리 배포✅✅✅✅✅
모듈플래그검사 내용
DLL 하이재킹dll.dll에 대한 CreateFile 이벤트 — 유령 DLL 및 쓰기 가능한 디렉터리의 로드된 DLL
COM 하이재킹com표준 사용자에게 쓰기 가능한 COM 서버 레지스트리 키; ProgID에 대한 바이너리 스캔
바이너리 하이재킹binary.exe에 대한 CreateFile 이벤트 — 유령 EXE 심기 및 쓰기 가능한 EXE 디렉터리
안전하지 않은 구성configs쓰기 가능한 디렉터리의 구성 파일 액세스(.ini, .xml, .json, .yaml 등)
설치 디렉터리installdir루트 ACL, 상승 매니페스트 EXE 및 쓰기 가능한 하위 디렉터리
메모리 문자열memory실행 중인 프로세스 메모리 스캔: 자격 증명, 토큰, API 키, JWT, 연결 문자열
심볼릭 링크 공격symlink사용자 쓰기 가능한 temp/appdata 경로의 정션 및 심볼릭 링크 벡터
따옴표 없는 서비스 경로unquoted중간 유령 디렉터리가 쓰기 가능한 따옴표 없는 ImagePath가 있는 서비스
레지스트리 권한 상승registry서비스/애플리케이션 동작을 제어하는 표준 사용자에게 쓰기 가능한 레지스트리 키
PE 보안 플래그pesec대상 바이너리에서 ASLR, DEP, CFG, SafeSEH, Authenticode 누락
네임드 파이프 ACLpipes허용적인 DACL 또는 가장 가능 ACE가 있는 네임드 파이프
바이너리사용 모듈다운로드
Procmon64.exe모든 Procmon 기반 모듈ProcessMonitor.zip
handle.exe네임드 파이프 ACL 모듈Handle.zip
accesschk.exe네임드 파이프 ACL 모듈 — 파이프 DACL 열거AccessChk.zip
플래그설명
--procmon PATHProcmon64.exe 경로. %LOCALAPPDATA%\Anvil\sysinternals\로 복사됨
--handle PATHhandle.exe 경로. %LOCALAPPDATA%\Anvil\sysinternals\로 복사됨
--accesschk PATHaccesschk.exe 경로. %LOCALAPPDATA%\Anvil\sysinternals\로 복사됨
플래그기본값설명
--report FILE—보고서 생성 — 확장자가 형식을 결정: .json은 JSON, .html(또는 기타)은 독립형 HTML 보고서.
--verboseoff터미널에 전체 결과 세부 정보 블록 출력.
--no-coloroffANSI 색상 출력 비활성화.
--skip-authenticodeoffAuthenticode 서명 검사 건너뛰기(대용량 설치 디렉터리에서 더 빠름).
--scan-install-diroff설치 디렉터리의 모든 DLL을 PE 보안 검사에 포함.
--memory-strings STR,...—프로세스 메모리에서 검색할 추가 문자열(쉼표로 구분).
수준레이블일반 CVSS의미
P1치명적8.0 – 8.8자동 트리거 권한 상승 (사용자 상호작용 없음)
P2높음7.0 – 7.9사용자 상호작용 또는 약한 트리거로 악용 가능
P3잘못된 구성4.0 – 6.9따옴표 없는 경로, 완화 누락 — 직접 악용 불가능
P4낮은 영향0.1 – 3.9실제 영향이 제한적인 정보 벡터
P5정보 제공N/A컨텍스트 및 관찰 사항, 취약점 아님
파일모듈주요 필터 규칙
filters/dll.pmcDLL 하이재킹Operation is CreateFile, Path ends with .dll
filters/binary.pmc바이너리 하이재킹Operation is CreateFile, Path ends with .exe
filters/config.pmc안전하지 않은 구성Operation is CreateFile (코드에서 확장자 필터)
filters/com.pmcCOM 하이재킹Operation is RegQueryKey, Path contains HKLM
filters/symlink.pmc심볼릭 링크 공격Operation is CreateFile