前言
BloodHound以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关用户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在Red Team面前进行更便捷的分析域内情况,更快速的在域内提升自己的权限
平时在域渗透中拿到了一个普通用户,除了扫描内网资产、碰撞hash等的操作,还有一个很容易被忽略的东西,那就是当前用户怎么能快速的以最短的路径到达域控。
之前有写过一篇包含BloodHound的文章pathfinder,这篇文章主要是记录一下MacOS下安装BloodHound。
获取域内信息
比如我们使用用户枚举得到一个用户support,用户存在AS_REPRoasting
漏洞,拿到密码后现在我们使用BloodHound获取目标域的信息分析。
采集数据
因为我这里的环境是目标主机未开放3389,445共享没有写权限,而且winrm也不能登录,所以只能用python版本的BloodHound进行远程收集信息,其他版本可以到https://bloodhound.readthedocs.io/ 进行下载。
python版本下载:
https://github.com/fox-it/BloodHound.py
git clone https://github.com/fox-it/BloodHound.py.git
cd BloodHound.py
获取域的信息:
python3 BloodHound.py -c ALL -u support -p '#00^BlackKnight' -d blackfield.local -dc dc01.blackfield.local -ns 10.10.10.192
执行后会在当前目录下生成4个文件:
安装neo4j
现在我们导入到BloodHound,因为macOS已经默认安装了jdk,现在我们开始安装neo4j 数据库。
下载地址:https://neo4j.com/download-center/#community
选择Linux/Mac 版本:
解压,进入到bin目录,执行下面命令启动:
$ ./neo4j console
然后会发现下面的报错:
Starting Neo4j.
WARNING! You are using an unsupported Java runtime.
* Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.
* Please see https://neo4j.com/docs/ for Neo4j installation instructions.
Java HotSpot(TM) 64-Bit Server VM warning: Option UseBiasedLocking was deprecated in version 15.0 and will likely be removed in a future release.
原因是Java的版本不符合,查看现在的Java版本,可以发现是16的版本:
$ java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
macOS下切换Java版本也很方便,我们只需要修改环境变量的JAVA_HOME
参数即可,看下本机已安装的Java版本:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
16.0.1 (x86_64) "Oracle Corporation" - "Java SE 16.0.1" /Library/Java/JavaVirtualMachines/jdk-16.0.1.jdk/Contents/Home
11.0.11 (x86_64) "Oracle Corporation" - "Java SE 11.0.11" /Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home
1.8.321.07 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
我们现在需要切换到11的版本,上面显示后面的目录我们需要用到,执行下面的命令即可:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home"
再重新查看Java的版本:
$ java -version
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
现在就可以运行neo4j:
$ ./neo4j console
可以看到已经运行成功, 并给出一个URL,访问可以看到 neo4j 的 Web 控制台:
默认登录账号为
neo4j/neo4j
,这里登录后会提示你修改密码,输入新密码即可。
安装 BloodHound
到下面的地址下载最新版即可:
https://github.com/BloodHoundAD/BloodHound/releases/tag/4.1.0
macOS下选择 BloodHound-darwin-x64.zip
下载后解压,直接点击运行:
输入刚才我们密码登录:
登录成功后,我们把之前获取到四个文件拖入到 BloodHound中:
实施攻击
数据分析
攻击场景:
- 目标主机是一台Windows Sever 2019的域控
- 现在拿到用户support的权限,但是没有登录目标主机和执行命令的权限
- 枚举到目标机器也存在另外一个用户AUDIT2020
我们导入数据后,在左上角输入AUDIT2020,点击左边的Transitive Object Control
:
查看到该用户是属于域用户组:
我们再从左上角输入现有权限的support用户,然后设置为开始的节点:
再查询AUDIT2020,并右键选择Shortest Paths Here from Owned
:
可以看到support用户对AUDIT2020用户有修改密码的权限,点击路径右键可以查询权限操作详情:
攻击
先来解释一下这个存在的漏洞点,首先为什么会存在这个权限呢,我们来还原一下设置的场景。
首先在AD中选择用户组后右键选择委派控制:
选择一个普通用户:
这里选择重置用户密码即可:
下面是目标主机的端口详情:
上面说过这个场景没有办法去登录目标主机执行命令怎么办,不是Remote Management User不可以使用winrm操作,具体可以看Authentication for Remote Connections
这里我们可以通过rpcclient
进行操作,可以参考文章Reset AD user password with Linux
输入我们的账号密码:
rpcclient -U "support" 10.10.10.192
要用到的命令是setuserinfo2
:
Usage: setuserinfo2 username level password [password_expired]
修改密码:
setuserinfo2 audit2020 23 "p@ssw0rd"
这里的23表示this MSDN article
可以看到我们修改成功了:
- 原文作者: F0rmat
- 原文链接: https://xxe.icu/using_bloodhound_under_macos.html
- 版权声明:本作品采用 署名 - 非商业性使用 4.0 国际 (CC BY-NC 4.0)进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。