当渗透进入内网后,利用BloodHound对庞大内网域环境进行自动化信息搜集并整理分析数据,提高渗透效率。
BloodHound是一款可视化图形分析域环境中的关系的工具,以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关用户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在红队人员面前进行更便捷的分析域内情况,更快速的在域内提升自己的权限。它也可以使蓝队成员对己方网络系统进行更好的安全检测及保证域的安全性。
Neo4j是一款NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,Bloodhound利用这种特性加以合理分析,可以更加直观的将数据以节点空间”来表达相关数据。BloodHound通过在域内导出相关信息,在将数据收集后,将其导入Neo4j数据库中,进行展示分析。
安装Neo4j数据库。
apt-get install neo4j
安装完成后先运行图形化数据库Neo4j。
neo4j start
启动后,浏览器访问如下,默认账号密码都是neo4j
。
Host : http://localhost:7474
Username : neo4j
Password : neo4j
首次登录会提示修改密码,例如将密码修改为:123456,修改后跳转如下页面,表示Neo4j安装成功。
注意:这里建议使用BloodHound GUI 4.0.3版本,BloodHound GUI 4.1.0之后的版本以及所使用的数据采集工具都经过重构,对部分windows系统执行采集数据时兼容性较差,且4.1.0版本对应采集工具的数据结果与4.0.3版本是不通用的。
访问项目地址下载BloodHound GUI 4.0.3版本
下载完后,解压到kali linux下,并切换到该目录下执行启动命令:
./BloodHound --no-sandbox
启动命令执行成功后,会自动跳出登录页面,登录即可使用。
Host : bolt://localhost:7687
Username : neo4j
Password : 123456
登录成功后,出现如下页面表示启动bloodhound成功。
BloodHound需要来自Active Directory(AD)环境的三条信息才能运行:
在大多数情况下,收集此信息不需要管理员权限,也不需要在远程系统上执行代码。
在本地安装 BloodHound GUI 4.0.3 完成后,需要进行数据的采集与导入,数据的采集可以使用 ps1 脚本或者使用 exe 程序收集,需要使用对应版本的数据采集工具。
将数据采集工具上传到目标系统下,采集工具有两个版本,分别对应执行如下命令即可:
# 二进制采集工具命令:
SharpHound.exe -c all
# powershell采集工具命令:
powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all"
例如使用 SharpHound.exe 进行数据的采集,将 SharpHound.exe 拷贝到目标上,执行数据采集命令即可。
采集成功后,会生成一个基于时间命名的zip文件,此文件保存了采集到的域环境数据信息。
将数据采集完生成的zip文件,上传导入到BloodHound分析。
导入数据后 Database info 就会显示数据信息。
BloodHound整体页面功能如下:
菜单与搜索栏具体如下:
1、Database Info(数据库信息),可以查看当前数据库的基本信息,包括用户、计算机、组和关系(或边)的数量。
2、Node Indo(节点信息),当单击某个节点时,可以显示对应节点的相关信息。
3、Analysis(分析查询),在BloodHound中预置了一些查询条件,具体如下:
在界面空白处,点击右键查看功能菜单如下:
在节点位置处,点击右键查看功能菜单如下:
在图形绘制区域存在不同的图标,各自代表着不同的意思。
节点可以分为6种类型,分别是 Users 用户、Groups 组、Computers 计算机、Domain 域、GPOs 组策略对象、OUs 组织单位:
每个节点中可以有不同的标记图标:
在每个节点与节点之间都有对应的关系,分别代表着不同的意思。
HasSession
当用户与计算机时进行会话时,凭据会保留在内存中,可用 LSASS 注入或者凭据转储来获取用户凭据。
MemberOf
MemberOf 表示组的成员,此节点是上一节点的成员,由末端指向上的尖端。
AdminTo
AdminTo 末端是尖端的本地管理员,本地管理员对这台计算机的管理权限比较大,下面的这个用户组是前一台计算机的本地管理员。
ACL Edges
Containers
特殊 Edges