如何利用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 impacket2. 获取证书文件
需要有效的用户证书文件(.crt)和私钥文件(.key)。若使用Certipy获取证书,可通过以下命令从PFX文件中提取:
openssl pkcs12 -in certificate.pfx -nocerts -out user.key -nodes openssl pkcs12 -in certificate.pfx -nokeys -out user.crt3. 克隆项目仓库
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$)"常见问题解决
- 证书验证失败:确保证书包含正确的EKU(增强型密钥用法),且私钥与证书匹配
- LDAP连接超时:检查域控制器IP、端口是否正确,防火墙是否允许访问
- 权限不足:确认用于认证的证书对应账户具有添加计算机的权限(默认域管理员或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),仅供参考
