AD CS安全评估工具

Certipy MCP Server是一个基于Model Context Protocol (MCP)的服务,为AI助手提供工具以通过SSH远程执行Certipy命令,用于Active Directory Certificate Services (AD CS)的安全评估和漏洞利用。

  • by schwarztim
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 schwarztim/sec-certipy-mcp

使用说明

认证MCP服务器

A. 模型上下文协议(MCP) 为AI助手提供交互工具的服务器 证书 -主要的Active Directory证书服务(AD CS)枚举和滥用工具。

概述

此MCP服务器使AI助手能够通过SSH在远程Kali Linux机器上执行Certpy命令来执行AD CS安全评估。它支持在 认证二手车 研究。

关键能力

  • 枚举 -发现证书颁发机构、模板和ESC1-ESC16漏洞
  • 证书请求 -使用易受攻击的模板请求证书
  • 认证 -执行PKINIT身份验证以获取TGT和NTLM哈希
  • 金证书 -使用泄露的CA私钥伪造证书
  • 影子凭据 -通过关键凭证链接接管帐户
  • NTLM中继 -针对AD CS HTTP/RPC端点的中继攻击
  • 模板/CA管理 -修改模板和管理CA配置

安装

先决条件

  1. Kali Linux机器 安装Certify后:

    sudo apt install certipy-ad
    # or
    pip install certipy-ad
    
  2. SSH访问 配置到Kali机器(建议无密码):

    # Example ~/.ssh/config entry
    Host kali
        HostName 192.168.1.100
        User root
        IdentityFile ~/.ssh/id_rsa
    
  3. Node.js 运行MCP服务器的机器上的18+

设置

# Clone the repository
git clone https://github.com/schwarztim/sec-certipy-mcp.git
cd sec-certipy-mcp

# Install dependencies
npm install

# Build
npm run build

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "certipy": {
      "command": "node",
      "args": ["/path/to/sec-certipy-mcp/dist/index.js"],
      "env": {
        "CERTIPY_KALI_HOST": "kali",
        "CERTIPY_SSH_OPTIONS": "-o StrictHostKeyChecking=no -o ConnectTimeout=10"
      }
    }
  }
}

配置

环境变量 默认值 描述
CERTIPY_KALI_HOST kali Kali机器的SSH主机别名或IP
CERTIPY_SSH_OPTIONS -o StrictHostKeyChecking=no -o ConnectTimeout=10 SSH连接选项

可用工具

证书查找

枚举AD CS配置并识别漏洞(ESC1-ESC16)。这通常是任何AD CS评估的第一步。

{
  "username": "user",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "vulnerable": true
}

认证要求

向AD CS请求证书。支持多种注册协议(RPC、DCOM、HTTP)。

{
  "username": "user",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "ca": "corp-DC-CA",
  "template": "VulnerableTemplate",
  "upn": "administrator@corp.local"
}

认证

使用证书(PKINIT)进行身份验证,以获取Kerberos TGT和NTLM哈希。

{
  "pfx": "/path/to/administrator.pfx",
  "dc_ip": "192.168.1.1"
}

证书伪造

使用泄露的CA私钥伪造证书(黄金证书攻击)。

{
  "ca_pfx": "/path/to/ca.pfx",
  "upn": "administrator@corp.local",
  "subject": "CN=Administrator,CN=Users,DC=corp,DC=local"
}

证明_阴影

滥用影子凭据(密钥凭据链接)进行帐户接管。

{
  "username": "attacker",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "account": "target_user",
  "action": "auto"
}

证书回放

针对AD CS HTTP/RPC端点的NTLM中继攻击(ESC8/ESC11)。

{
  "target": "http://ca.corp.local/certsrv/certfnsh.asp",
  "ca": "corp-DC-CA",
  "template": "DomainController"
}

证书模板

查看和修改证书模板配置(ESC4)。

{
  "username": "user",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "template": "VulnerableTemplate",
  "save_config": "template_backup.json"
}

证书CA

管理证书颁发机构-列出/启用/禁用模板,发出/拒绝请求(ESC7)。

{
  "username": "user",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "ca": "corp-DC-CA",
  "list_templates": true
}

认证证书

管理本地证书-导入、导出、格式转换。

{
  "pfx": "certificate.pfx",
  "export": true,
  "out": "certificate"
}

凭证账户

管理攻击设置的AD用户和计算机帐户。

{
  "username": "user",
  "password": "password",
  "domain": "corp.local",
  "dc_ip": "192.168.1.1",
  "user": "newcomputer$",
  "create": true
}

证书_帮助

获取Certpy命令的帮助。

{
  "command": "find"
}

AD CS攻击向量参考

ESC 漏洞 认证工具 描述
ESC1 证书模板配置错误 certipy_req 和 -upn 允许请求者指定SAN的模板
ESC2 任何目的或子CA模板 certipy_req EKU配置过于宽松
ESC3 注册代理模板 certipy_req 和 -on-behalf-of 代表其他用户请求证书
ESC4 易受攻击的模板ACL certipy_template 对模板对象的写入权限
ESC5 易受攻击的PKI AD对象ACL certipy_ca CA配置的写入权限
ESC6 EDITF_属性主题名称2 certipy_req CA允许SAN规范
ESC7 易受攻击的CA ACL certipy_ca ManageCA或ManageCertificate权限
ESC8 HTTP注册(NTLM中继) certipy_relay 网络注册易受中继攻击
ESC9-16 各种配置错误 certipy_find 其他模板/CA问题

安全通知

此工具仅用于授权的安全测试和研究目的。未经授权访问计算机系统是非法的。在进行安全评估之前,始终确保您有适当的授权。

参考文献

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请随时提交拉取请求。