前言

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个文件:

5

安装neo4j

现在我们导入到BloodHound,因为macOS已经默认安装了jdk,现在我们开始安装neo4j 数据库。

下载地址:https://neo4j.com/download-center/#community

选择Linux/Mac 版本:

1

解压,进入到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 控制台:

2

默认登录账号为 neo4j/neo4j,这里登录后会提示你修改密码,输入新密码即可。

安装 BloodHound

到下面的地址下载最新版即可:

https://github.com/BloodHoundAD/BloodHound/releases/tag/4.1.0

macOS下选择 BloodHound-darwin-x64.zip

下载后解压,直接点击运行:

3

输入刚才我们密码登录:

4

登录成功后,我们把之前获取到四个文件拖入到 BloodHound中:

6

实施攻击

数据分析

攻击场景:

  1. 目标主机是一台Windows Sever 2019的域控
  2. 现在拿到用户support的权限,但是没有登录目标主机和执行命令的权限
  3. 枚举到目标机器也存在另外一个用户AUDIT2020

我们导入数据后,在左上角输入AUDIT2020,点击左边的Transitive Object Control

9

查看到该用户是属于域用户组:

8

我们再从左上角输入现有权限的support用户,然后设置为开始的节点:

7

再查询AUDIT2020,并右键选择Shortest Paths Here from Owned

10

可以看到support用户对AUDIT2020用户有修改密码的权限,点击路径右键可以查询权限操作详情:

11

攻击

先来解释一下这个存在的漏洞点,首先为什么会存在这个权限呢,我们来还原一下设置的场景。

首先在AD中选择用户组后右键选择委派控制:

12

选择一个普通用户:

13

这里选择重置用户密码即可:

14

下面是目标主机的端口详情:

15

上面说过这个场景没有办法去登录目标主机执行命令怎么办,不是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

可以看到我们修改成功了:

16