点击上方蓝字关注我们
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版本
下载地址:https://github.com/BloodHoundAD/BloodHound/releases
下载完后,解压到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 程序收集,需要使用对应版本的数据采集工具。
下载地址:https://github.com/BloodHoundAD/BloodHound/tree/f4d9c1af1529124d33c9f360a27686eea51755e1/Collectors
将数据采集工具上传到目标系统下,采集工具有两个版本,分别对应执行如下命令即可:
# 二进制采集工具命令:
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 就会显示数据信息。
采集成功后,会生成一个基于时间命名的zip文件,此文件保存了采集到的域环境数据信息。
将数据采集完生成的zip文件,上传导入到BloodHound分析。
导入数据后 Database info 就会显示数据信息。
BloodHound整体页面功能如下:
1、Database Info(数据库信息),可以查看当前数据库的基本信息,包括用户、计算机、组和关系(或边)的数量。
2、Node Indo(节点信息),当单击某个节点时,可以显示对应节点的相关信息。
3、Analysis(分析查询),在BloodHound中预置了一些查询条件,具体如下:
在界面空白处,点击右键查看功能菜单如下:
在节点位置处,点击右键查看功能菜单如下:
在图形绘制区域存在不同的图标,各自代表着不同的意思。
节点可以分为6种类型,分别是 Users 用户、Groups 组、Computers 计算机、Domain 域、GPOs 组策略对象、OUs 组织单位
每个节点中可以有不同的标记图标:
BloodHound 关系说明
在每个节点与节点之间都有对应的关系,分别代表着不同的意思。
当用户与计算机时进行会话时,凭据会保留在内存中,可用 LSASS 注入或者凭据转储来获取用户凭据。
MemberOf 表示组的成员,此节点是上一节点的成员,由末端指向上的尖端。
AdminTo 末端是尖端的本地管理员,本地管理员对这台计算机的管理权限比较大,下面的这个用户组是前一台计算机的本地管理员。
AllExtendedRights 扩展权限是授予对象的特殊权限,这些对象允许读取特权属性以及执行特殊操作;如果对象是用户,则可以重置用户密码;如果是组,则可以修改组成员;如果是计算机,则可以对该计算机执行基于资源的约束委派。AddMember 可以向目标安全组添加任意成员。ForceChangePassword 可以任意重置目标用户密码。GenericAll 可以完全控制目标对象。GenericWrite 写入权限,修改目标的属性或者将主体添加入组等。Owns 保留修改 security descriptors 的能力,会忽略DACL权限的限制。WriteDacl 可写入目标DACL,修改DACL访问权。WriteOwner 保留修改 security descriptors。的能力,会忽略DACL权限的限制。ReadLAPSPassword 读取LAPS上的本地管理员凭证。ReadGMSAPassword 读取GMSA上的本地管理员凭证。
Contains 可以在OU上添加一个新的ACE,它将继承到该OU下的所有子对象上,比如说在OU上应用GenericAll ACE ,那么所有子对象都将继承GenericAll属性。GpLink 将其设置为链接容器中的对象。
CanRDP 用远程桌面进行会话。CanPSRemote 用PowerShell进行会话。ExecuteDCOM 实例化目标的COM对象并调用其方法,可以在特定条件下执行代码。AllowedToDelegate 有这个特权的节点可以将任何域主体(包括Domain Admins)模拟到目标主机上的特定服务。AddAllowedToAct 可以控制任意的安全主体伪装为特定计算机的任何域用户。AllowedToAct 可以使用此用户滥用S4U2self / S4U2proxy进程,将任何域用户模拟到目标计算机系统,并以“该用户”身份接收有效的服务票证。SQLAdmin 该用户是目标计算机的MSSQL管理员。HasSIDHistory 用户的SID历史记录,用户在域迁移后,票据还包含着前域所在组的SID,虽然用户不属于前域,但仍拥有前域的权限。
[0]参考文章:https://blog.csdn.net/qq_56426046/article/details/126854991
如果想要系统学习网络安全技术
不妨加入知识星球课程
《60天入门网络安全渗透测试》
从入门到案例,贴合实战
轻松易懂、好玩实用
限时领取
知识星球
活动优惠券
跟着60天入门学习路线一起学
期待你的到来!
往期推荐
从入门到入狱的技术,可以学,别乱用!
网络安全学习方向和资源整理(建议收藏)
一个web安全工程师的基础学习规划
资源 | 渗透测试工程师入门教程(限时领取)
5年老鸟推荐10个玩Python必备的网站
推荐十个成为网络安全渗透测试大佬的学习必备网站!
那些社工师不为人知的秘密。。。
更多内容请关注公众号
网络安全自修室
点个在看你最好看