一个面向 AD 管理员、防御性安全专业人员和“肮脏”红队成员的 AD CS 工具包

Locksmith 2 是一个用于审计 Active Directory 证书服务(AD CS)基础设施的综合性 PowerShell 模块。它基于既有的 ESC(提权)技术,识别证书模板、证书颁发机构和 PKI 基础设施对象中的安全错误配置。
Locksmith 2 专为 AD 管理员、安全专业人员和渗透测试人员打造,提供:
Locksmith 2 代表了 Locksmith 系列开源 AD CS 安全工具的新一代产品,通过更好的代码组织、增强的报告和更深入的风险分析,对原版进行了改进。
Install-Module -Name Locksmith2 -Scope CurrentUser -Force
git clone https://github.com/jakehildreth/Locksmith2.git
cd Locksmith2
Import-Module .\Locksmith2.psd1
Invoke-Locksmith2
New-LS2Dashboard
| 技术 | 描述 | 目标对象 | 子技术 |
|---|---|---|---|
| ESC1 | 配置错误的证书模板 | 模板 | — |
| ESC2 | 证书 SubCA 滥用 | 模板 | — |
| ESC3 | 注册代理限制 | 模板 | ESC3c1、ESC3c2 |
| ESC4 | 易受攻击的访问控制 | 模板 | ESC4a(ACL)、ESC4o(所有者) |
| ESC5 | 易受攻击的 PKI 对象访问控制 | 基础设施对象 | ESC5a(ACL)、ESC5o(所有者) |
| ESC6 | 已启用 EDITF_ATTRIBUTESUBJECTALTNAME2 | CA | — |
| ESC7 | 易受攻击的 CA 管理员/经理角色 | CA | ESC7a(管理员)、ESC7m(经理) |
| ESC8 | 易受攻击的 Web 注册端点 | CA | — |
| ESC9 | 弱证书映射 | 模板 | — |
| ESC11 | 缺少 RPC 加密 | CA | — |
| ESC13 | 组链接 OID 应用程序策略 | 模板 | — |
| ESC16 | 已禁用 CRL/AIA 安全扩展 | CA | — |
有关 ESC 技术的详细信息,请参阅 SpecterOps 的 Certified Pre-Owned。
Invoke-Locksmith2针对所有已知 ESC 漏洞执行全面的 AD CS 安全审计扫描。
Invoke-Locksmith2 [-Forest <String>] [-Credential <PSCredential>] [-Mode <Int>]
[-SkipVersionCheck] [-SkipPowerShellCheck]
[-ExpandGroups] [-Rescan]
# -Mode values:
# (omit) = return LS2Issue objects to the pipeline (default)
# 0 = Emulates Mode 0/no parameters from the original Locksmith: output issues to console as table
# 1 = Emulates Mode 1 from the original Locksmith: output issues + fix scripts to console as list
Find-LS2VulnerableTemplate扫描证书模板以查找特定的 ESC 漏洞。
Find-LS2VulnerableTemplate -Technique <String>
# Supported: ESC1, ESC2, ESC3c1, ESC3c2, ESC4a, ESC4o, ESC9, ESC13
返回:供程序化使用的 LS2Issue 对象
Find-LS2VulnerableCA扫描证书颁发机构,查找配置问题和危险的角色分配。
Find-LS2VulnerableCA -Technique <String>
# Supported: ESC6, ESC7a, ESC7m, ESC8, ESC11, ESC16
返回:供程序化使用的 LS2Issue 对象
Find-LS2VulnerableObject扫描 PKI 基础设施对象(容器、计算机账户)以查找安全问题。
Find-LS2VulnerableObject -Technique <String>
# Supported: ESC5a, ESC5o
返回:供程序化使用的 LS2Issue 对象
Get-LS2Stores返回审计期间填充的内部数据存储,供检查和分
Get-LS2Stores [-Name <String>]
# Valid -Name values: PrincipalStore, AdcsObjectStore, DomainStore, IssueStore,
# SafePrincipals, DangerousPrincipals, StandardOwners
# Omit -Name to return all stores.
返回:
Set-LS2Forest设置用于扫描的目标林。适用于运行多次扫描或独立使用 Find-LS2Vulnerable* 函数。
Set-LS2Forest -Forest <String>
Set-LS2Credential设置用于 AD 查询的凭据。适用于运行多次扫描或独立使用 Find-LS2Vulnerable* 函数。
Set-LS2Credential -Credential <PSCredential>
Find-LS2RiskyPrincipal从以配置为中心转向以主体为中心的风险分析。按单个主体聚合漏洞,以显示哪些用户或服务账户具有最高的 AD CS 暴露风险。
Find-LS2RiskyPrincipal [-Technique <String>] [-MinimumIssueCount <Int>] [-Top <Int>] [-Rescan]
返回:PSCustomObject,包含 Principal、IssueCount、Techniques、VulnerableObjects、Issues
New-LS2Dashboard根据当前扫描结果生成交互式 HTML 仪表板。PSWriteHTML 已内置(vendored)——无需单独安装。
New-LS2Dashboard [-FilePath <String>] [-Show] [-ExpandGroups] [-Online]
返回:指定路径下的 HTML 文件。请先运行 Invoke-Locksmith2 或 Find-LS2Vulnerable* 以填充存储。
Locksmith 2 采用“开源、需确认贡献”模式,这意味着任何贡献在提交前都必须与维护者进行讨论。
Locksmith 2 仅供合法的安全评估和防御目的使用。用户有责任在运行安全审计前获得适当授权。作者不对本工具的误用或造成的损害负责。
MIT 许可证及 Commons Clause - 详情请参阅 LICENSE 文件。
由 Jake Hildreth 用 💜 制作