aclpwn.py实战案例:从普通用户到域管理员权限提升完整过程

📅 2026/7/6 19:57:45 👁️ 阅读次数 📝 编程学习
aclpwn.py实战案例:从普通用户到域管理员权限提升完整过程

aclpwn.py实战案例:从普通用户到域管理员权限提升完整过程

【免费下载链接】aclpwn.pyActive Directory ACL exploitation with BloodHound项目地址: https://gitcode.com/gh_mirrors/ac/aclpwn.py

aclpwn.py是一款与BloodHound集成的Active Directory ACL权限提升工具,它能够利用Neo4j图数据库的路径查找算法,识别并利用基于ACL的权限提升路径。本文将通过一个完整的实战案例,展示如何使用aclpwn.py从普通用户权限逐步提升至域管理员权限。

工具简介:什么是aclpwn.py?

aclpwn.py是一款用Python编写的工具,兼容Python 2.7和3.5+版本。它通过与BloodHound和Neo4j数据库直接集成,实现了高效的路径查找功能,支持任何可逆的基于ACL的攻击链。其核心特性包括:

  • 与BloodHound和Neo4j无缝集成,实现快速路径查找
  • 支持NTLM哈希传递(pass-the-hash)进行利用
  • 高级路径查找算法(Dijkstra)寻找最有效路径
  • 保存恢复状态,便于轻松回滚更改
  • 可通过SOCKS隧道运行,支持跨网络环境操作

工具的主要代码逻辑位于aclpwn/exploitation.py和aclpwn/pathfinding.py文件中,分别负责权限提升的具体实施和路径查找算法。

准备工作:环境搭建与依赖安装

在开始实战之前,需要完成以下准备工作:

1. 安装aclpwn.py

可以通过pip直接安装aclpwn.py:

pip install aclpwn

对于Python 3用户,还需要安装impacket的python36分支:

git clone https://github.com/SecureAuthCorp/impacket.git cd impacket git checkout python36 python setup.py install

2. 准备BloodHound数据

确保已经使用BloodHound收集了目标域的信息,并将数据导入Neo4j数据库。aclpwn.py将直接与Neo4j交互,因此需要知道Neo4j的连接信息(主机、端口、用户名和密码)。

3. 收集必要信息

在开始攻击前,需要收集以下信息:

  • 起始用户的凭证(用户名和密码/NTLM哈希)
  • 目标域的名称
  • Neo4j数据库的连接信息

实战步骤:从普通用户到域管理员

步骤1:连接到Neo4j数据库

首先,使用aclpwn.py连接到Neo4j数据库,验证与BloodHound数据的连接:

aclpwn -u neo4j -p password -dburi bolt://neo4j-host:7687

步骤2:查找权限提升路径

使用find命令查找从普通用户到域管理员的权限提升路径:

aclpwn find -s "DOMAIN\user1" -d "DOMAIN.LOCAL"

aclpwn.py将使用Dijkstra算法在BloodHound数据中寻找最优路径。路径查找功能由aclpwn/pathfinding.py中的dijkstra_find函数实现,该函数通过Neo4j的REST API进行路径查询,并根据预定义的关系成本(如AddMember成本为1,WriteOwner成本为3)计算最优路径。

步骤3:执行权限提升攻击

找到合适的路径后,使用exploit命令执行权限提升:

aclpwn exploit -s "DOMAIN\user1" -d "DOMAIN.LOCAL" -t "DOMAIN\admin" -p path-id

攻击过程中,aclpwn.py会执行一系列操作,如修改ACL、添加用户到特权组等。这些操作的具体实现位于aclpwn/exploitation.py中,主要包括:

  • add_user_to_group: 将用户添加到目标组
  • add_domain_sync: 添加DCSync权限
  • add_addmember_privs: 添加添加成员权限
  • write_owner: 修改对象所有者

步骤4:获取域管理员权限

成功执行攻击后,普通用户将获得域管理员权限。可以使用以下命令验证权限:

impacket-psexec DOMAIN/user1@dc01.DOMAIN.LOCAL -hashes :<ntlm-hash>

步骤5:清理与恢复

完成测试后,使用restore命令回滚所有更改:

aclpwn restore -f aclpwn-20230520-153045.restore

恢复功能由aclpwn/restore.py实现,它会根据攻击过程中保存的历史记录,撤销所有对Active Directory的修改。

防御与检测建议

aclpwn.py利用的是Active Directory中配置不当或不安全的默认ACL,而非漏洞。因此,防御这类攻击需要:

  1. 定期使用BloodHound审计Active Directory中的ACL配置
  2. 遵循最小权限原则,避免过度授予权限
  3. 监控关键事件日志,如:
    • 事件ID 4670(权限更改)
    • 事件ID 5136(目录服务对象修改)
    • 事件ID 4728(添加用户到安全组)

更多防御和检测建议可以参考官方文档。

总结

aclpwn.py是一款功能强大的Active Directory权限提升工具,它通过与BloodHound的深度集成,能够快速识别并利用基于ACL的权限提升路径。本文通过一个完整的实战案例,展示了从普通用户到域管理员的权限提升过程,包括环境准备、路径查找、攻击执行和清理恢复等步骤。

在实际渗透测试中,aclpwn.py可以帮助测试人员快速发现并验证Active Directory中的权限配置问题,同时也为防御方提供了改进安全配置的方向。正确使用和理解这款工具,对于提升Active Directory的安全性具有重要意义。

参考资料

  • 工具源码:aclpwn/
  • 安装说明:requirements.txt
  • 项目许可:LICENSE

【免费下载链接】aclpwn.pyActive Directory ACL exploitation with BloodHound项目地址: https://gitcode.com/gh_mirrors/ac/aclpwn.py

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