自动利用BloodHound显示的AD权限提升路径的工具
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/CravateRouge/autobloody

Autobloody
autobloody 是一种自动利用 BloodHound 显示的 Active Directory 权限升级路径的工具。
描述
如果 BloodHound 数据库中存在 privesc 路径,此工具会自动执行两个 AD 对象、源(我们拥有的)和目标(我们想要的)之间的 AD privesc。 自动化由两个步骤组成:
- 使用 bloodhound 数据和 neo4j 查询寻找 privesc 的最佳路径。
- 执行使用
bloodyAD包找到的路径
由于 autobloody 依赖于 bloodyAD ,它支持使用明文密码、pass-the-hash、pass-the-ticket 或证书进行身份验证,并绑定到域控制器的 LDAP 服务以执行 AD privesc。
安装
首先,如果你在 Linux 上运行它,你必须 libkrb5-dev 在你的操作系统上安装 kerberos 才能工作:
# Debian/Ubuntu/Kali
apt-get install libkrb5-dev
# Centos/RHEL
yum install krb5-devel
# Fedora
dnf install krb5-devel
# Arch Linux
pacman -S krb5
一个 python 包可用:
pip install autobloody
或者你可以克隆 repo:
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .
依赖关系
如何使用它
首先必须将数据导入 BloodHound(例如使用 SharpHound 或 BloodHound.py)并且 Neo4j 必须正在运行。
⚠️ -ds 和 -dt 值区分大小写
简单用法:
autobloody -u john.doe -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'
全面帮助:
[bloodyAD]$ ./autobloody.py -h
usage: autobloody.py [-h] [--dburi DBURI] [-du DBUSER] -dp DBPASSWORD -ds DBSOURCE -dt DBTARGET [-d DOMAIN] [-u USERNAME] [-p PASSWORD] [-k] [-c CERTIFICATE] [-s] --host HOST
AD Privesc Automation
options:
-h, --help show this help message and exit
--dburi DBURI The host neo4j is running on (default is "bolt://localhost:7687")
-du DBUSER, --dbuser DBUSER
Neo4j username to use (default is "neo4j")
-dp DBPASSWORD, --dbpassword DBPASSWORD
Neo4j password to use
-ds DBSOURCE, --dbsource DBSOURCE
Case sensitive label of the source node (name property in bloodhound)
-dt DBTARGET, --dbtarget DBTARGET
Case sensitive label of the target node (name property in bloodhound)
-d DOMAIN, --domain DOMAIN
Domain used for NTLM authentication
-u USERNAME, --username USERNAME
Username used for NTLM authentication
-p PASSWORD, --password PASSWORD
Cleartext password or LMHASH:NTHASH for NTLM authentication
-k, --kerberos
-c CERTIFICATE, --certificate CERTIFICATE
Certificate authentication, e.g: "path/to/key:path/to/cert"
-s, --secure Try to use LDAP over TLS aka LDAPS (default is LDAP)
--host HOST Hostname or IP of the DC (ex: my.dc.local or 172.16.1.3)
怎么运行的
首先使用在 Neo4j 的 GDS 库中实现的 Dijkstra 算法找到一个 privesc 路径。 Dijkstra 算法允许解决加权图上的最短路径问题。 默认情况下,由 BloodHound 创建的边没有权重,但有类型(例如 MemberOf、WriteOwner)。 然后根据边的类型和到达的节点的类型(例如用户、组、域)将权重添加到每个边。
生成路径后, autobloody 将连接到 DC 并执行路径并清除可逆的内容(除 ForcePasswordChange 和之外的所有内容 setOwner )。
限制
目前,目前仅支持以下 BloodHound 边缘进行自动利用:
- 成员
- 强制更改密码
- 添加成员
- 添加自我
- 数据同步
- 获取更改/获取所有更改
- 通用所有
- 写Dacl
- 通用写入
- 写所有者
- 拥有
- 包含
- 所有扩展权利