工具简介
BloodHound是一个免费的域渗透分析工具,BloodHound以用图与线的形式将域内用户、计算机、组、 会话、ACL 及域内所有相关用户、组、计算机、登录信息、访问控制策略之间的关系直观地展现在Red Team成员面前,更便捷地分析域内情况,更快地在域内提升权限。BloodHound也可以使Blue Team成员对己方网络系统进行更好的安全检测,以及保证域的安全性。BloodHound 使用图形理论,自动化地在Active Directory环境中理清大部分人员之间的关系和细节。使用BloodHound, 可以快速地深入了解AD中的一些用户关系、哪些用户具有管理员权限、哪些用户有权对任何计 算机都拥有管理权限,以及有效的用户组成员信息。
BloodHound通过在域内导出相关信息,在将数据采集后,将其导入本地安装好的Neo4j数据库中,展示和分析域内所需相关信息。Neo4j是一款 NoSQL图形数据库,它将结构化数据存储在网络上而不是表中,Bloodhound正是利用这种特性加以合理分析,更加直观地以节点空间的形式来表达相关数据。Neo4j就像MySQL或其他数据库一样,有自己的查询语言Cypher Query Language,因为Neo4j是一款非关系型数据库,要想用它查询数据,同样需要自己独特的语法。
环境搭建
JAVA环境搭建
由于Neo4j数据库需要Java环境才能运行,所以需要搭建JAVA环境,我们从Oracle官方网站下载JDK Windows x64安装包并安装即可:
Neo4js数据库
之后在Neo4js官方网站(https://neo4j.com/download-center/#community)下载最新的Neo4j数据库安装包,如下所示:
下载完成并解压,只有配置neo4js环境变量:
之后打开cmd窗口,进入解压后的bin目录,在cmd下输入命令“neo4j.bat console”, 启动Neo4j服务:
看到服务成功启动的提示后,打开浏览器,输入地址“http://127.0.0.1:7474”。打开页面后,输入账号和密码(默认为neo4j/neo4j)
之后进入修改密码界面修改完密码之后即可进入功能界面:
BloodHund安装
之后去GitHub下载BloodHound的Release版本,下载地址为:https://github.com/BloodHoundAD/BloodHound/releases
下载完成后进行解压,进入目录,找到 BloodHound.exe,双击运行
之后输入之前neo4j的账号密码(neo4j/admin)
之后进入主控面板:
上图中,左上角是菜单和搜索栏,三个选项分别是数据库信息、节点信息和查询模块。在数据库信息栏,可以显示所分析域的用户数量、计算机数量、组数量、会话数量、ACL 数量、关系。还可以在此处执行基本的DB管理功能,包括注销和切换DB,以及清除当前加载的DB。
Node Info选项卡将显示用户在图表中单击的节点的信息:
Queries选项卡将显示用户BloodHound中包含的预构建查询,以及用户可以自己构建的其他查询:
在右上角设置区域:
第一个是刷新功能,BloodHound 将重新计算并重新绘制当前显示;
第二个导出图形功能,可以将当前绘制的图形导出为 JSON 格式或者 PNG 格式;
第三个是导入图功能,BloodHound 将以 JSON 格式绘制导入的图形;
第四个是上传数据功能,BloodHound 将进行 自动检测,然后获取 CSV 格式的数据;
第五个是更改布局类型功能,在分层(Dagre)和强制定向图布局之间切换;
第六个是设置功能,可以更改节点折叠行为,并在低细节模式之间切换。
使用指南
采集数据
使用BloodHound进行分析,需要来自Active Directory环境的三条信息,具体如下:
-
哪些用户登录了哪些机器?
-
哪些用户拥有管理员权限?
-
哪些用户和组属于哪些组?
BloodHound 所需要的三条信息严重依赖于PowerView.ps1脚本的 BloodHound。
BloodHound 分为两个版本,一个是PowerShell采集器脚本,另一个是exe可执行文件SharpHound.exe。在大多数情况下,收集此信息不需要系统管理员权限,如下图所示:
BloodHound 的下载地址:
https://github.com/BloodHoundAD/BloodHound/releases
在使用SharpHound.exe提取域内信息时,可以SharpHound.exe复制到目标系统中,使用Cobalt Strike中的beacon进行无图形化操作,输入如下命令,如下图所示:
SharpHound.exe -c all
导入数据
在beacon的当前目录下,会生成类似“20200215142556_BloodHound.zip”格式的压缩包,BloodHound界面支持单个文件或者Zip文件的上传,最简单的方法是将压缩文件放到用户界面上除了节点显示选项卡的任何位置。上传成功后,在菜单搜索栏中会出现内网的相关信息,如下图所示:
查询信息
如上图所示,数据库中有4个用户、4台计算机、51个组、445条ACL、502个关系。进入查询模块,可以看到预定义的12个常用的查询条件,如下图所示:
-
查找所有域管理员。
-
寻找到达域管理员的最短路径。
-
查找具有 dcsync权限的主体。
-
具有外部域组成员身份的用户。
-
具有外部域组成员身份的组。
-
映射域信任。
-
无约束委托系统的最短路径。
-
从 KerberoAstable 用户获得的最短路径。
-
从 KerberoAstable 用户到域管理员的最短路径。
-
拥有主体的最短路径。
-
从所属主体到域管理员的最短路径。
-
高价值目标的最短路径。
查找所有域管理员
单击“Find all Domain Admins”选项,选择需要查询的域名进行查询,如下图所示。BloodHound可以帮助我们查询出当前域中有多少个域管理员。可以看到,当前域中有1个域管理员权限的用户:
按“Ctrl”键,将循环显示默认阈值、始终显示、从不显示三个选项,以显示不同的节点标签,也可以单击并按住某个节点,将其拖动到其他位置
下面借用一个更加复杂的图来看看:
寻找到达域管理员的最短路径
单击“Find Shortest Paths to Domain Admins”选项,使用BloodHound进行分析,如下图所示。BloodHound列出了数条路径可以到达域管理员的路径。
-
左上角为目标域管理员组,既是本次渗透测试的核心目标,也是图中的一个节点,还是所 有路线的尽头。
-
左下角第一条线路上的三个用户,属于第一个节点的组,第一节点组又在第二节点组内。第二节点组对其上部的第三节点的用户具有权限,而该用户又是上一台(第四个节点)计 算机的本地管理员,可以在这台计算机上拿到上面一个(第五个节点)用户的会话。该用 户属于 Domain Admins 组,可以通过 PTH 方法获取域管理员和域控制器。在第三个节点分 支中的用户,可以对处于第三个节点的用户强制推送策略,直接修改第三个节点用户的密码,进而再次通过 PTH 拿下第四个节点,依此类推。
-
中间的一组,第一个节点中的三个用户为域管理员委派服务账号,可以对该域的域控制器 进行 dcsync同步,将第二个节点的用户(属于 Domain Admins 组)的散列值同步过来,进 而获取域控制器权限。
-
右边的组,第一个节点的用户是第二个节点计算机的本地管理员,在该计算机上可以获得 第三个节点的用户散列值。第三个节点用户又属于第四个节点的组。第四节点组是第五个 节点计算机的本地管理员组,在该计算机可以获取第五个节点用户(属于 Domain Admins 组)的散列值,进而获取域控制器权限
这里用一个第三方的图片来看看:
查看指定用户与域关联的详细信息
单击某个节点,BloodHound将使用有关该节点的信息填充节点信息选项卡。在这里,单击任图中的任意节点,选择用户名,即可查看该用户的 Name、DisPlayName、最后修改密码时间、最后登录时间、该用户登录在哪台计算机上存在会话,以及是否启动、属于哪些组、拥有哪些机器的本地管理员权限和对访问对象对控制权限等。BloodHound可以以图表的形式将这些信息展示出来,并列出该用户在域中的权限信息,方便Red Team成员更快地在域中进行横向渗透,提升权限,获取域管理员权限,如下图所示:
查看指定计算机与域关联的详细信息
单击任意计算机,可以看到该计算机在域内的名称、系统版本、是否启用、是否允许无约束委托、该计算机存在多少用户的会话信息、同一个OU中的相似对象、在哪些域树中、存在多少个本地管理员、组关系、对ACL的控制权限,如下图所示:
寻找路径
寻找路径的操作类似于导航软件。单击道路图标,会弹出目标节点文本框,在开始节点处填写BloodHound图中任何类型的节点,在目标节点处也填写BloodHound图中的任何类型的节点, 接着单击播放按钮,如果存在此类路径,BloodHound将找到所有从起始节点到目标节点之间的最短路径,然后在图形绘制区域显示具体路径,如下图所示:
下期带来kaliLinux中安装BloodHound的方法~
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34103.html