Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/shellkraft/anvil
权限提升侦察漏洞分析漏洞利用后渗透利用渗透测试二进制分析红队
GitHubshellkraft/anvil

Anvil

Anvil 是一款面向 Windows 胖客户端应用程序的运行时优先攻击面评估工具,专为进行定向应用程序安全评估的渗透测试人员和安全研究人员而构建。它可在一次定向运行中覆盖多种攻击类别。

查看仓库
37445个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

logo


面向 Windows 胖客户端的运行时优先权限提升与攻击面评估工具。

Anvil 是一款面向 Windows 胖客户端应用程序的运行时优先权限提升与攻击面评估工具。它并非盲目扫描文件系统,而是将 Procmon 捕获与 Windows AccessCheck 相结合,仅报告运行时实际观察到 并且 经确认可由标准用户写入的路径,从而消除了通用枚举工具中普遍存在的误报噪音。


目录

  • 主要功能
  • 工作原理
  • 模块
  • 环境要求
  • Sysinternals 工具
  • 安装
  • 分发
  • 使用方法
  • 示例
  • 输出
  • 严重等级模型
  • 过滤器
  • 免责声明

主要功能

大多数胖客户端评估工具仅覆盖一两种攻击类别。Anvil 的设计理念是:运行时观察、ACL 验证的可利用性以及广泛的攻击面应整合在同一目标运行中,并采用分级管道确保输出结果具备可操作性。

误报消除管道

每个候选路径在报告前需依次通过四道关卡。

硬性关卡

  • 进程完整性等级必须为 High 或 SYSTEM IL
  • 路径不得位于 System32、SysWOW64 或 Program Files 内部
  • 目录可由标准用户写入——通过 Windows AccessCheck API 验证

模块逻辑关卡

  • 符号链接:处置标志(Supersede、OverwriteIf 等)+ 跨用户可写入保护
  • COM:注册表 CLSID 关联到缺失或可写入的 DLL 路径
  • 二进制:检查 PATH 顺序——仅报告出现在 System32 之前 的可写入条目
  • 未加引号路径:确认中间幻影目录可写入,排除内核 .sys 路径

工作原理

  1. 目标解析
    工具将目标解析为可执行文件路径(通过 --exe、--service 或 --pid)。如果是服务,则获取 ServiceInfo 并记录当前 PID 和状态。

  2. Procmon 捕获

    • 对于服务,先启动 Procmon,然后重新启动服务(含状态转换等待)。捕获新 PID。
    • 对于普通 EXE,以 Medium 完整性等级(使用复制的 Explorer 令牌)启动进程以模拟标准用户。记录 PID。

    进程完整性等级在启动后立即(进程存活时)读取并存储在上下文中。

  3. 按模块过滤分析
    每个模块使用自己的 .pmc 过滤器(存储在 filters/ 中)请求 Procmon 导出一个经过滤的 CSV。解析 CSV 后,应用一系列关卡:

    • 完整性 ≥ High
    • 路径不在受保护的系统目录中
    • 目录可由标准用户写入(AccessCheck)
    • 额外的模块特定逻辑(例如符号链接的处置标志、COM 的注册表到文件关联)
  4. 静态关联
    com 模块执行额外的静态扫描——扫描目标二进制中嵌入的 CLSID,并逐一检查 HKLM 和 HKCU——以发现捕获窗口期间未触发的劫持机会。这些结果带有 [静态关联] 标签。

  5. 报告
    结果打印到终端(带颜色编码),并可选择输出为 JSON 或独立的 HTML 报告。


架构

