前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全技术|BloodHound 使用指南

安全技术|BloodHound 使用指南

作者头像
C4rpeDime
发布2022-04-24 10:23:26
2.2K0
发布2022-04-24 10:23:26
举报
文章被收录于专栏:黑白安全

BloodHound是一种单页的JavaScript的Web应用程序,能显示Active Directory环境中隐藏的和相关联的主机内容。攻击者常使用BloodHound识别高度复杂的攻击路径,防御者亦可借助其识别和防御相同的攻击路径。本文由锦行科技的安全研究团队提供(作者:randall),旨在帮助大家深入了解BloodHound工具的使用。  一、环境

BloodHound是一种单页的javascript的Web应用程序,能显示Active Directory环境中隐藏的和相关联的主机内容。攻击者常使用BloodHound识别高度复杂的攻击路径,防御者亦可借助其识别和防御相同的攻击路径。本文由锦行科技的安全研究团队提供(作者:randall),旨在帮助大家深入了解BloodHound工具的使用。

 一、环境配置

01Neo4j

BloodHound 使用neo4j数据库,需要配备java环境。

国内的neo4j下载地址,版本建议使用3.5.*版本,因为BloodHound-Tools不兼容4.*版本,生成测试数据时会报错

neo4j-chs-community-3.5.19下载完之后,进入bin目录下,执行命令

neo4j.bat console

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第1张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第1张

可以看到neo4j成功启动了

有一点需要注意的是,在win7的低版本的powershell中,会出现未能加载Neo4j-Management.psd1模块的情况,所以需要使用desktop版本的neo4j

desktop版本安装好后新建一个local database,设置密码为neo4jj ,版本选择3.5.19 ,创建成功后启动neo4j

02BloodHound

去Github下载最新版本的bloodhound,如果github下载速度太慢可以用gitee上的镜像仓库加速下载

使用neo4j的账户密码登录,默认账户是neo4j,密码用刚刚我们设置的密码neo4jj

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第2张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第2张

03BloodHound-Toools

创建一个随机的数据集,用来测试和分析BloodHound,项目地址在这里

https://github.com/BloodHoundAD/BloodHound-Tools/tree/master/DBCreator

需要python3.7+的版本和neo4j驱动程序,并且需要注意的是,该脚本仅适用于BloodHound 3.0.0及更高版本,且不适配neo4j 4.*版本的数据库

可以使用pip安装neo4j驱动程序:

代码语言:javascript
复制
pip install neo4j-driver

或者

代码语言:javascript
复制
pip install -r requirements.txt
  • dbconfig - 设置数据库连接信息
  • connect - 连接到数据库
  • setnodes - 设置要生成的节点数(默认为500)
  • setdomain - 设置域的名称
  • cleardb - 清空数据库并设置正确的模式
  • generate - 在数据库中创建随机数据
  • clear_and_generate - 连接数据库,清空数据库,设置模式以及创建随机数据
  • help - 获取帮助
  • exit - 退出
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第3张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第3张

dbconfig命令默认的账户密码为neo4j/neo4jj ,如果你的数据库密码不是这个,建议在 DBCreator.py 的第48行将默认密码改为你现在的数据库密码,然后使用 clear_and_generate 一键生成随机数据

 二、数据收集

使用BloodHound自带的工具进行数据收集,工具链接在这里:

代码语言:javascript
复制
https://github.com/BloodHoundAD/BloodHound/tree/master/Ingestors
.\SharpHound.exe
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第5张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第5张

按照默认的方式收集Container, Group, LocalGroup, GPOLocalGroup,Session, LoggedOn, ObjectProps, ACL, ComputerOnly, Trusts, Default, RDP, DCOM, DCOnly 的数据,也可以用 -c 参数指定要收集的数据类型,如 -c Session,RDP,ACL

常见用法

循环收集2小时12分23秒,循环间隔20分钟,若不指定Loopduration,则默认循环2个小时

代码语言:javascript
复制
.\SharpHound.exe --Loop --Loopduration 02:12:23 --LoopInterval 00:20:0

指定输出路径为C:test\

代码语言:javascript
复制
 .\SharpHound.exe --OutputDirectory C:\test\

指定域

代码语言:javascript
复制
 .\SharpHound.exe -d hacklan.com 

 三、BloodHound

01BloodHould界面

BloodHound 的左上角界面?

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第6张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第6张

