首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自动利用 BloodHound 显示的 Active Directory 权限升级路径的工具

自动利用 BloodHound 显示的 Active Directory 权限升级路径的工具

作者头像
Khan安全团队
发布2023-02-23 14:36:36
发布2023-02-23 14:36:36
89100
代码可运行
举报
文章被收录于专栏:Khan安全团队Khan安全团队
运行总次数:0
代码可运行

如果 BloodHound 数据库中存在 privesc 路径,此工具会自动执行两个 AD 对象、源(我们拥有的)和目标(我们想要的)之间的 AD privesc。自动化由两个步骤组成:

  • 使用 bloodhound 数据和 neo4j 查询寻找 privesc 的最佳路径。
  • 执行使用bloodyAD包找到的路径

由于 autobloody 依赖于bloodyAD,它支持使用明文密码、pass-the-hash、pass-the-ticket 或证书进行身份验证,并绑定到域控制器的 LDAP 服务以执行 AD privesc。

安装

首先,如果你在 Linux 上运行它,你必须libkrb5-dev在你的操作系统上安装 kerberos 才能工作:

代码语言:javascript
代码运行次数:0
运行
复制
# 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 包可用:

代码语言:javascript
代码运行次数:0
运行
复制
pip install autobloody

或者你可以克隆 repo:

代码语言:javascript
代码运行次数:0
运行
复制
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .

使用它

首先必须将数据导入 BloodHound(例如使用 SharpHound 或 BloodHound.py)并且 Neo4j 必须正在运行。

⚠️ -ds 和 -dt 值区分大小写

简单用法:

代码语言:javascript
代码运行次数:0
运行
复制
autobloody -u john.doe -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt '
代码语言:javascript
代码运行次数:0
运行
复制
[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
  • 通用写入
  • 写所有者
  • 拥有
  • 包含
  • 所有扩展权利

https://github.com/CravateRouge/autobloody

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用它
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档