root@kitploit:~
flowchart TB
    %% Phase 1
    subgraph Phase1["阶段 1:目标与运行时发现"]
        TR["目标解析器<br/>--exe / --service / --pid"] -->
        IL["完整性关卡<br/>Medium-IL 启动 / 服务重启"] -->
        PM["Procmon 引擎<br/>运行时 FS / Reg / Pipe 事件"]
    end

    %% Phase 2
    subgraph Phase2["阶段 2:信号缩减"]
        direction LR
        PF["按模块 PMC 过滤器<br/>仅高信号轨迹"] -->
        CSV["过滤后的 CSV 导出"]
    end

    %% Phase 3
    subgraph Phase3["阶段 3:可利用性关卡"]
        HG["硬性关卡<br/>高完整性目标<br/>非受保护路径"] -->
        ACL["AccessChk 验证<br/>标准用户可写入"] -->
        LG["逻辑关卡<br/>模块特定规则"]
    end

    %% Phase 4
    subgraph Phase4["阶段 4:关联"]
        RT["运行时发现"]
        ST["静态关联<br/>COM:CLSID 二进制扫描 / 注册表"]
    end

    %% Phase 5
    subgraph Phase5["阶段 5:报告"]
        SV["严重等级引擎<br/>P1–P5"] --> OUT["控制台输出"]
        SV --> JSON["JSON 报告"]
        SV --> HTML["HTML 报告"]
    end

    %% 跨阶段流程
    PM --> PF
    CSV --> HG
    LG --> RT
    ST -.-> RT
    RT --> SV

    %% 样式
    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目标可执行文件。以 Medium IL 启动以进行 Procmon 捕获。
--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(仅复制一次):

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

输出

终端

根据严重等级进行颜色编码,可选择 --verbose 显示详情块。需要 rich 包(自动安装)。

Image

JSON(--report findings.json)

机器可读的发现对象数组:

root@kitploit:~
[
  {
    "severity": "P1",
    "module": "DLL 劫持",
    "message": "[系统→用户] 幻影 DLL: version.dll",
    "detail": "DLL 名称   : version.dll\n尝试路径  : C:\\ProgramData\\MyApp\\version.dll\n..."
  }
]

HTML(--report report.html)[推荐]

自包含的单文件报告,包含:

  • 执行摘要和严重等级细分
  • 按模块的发现表格
  • 可按严重等级或漏洞类别过滤
  • 可展开查看完整详情
  • 扫描元数据(目标、时间戳、完整性等级)
Image

严重等级模型


过滤器

所有 .pmc 过滤器文件均包含在仓库的 filters/ 目录中——无需额外设置。基于 Procmon 的模块将自动加载它们。

重新创建过滤器

如果过滤器文件丢失或损坏,请使用上述规则在 Procmon 中重新创建:依次选择 过滤器 → 过滤器… 配置条件,然后 文件 → 导出配置… 并保存到 filters/<名称>.pmc。

下次运行该模块时,Anvil 将自动加载该 .pmc 文件。


免责声明

Anvil 专为安全研究、漏洞赏金狩猎和授权的渗透测试而设计。请仅在你拥有所有权或已获得明确书面许可的系统上使用它。

操作注意事项

  • Anvil 在捕获期间会重启服务——这会在目标机器上短暂中断目标服务
  • 内存模块会附加到实时进程,运行前请确保在目标环境中这是可接受的
  • 需要以管理员身份运行——请确保这符合评估的参与规则。
下载工具
特性AnviLSpartacusRobberwinPEASProcmon
自动化发现✅✅✅✅❌
运行时验证的发现✅❌❌❌✅
幻影 DLL 检测✅✅❌❌◐
搜索顺序感知分析✅❌❌❌❌
基于 ACL 的可写性验证✅ (AccessChk)◐◐基本❌
按模块信号过滤✅ (.pmc filters)❌❌❌❌
误报消除(分级管道)✅❌❌❌❌
服务重启与 PID 重新捕获✅❌❌❌❌
Medium-IL 用户模拟✅❌❌❌❌
DLL 劫持(胖客户端感知)✅❌❌◐❌
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用户可写的临时 / 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 报告。
--verbose关闭在终端中打印完整发现详情块。
--no-color关闭禁用 ANSI 颜色输出。
--skip-authenticode关闭跳过 Authenticode 签名检查(适用于大型安装目录的场景,可提高速度)。
--scan-install-dir关闭在 PE 安全检查中包含安装目录中的所有 DLL。
--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 劫持操作是 CreateFile,路径以 .dll 结尾
filters/binary.pmc二进制劫持操作是 CreateFile,路径以 .exe 结尾
filters/config.pmc不安全配置操作是 CreateFile(扩展名过滤在代码中)
filters/com.pmcCOM 劫持操作是 RegQueryKey,路径包含 HKLM
filters/symlink.pmc符号链接攻击操作是 CreateFile