其中更多信息 页面,包含了数据库信息,节点信息以及查询这几大块。

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第7张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第7张

搜索 可以将搜索范围指定为特定节点类型,如

  • Group
  • Domain
  • Computer
  • User
  • OU
  • GPO

比如我要搜索类型为computer中的00351号,输入 computer:00351 ,其他的也同理

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第8张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第8张

搜索还有个高级用法,pathfinding路径搜索,这种搜索方式极为强悍,直接搜索该节点到目标节点路径,假设我们拿下了COMP00041.TESTLAB.LOCAL ,想要知道该节点到达高价值目标DOMAIN ADMINS@TESTLAB.LOCAL 的路径,用下面的方式搜索,会自动规划好一条到达目标的最短路线。

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第9张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第9张

Edge 类型过滤选择是否显示该 Edge ,默认全部显示,如果你取消了某种Edge,那么在进行新的查询之后将不会显示与该Edge有关的结果

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第10张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第10张

界面右边的控件说明

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第11张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第11张

导出图表 可以导出为 JSONImage 两种格式;

上传数据 主要上传前面收集到的数据,可以通过这个按钮来上传,也可以直接拖数据到主页面上传;

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第12张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第12张

节点崩溃阈值默认是5,0是关闭;

Edge标签显示节点标签显示 有三种选择,分别是Threshold Display、Always Display、Never Display,而Threshold Display意味着当你放大到临界点时才显示,按CTRL可快速切换不同的节点标签显示方式;

查询Debug模式 转储查询语句并输出到界面正下方Raw Query中;

还有一个空格快捷键,按下空格键将调出Spotlight窗口,

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第13张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第13张

会列出当前绘制的所有节点,单击列表中的一个节点,将放大并简要突出显示该节点。

鼠标右键空白处时,会弹出以下内容

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第14张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第14张

鼠标右键任一节点时,会弹出以下内容

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第15张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第15张

真看每个节点时,可能会发现有些节点和别的不太一样,有些有钻石图标还有靶子的图标,那些是什么意思呢?

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第16张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第16张

蓝色位置图标意味着这是开始节点

白色骷髅头说明是已拥有节点

红色靶子图标是目标节点

钻石图标则是高价值目标

02节点

点击节点时,可以看到 Node Info 处的节点信息

节点又细分为6种,分别是Users用户、Groups组、Computers计算机、Domain域、GPOs组策略对象、OUs组织单位;

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第17张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第17张

而用户的节点部分信息如下:

第一行的SMALLIS00368@TESTLAB.LOCAL中的SMALLIS00368是SAM账户名,TESTLAB.LOCAL是该用户所在域的域名。

-Sessions

该用户登录的计算机数量

-Reachable High Value Targets

用户可到达高价值目标数量,默认的高价值目标是域管理员,域控制器和其他几个高特权Active Directory组的任何计算机或用户

节点属性

– Object ID

用户的SID

– Password Last Changed

密码上次更改的日期

– Last Logon

用户最后一次登录的时间

– Enabled

是否在活动目录中启用该用户

– Compromised

是否标记为拥有

组成员

– First Degree Group Memberships

此用户所属的组

– Unrolled Group Memberships

用户显式所属的组已添加到这些组

– Foreign Group Memberships

用户所属的其他AD域中的组

本地管理员权限

– First Degree Local Admin

用户被添加到本地管理员组中的计算机数,被添加到N台计算机的本地管理员组中,则数量为N

– Group Delegated Local Admin Rights

用户通过安全组委派从而拥有本地管理员权限的计算机数

– Derivative Local Admin Rights

用户具有派生本地管理员权限的计算机数量

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第19张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第19张

执行特权

– First Degree RDP Privileges

已将此用户添加到本地“远程桌面用户”组的计算机数

– Group Delegated RDP Privileges

该用户通过安全组委派拥有远程桌面登录权限的计算机数

– First Degree DCOM Privileges

已将此用户添加到本地”Distributed COM Users”组的计算机数

– Group Delegated DCOM Privileges

该用户具有组委派DCOM权限的计算机数

– SQL Admin Rights

用户在MSSQL上被授予SA特权的计算机的数量

– Constrained Delegation Privileges

信任此用户执行约束委派的计算机的数量

出站对象控制

– First Degree Object Control

用户可以在不依赖安全组委派的情况下控制的活动目录中的对象数

– Group Delegated Object Control

用户通过安全组委派控制的对象数

