PowerView.py MCP 服务器使用说明

PowerView.py 是一个功能强大的 Python 工具,旨在替代原始 PowerShell 脚本 PowerView.ps1,用于 Active Directory 的安全评估和交互。它支持通过 Model Context Protocol (MCP) 模式运行一个服务器,使 AI 助手或 LLM 客户端能够以标准化方式与其功能进行交互。

主要功能点

PowerView.py 提供了丰富的 Active Directory 交互功能,通过 MCP 模式暴露给 LLM 客户端,主要包括:

  • 域信息枚举: 查询用户、计算机、组、组织单位 (OU)、域控制器、域信任、DNS 区域和记录等。
  • 安全漏洞检测: 自动识别 Kerberoastable 账户、AS-REP Roasting 漏洞、弱密码策略、不安全的委派配置 (约束委派, RBCD, 非约束委派)、暴露的 LAPS/gMSA 密码等。
  • 权限分析: 获取对象 ACLs,分析用户/组在对象上的有效权限,识别潜在的写权限或 DCSync 权限。
  • AD 对象管理: 支持添加、删除、修改用户、计算机、组、OU 等对象的属性和 ACL。
  • 服务及会话枚举: 枚举远程计算机上的共享、命名管道、已登录用户和会话。
  • 特定攻击触发: 包含触发器模块,例如 DFSCoerce 和 PrinterBug (需要相应 RPC/SMB 权限)。
  • 证书服务 (AD CS) 集成: 查询 CA 和证书模板,识别 ESC1-ESC15 等漏洞。

安装步骤

要安装 PowerView.py 并启用 MCP 功能,您需要安装 'libkrb5-dev' 等依赖库,然后使用 pip 或 pipx 进行安装。

  1. 安装系统依赖 (Debian/Ubuntu):

    sudo apt install libkrb5-dev

    (CentOS/RHEL 使用 'krb5-devel')

  2. 使用 pip 安装并包含 MCP 依赖:

    pip3 install powerview[mcp]

    或者如果您从 Git 克隆:

    pip3 install .[mcp]

MCP 服务器配置

PowerView.py MCP 服务器通过命令行启动。您需要首先在服务器环境中运行 PowerView.py,并指定 MCP 模式和连接参数。

  1. 在服务器上启动 PowerView.py MCP 服务器:

    powerview domain.local/username:[email protected] --mcp [--mcp-host <服务器监听地址>] [--mcp-port <服务器监听端口>]
    • 'domain.local/username:[email protected]': 替换为您的 Active Directory 连接信息。
    • '--mcp': 启用 MCP 服务器模式。
    • '--mcp-host <服务器监听地址>': 可选,指定服务器监听的 IP 地址 (默认为 127.0.0.1)。使用 '0.0.0.0' 可以在所有可用网络接口上监听。
    • '--mcp-port <服务器监听端口>': 可选,指定服务器监听的端口 (默认为 8080)。
  2. 在您的 MCP 客户端 (例如支持 MCP 的 LLM IDE) 中配置连接信息。这通常涉及配置一个 JSON 对象来描述 MCP 服务器。您需要提供以下信息:

    • 服务器名称 (name): 给服务器起一个易于识别的名称,例如 "PowerView"。
    • 连接方式 (通常是 URL): 指向运行 PowerView.py MCP 服务器的地址和端口。通常是 HTTP SSE 端点,格式为 'http://<服务器 IP 或主机名>:<端口>/sse'。例如,如果服务器在 '192.168.1.100' 的 8888 端口监听,URL 就是 'http://192.168.1.100:8888/sse'。
    • 注意: 有些 MCP 客户端可能需要通过代理 ('mcp-proxy') 连接,在这种情况下,您可能需要在客户端配置中指定 'command' 来启动代理,并将其 'args' 指向 MCP 服务器的 URL。请参考您的 MCP 客户端文档获取准确的配置格式。

启动服务器后,LLM 客户端即可通过配置的地址连接并发现 PowerView.py 提供的工具和能力。

基本使用方法 (MCP 模式)

在 MCP 模式下,您主要通过连接的 LLM 客户端与 PowerView.py 进行交互。LLM 客户端会根据您的问题或指令,调用 PowerView.py 暴露的特定 MCP 工具 (例如 'get_domain_user', 'invoke_kerberoast', 'set_domain_user_password' 等)。您可以通过向 LLM 客户端提问或发送指令来利用 PowerView.py 的功能,例如:

  • "列出所有域用户的 sAMAccountName 和 description 属性。" (LLM 客户端可能会调用 'get_domain_user' 工具)
  • "查找域中所有配置了服务主体名称 (SPN) 的用户,并尝试进行 Kerberoast 攻击。" (LLM 客户端可能会调用 'get_domain_user' 和 'invoke_kerberoast' 工具)
  • "将用户 'johndoe' 添加到 'Domain Admins' 组。" (LLM 客户端可能会调用 'add_domain_group_member' 工具)

LLM 客户端将负责解析您的意图,调用相应的 PowerView.py MCP 工具,并向您呈现结果。

信息

分类

商业系统