如何利用PassTheCert添加域计算机账户?详细步骤与示例演示

📅 2026/7/26 15:23:17 👁️ 阅读次数 📝 编程学习
如何利用PassTheCert添加域计算机账户?详细步骤与示例演示

如何利用PassTheCert添加域计算机账户?详细步骤与示例演示

【免费下载链接】PassTheCertProof-of-Concept tool to authenticate to an LDAP/S server with a certificate through Schannel项目地址: https://gitcode.com/gh_mirrors/pa/PassTheCert

PassTheCert是一款强大的Proof-of-Concept工具,通过Schannel使用证书对LDAP/S服务器进行身份验证,特别适用于不支持PKInit的场景。本文将详细介绍如何使用PassTheCert工具添加域计算机账户,帮助新手用户快速掌握这一实用技能。

一、PassTheCert工具简介 🛠️

PassTheCert支持通过证书在LDAP协议上进行身份验证,可在389端口(通过StartTLS)或636端口(LDAPS)上运行。该工具提供了Python和C#两种版本,其中Python版本可直接用于管理域计算机和执行RBCD攻击。工具的核心功能包括添加计算机账户、配置约束委派服务、获取LAPS密码等,是域环境管理与安全测试的得力助手。

核心功能特点

  • 支持Schannel证书认证的LDAP/S连接
  • 兼容LDAPS(636端口)和StartTLS(389端口)模式
  • 提供交互式LDAP shell进行高级操作
  • 支持计算机账户创建与属性配置

二、准备工作:环境与依赖 📋

在使用PassTheCert添加域计算机账户前,需完成以下准备工作:

1. 安装必要依赖

确保系统已安装Python 3.x及以下依赖库:

pip install ldap3 impacket

2. 获取证书文件

需要有效的用户证书文件(.crt)和私钥文件(.key)。若使用Certipy获取证书,可通过以下命令从PFX文件中提取:

openssl pkcs12 -in certificate.pfx -nocerts -out user.key -nodes openssl pkcs12 -in certificate.pfx -nokeys -out user.crt

3. 克隆项目仓库

git clone https://gitcode.com/gh_mirrors/pa/PassTheCert cd PassTheCert/Python

三、添加域计算机账户的详细步骤 🚀

步骤1:基本语法与参数说明

PassTheCert的Python脚本提供了直观的命令行参数,基本语法如下:

python passthecert.py add-computer -dc-ip <DC_IP> -crt <cert_file> -key <key_file> -computer-name <NAME>$

核心参数说明:

  • -dc-ip:域控制器IP地址
  • -crt:用户证书文件路径(如user.crt)
  • -key:私钥文件路径(如user.key)
  • -computer-name:要创建的计算机账户名(需以$结尾)
  • -port:端口选择(389=StartTLS,636=LDAPS,默认636)

步骤2:通过LDAPS创建计算机账户

使用636端口直接通过LDAPS创建计算机账户:

python passthecert.py add-computer -dc-ip 192.168.1.100 -crt user.crt -key user.key -computer-name WEB01$

成功执行后,工具将返回新创建计算机的详细信息,包括DNS主机名、SAM账户名和密码。

步骤3:创建自定义名称与密码的计算机账户

如需指定计算机账户密码(需符合域密码策略),可使用-password参数:

python passthecert.py add-computer -dc-ip 192.168.1.100 -crt user.crt -key user.key -computer-name DB01$ -password "P@ssw0rd123!"

步骤4:配置带有约束委派的计算机账户

高级用法:创建计算机账户并配置约束委派服务(如cifs和ldap):

python passthecert.py add-computer -dc-ip 192.168.1.100 -crt user.crt -key user.key -computer-name APP01$ -delegation "cifs/SRV-MAIL.domain.local,ldap/SRV-MAIL.domain.local"

四、验证与故障排除 ✅

验证计算机账户是否创建成功

可通过交互式LDAP shell验证新创建的计算机账户:

python passthecert.py ldap-shell -dc-ip 192.168.1.100 -crt user.crt -key user.key

在LDAP shell中执行查询:

> search "(samAccountName=WEB01$)"

常见问题解决

  1. 证书验证失败:确保证书包含正确的EKU(增强型密钥用法),且私钥与证书匹配
  2. LDAP连接超时:检查域控制器IP、端口是否正确,防火墙是否允许访问
  3. 权限不足:确认用于认证的证书对应账户具有添加计算机的权限(默认域管理员或Account Operators组)

五、高级应用:通过LDAP Shell管理计算机账户 🔧

PassTheCert提供的交互式LDAP shell支持更多高级操作,例如:

1. 添加用户到域组

python passthecert.py ldap-shell -dc-ip 192.168.1.100 -crt user.crt -key user.key > add_group_member "CN=Domain Admins,CN=Users,DC=domain,DC=local" "CN=WEB01$,CN=Computers,DC=domain,DC=local"

2. 获取计算机LAPS密码

> get_laps_password "WEB01$"

六、总结与注意事项 📝

使用PassTheCert添加域计算机账户是一个高效且安全的过程,特别适用于需要证书认证的场景。通过本文介绍的步骤,您可以轻松完成计算机账户的创建与配置。请注意:

  • 仅在授权环境中使用该工具进行测试
  • 证书文件需妥善保管,防止未授权访问
  • 操作前确保对域环境有充分了解,避免影响生产系统

通过合理利用PassTheCert的功能,您可以更灵活地管理域环境中的计算机账户,提升域管理效率与安全性。如需深入了解工具原理,可参考项目中的Python版本README和C#版本实现。

【免费下载链接】PassTheCertProof-of-Concept tool to authenticate to an LDAP/S server with a certificate through Schannel项目地址: https://gitcode.com/gh_mirrors/pa/PassTheCert

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考