– Transitive Object Control

在活动目录中执行仅基于ACL的攻击,此用户可以控制的对象数。也就是说,用户只需操纵目录中的对象,即可获得控制权的最大对象数

入站对象控制

– Explicit Object Controllers

直接控制此用户的用户、组或计算机的数量

– Unrolled Object Controllers

通过安全组委派控制此对象的主体的实际数量

– Transitive Object Controllers

活动目录中可以通过基于ACL的攻击实现对该对象的控制的对象数

组节点比用户节点多了个Group Members ,虽然与Group Membership都是组成员的意思,但Group Membership更偏向于组成员之间的一种关系,Group Members则仅仅指成员这一部分。

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第20张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第20张

– Direct Members

添加到该组的成员数量

– Unrolled Members

属于该组的实际用户数

– Foreign Members

属于该组的其他域的用户数

计算机节点则是将 Execution Privileges 细分成了Inbound Execution Privileges 和 Outbound Execution Privileges ,Outbound Execution Privileges 则与原来的 Execution Privileges 相似,

入站执行特权

– First Degree Remote Desktop Users

被添加到本地的远程桌面用户组的主体数量

– Group Delegated Remote Desktop Users

组委派的具有RDP权限的用户数量

– First Degree Distributed COM Users

添加到本地“Distributed COM Users”组的主体数量

– Group Delegated Distributed COM Users

具有嵌套组成员身份访问此系统的DCOM的用户数

– SQL Admins

在此系统运行的MSSQL实例上具有SA特权的用户数

组策略对象GPOs有个Affected Objects

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第22张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第22张

– Directly Affected OUs

GPO连接到域/OU的数量

– Affected OUs

受GPO影响的OU数量

– Computer Objects

适用GPO的计算机数

– User Objects

适用GPO的用户数

组织单位OUs的Extra Properties里有个blocksInheritance,是否阻止组策略实施继承的意思,在未强制执行GPLink的情况下,一旦阻止继承,则GPO不会应用在与其链接的OU和所有的子对象上。

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第23张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第23张

-GPOs Directly Affecting This OU

直接链接到这个OU的GPO数

-GPOs Affecting This OU

直接或者间接应用于此OU的GPO数量

-Total User Objects

此OU包括子OU的所有用户总数

-Total Group Objects

此OU的安全组数

-Total Computer Objects

此OU下的计算机对象数

-Sibling Objects within OU

此OU的同级对象总数

 03Edge

默认Edge

-MemberOf 此节点是上一节点的成员,由末端指向上的尖端,如图,所有的域管理员属于域管理员组。

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第24张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第24张

-HasSession

用户与计算机时进行会话时,凭据会保留在内存中,可用LSASS注入或者凭据转储来获取用户凭据,图中该用户在两台计算机上存在会话。

-AdminTo

末端是尖端的本地管理员,本地管理员对这台计算机的管理权限比较大,下面的这个用户组是前一台计算机的本地管理员

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第26张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第26张

ACL Edges

– AllExtendedRights

扩展权限是授予对象的特殊权限,这些对象允许读取特权属性以及执行特殊操作;如果对象是用户,则可以重置用户密码;如果是组,则可以修改组成员;如果是计算机,则可以对该计算机执行基于资源的约束委派

– AddMember

可以向目标安全组添加任意成员

– ForceChangePassword

可以任意重置目标用户密码

– GenericAll

可以完全控制目标对象

– GenericWrite

写入权限,修改目标的属性或者将主体添加入组等

– Owns

保留修改 security descriptors 的能力,会忽略DACL权限的限制

– WriteDacl

可写入目标DACL,修改DACL访问权

– WriteOwner

保留修改 security descriptors 的能力,会忽略DACL权限的限制

– ReadLAPSPassword

读取LAPS上的本地管理员凭证

– ReadGMSAPassword

读取GMSA上的本地管理员凭证

Containers

– Contains

可以在OU上添加一个新的ACE,它将继承到该OU下的所有子对象上,比如说在OU上应用GenericAll ACE ,那么所有子对象都将继承GenericAll属性

– GpLink

将其设置为链接容器中的对象

特殊 Edges

– CanRDP

用远程桌面进行会话

– CanPSRemote

用PowerShell进行会话

– ExecuteDCOM

实例化目标的COM对象并调用其方法,可以在特定条件下执行代码

– AllowedToDelegate

有这个特权的节点可以将任何域主体(包括Domain Admins)模拟到目标主机上的特定服务

– AddAllowedToAct

可以控制任意的安全主体伪装为特定计算机的任何域用户

– AllowedToAct

可以使用此用户滥用S4U2self / S4U2proxy进程,将任何域用户模拟到目标计算机系统,并以“该 用户”身份接收有效的服务票证

– SQLAdmin

该用户是目标计算机的MSSQL管理员

– HasSIDHistory

用户的SID历史记录,用户在域迁移后,票据还包含着前域所在组的SID,虽然用户不属于前域,但仍拥有前域的权限

04内置查询语句

-Find all Domain Admins

找出所有域管理员

-Find Shortest Paths to Domain Admins

找出域管理员的最短路径

-Find Principals with DCSync Rights

查找具有DCSync权限的主体

-Users with Foreign Domain Group Membership

具有外部域组成员资格的用户

-Groups with Foreign Domain Group Membership

具有外部域组成员资格的组

-Map Domain Trusts

映射域信任关系

-Shortest Paths to Unconstrained Delegation      Systems

到无约束委托系统的最短路径

-Shortest Paths from Kerberoastable Users

到支持Kerberos的用户的最短路径

-Shortest Paths to Domain Admins from      Kerberoastable Users

从支持kerberos的用户到域管理员的最短路径

-Shortest Path from Owned Principals

从所属主体获取的最短路径

-Shortest Paths to Domain Admins from Owned      Principals

从已拥有的主体到域管理员的最短路径

-Shortest Paths to High Value Targets

通往高价值目标的最短路径

-Find Computers where Domain Users are Local Admin

找出域用户是本地管理员的计算机

-Shortest Paths from Domain Users to High Value      Targets

从域用户到高值目标的最短路径

-Find All Paths from Domain Users to High Value      Targets

找出所有从域用户到高价值目标的路径

-Find Workstations where Domain Users can RDP

找出域用户使用RDP登录的工作站

-Find Servers where Domain Users can RDP

找出域用户使用RDP登录的服务器

-Find Dangerous Rights for Domain Users Groups

找出域用户组的高危权限

-Find Kerberoastable Members of High Value Groups

找出属于高价值组的可支持kerberos的成员

-List all Kerberoastable Accounts

列出所有可支持kerberos的帐户

-Find Kerberoastable Users with most privileges

查找具有最多特权的且可支持kerberos的用户

-Find Domain Admin Logons to non-Domain      Controllers

找出非域控制器的域管理登录

-Find Computers with Unsupported Operating Systems

查找不支持操作系统的计算机

-Find AS-REP Roastable Users (DontReqPreAuth)

找出支持AS-REP的用户

 05案例

假设我们已经控制了COMP00311.TESTLAB.LOCAL,目标节点则是DOMAIN ADMINS@TESTLAB.LOCAL,使用预定义的查询语句Shortest Paths to Domain Admins from Owned Principals,查找从已拥有的主体到域管理员的最短路径

安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具  第27张
安全技术|BloodHound 使用指南 安全工具 渗透测试 安全工具 第27张

从图片上看,我们已经拥有了针对域管的进攻路线,计算机节点COMP00311.TESTLAB.LOCAL与用户SLUHMAN00256@TESTLAB.LOCAL之间存在HasSession的关系,可以使用 PTH哈希传递攻击 获取用户SLUHMAN00256@TESTLAB.LOCAL的权限,而该用户又属于IT00369@TESTLAB.LOCAL组,这个组是计算机COMP00276.TESTLAB.LOCAL的本地管理员组,所以说用户SLUHMAN00256@TESTLAB.LOCAL就是计算机COMP00276.TESTLAB.LOCAL的本地管理员,然而这台计算机上存在用户SMUNDAY00240@TESTLAB.LOCAL的会话,所以使用PTH攻击获取该用户的权限,而这个用户又属于DOMAIN ADMINS@TESTLAB.LOCAL组,所以用户SMUNDAY00240@TESTLAB.LOCAL就是域管理用户,所以我们就拿到了域管理权限。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-13),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  一、环境配置
  • 01Neo4j
    • 02BloodHound
      • 03BloodHound-Toools
      •  二、数据收集
      •  三、BloodHound
        • 01BloodHould界面
          • 02节点
            •  03Edge
              • 04内置查询语句
                •  05案例
                相关产品与服务
                访问管理
                访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档