域渗透系列 域信息收集之BloodHound

admin 2024年9月25日22:02:25评论65 views字数 5071阅读16分54秒阅读模式

BloodHound介绍

BloodHound 通过图与线的形式,将域内用户、计算机、组、会话、ACL,以及域内所有的相关用户、组、计算机、登录信息、访问控制策略之间的关系,直观地展现在红队成员面前,为他们更便捷地分析域内情况、更快速地在域内提升权限提供条件。

BloodHound可以帮助蓝队成员更好地对己方网络系统进行安全检查,以及保证域的安全性。BloodHound使用图形理论,在活动目录环境中自动理清大部分人员之间的关系和细节。使用BloodHound,可以快速、深人地了解活动目录中用户之间的关系,获取哪些用户具有管理员权限、哪些用户对所有的计算机都具有管理员权限、哪些用户是有效的用户组成员等信息。

BloodHound可以在域内导出相关信息,将采集的数据导人本地Neo4j数据库,并进行展示和分析。Neo4j是一款NoSQL图形数据库,它将结构化数据存储在网络内而不是表中。BloodHound正是利用Neo4j的这种特性,通过合理的分析,直观地以节点空间的形式表达相关数据的。Neo4j和MySQL及其他数据库一样,拥有自己的查询语言Cypher Query Language。因为Neo4j是一款非关系型数据库,所以,要想在其中进行查询,同样需要使用其特有的语法。

GitHub仓库地址:

https://github.com/BloodHoundAD/BloodHound

域渗透系列  域信息收集之BloodHound

BloodHound安装

apt-get install bloodhound
需要先安装一下neo4j数据库,最好用管理员权限启动
neo4j start
发现报错了,报错信息是:

/bin/neo4j:行390: /usr/share/neo4j/logs/neo4j.log 没有那个文件或目录

解决方法:

创建/logs/目录和neo4j.log文件

mkdir /usr/share/neo4j/logstouch /usr/share/neo4j/logs/neo4j.log

最后运行命令启动 bloodhound

在终端输入

 bloodhound

输入账号密码:

neo4j123456

域渗透系列  域信息收集之BloodHound

使用BloodHound分析大型域内环境

当我们在本地安装完成 bloodhound后,需要进行数据的采集与导入,数据的采集可以使用ps1脚本或者使用exe程序收集。

工具下载地址:

https://github.com/BloodHoundAD/BloodHound/tree/master/Collectors

域渗透系列  域信息收集之BloodHound

 
数据采集
在当前目录运行:
SharpHound.exe all

域渗透系列  域信息收集之BloodHound

将收集到的zip上传至bloodhound
域渗透系列  域信息收集之BloodHound
若目标机器存在powershell环境,我们还可以通过powershell脚本来采集数据
powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all"

BloodHound 版块介绍

  1. Database Info(数据库信息),可以查看当前数据库中的域用户、域计算机等统计信息。

域渗透系列  域信息收集之BloodHound

  1. Node Indo(节点信息),单击某个节点时,在这里可以看到对应节点的相关信息。

域渗透系列  域信息收集之BloodHound

  1. Analysis(分析查询),在 BloodHound 中预设了一些查询条件,具体如下:

域渗透系列  域信息收集之BloodHound

在界面空白处,点击右键查看功能菜单如下:

域渗透系列  域信息收集之BloodHound

在节点位置处,点击右键查看功能菜单如下:

域渗透系列  域信息收集之BloodHound

节点可以分为6种类型,分别是 Users 用户、Groups 组、Computers 计算机、Domain 域、GPOs 组策略对象、OUs 组织单位:

域渗透系列  域信息收集之BloodHound

每个节点中可以有不同的标记图标:

  • 蓝色位置图标表示开始节点;

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

  • 红色靶子图标是目标节点;

  • 钻石图标则是高价值目标;

域渗透系列  域信息收集之BloodHound

 

BloodHound 关系说明

在每个节点与节点之间都有对应的关系,分别代表着不同的意思。
域渗透系列  域信息收集之BloodHound

HasSession

当用户与计算机时进行会话时,凭据会保留在内存中,可用 LSASS 注入或者凭据转储来获取用户凭据,图中该用户在两台计算机上存在会话:
域渗透系列  域信息收集之BloodHound
 
也就是我们发现在他们两台计算机之间存在 HasSession 的关系,那么可以使用 PTH 哈希传递攻击通过中间的用户获取两台机器的权限。

MemberOf

MemberOf 表示组的成员,此节点是上一节点的成员,由末端指向上的尖端。
域渗透系列  域信息收集之BloodHound

如上图的最上面我标记的红圈圈,[email protected] 就是 [email protected] 本地管理员组下的成员。

如上图的中间我标记的红圈圈,[email protected] 就是 DOMAIN [email protected] 域管理员组下的成员。

如上图的最下面我标记的红圈圈,[email protected] 就是 DOMAIN [email protected] 域管理员组下的成员。

AdminTo

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

域渗透系列  域信息收集之BloodHound

如上图我标记红圈圈哪里可以得知,用户 [email protected] 是域机器 AD-2016.REDTEAM.COM 的本地管理员用户,以此类推上面也有一个 [email protected] 用户也是域机器 AD-2016.REDTEAM.COM 的本地管理员用户。

可能还会有一些其他的文字,代表不同的意思:

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,虽然用户不属于前域,但仍拥有前域的权限

板块实例

Find all Domain Admins (查询所有域管理员)

点击 Analysis - Find all Domain Admins

绿色图标代表用户黄色图标代表用户组

域渗透系列  域信息收集之BloodHound

Find Shortest Paths to Domain Admins (寻找到域管理员的最短路径)

点击 Analysis -  Find Shortest Paths to Domain Admins

域渗透系列  域信息收集之BloodHound

从上图可以看出:

黄色图表的则代表的是 用户组

绿色图表的则代表的是 域用户

绿色网状图标则代表 当前域名

紫色序列图标则代表 默认域策略

Find Principals with DCSync Rights (查找具有DCSync权限的主体)

点击  Analysis - Find Principals with DCSync Rights

域渗透系列  域信息收集之BloodHound

DCSync 是域渗透中经常会用到的技术,我们可以通过 DCSync 来导出域内某个用户的 Hash,或者域内所有用户的 Hash。

Mimikatz 在 2015 年发布了新版本的 Mimikatz,新增加了 DCSync 功能。模仿一个域控制器 DC,从真实的域控制器中请求获取数据,例如账号的口令散列值等数据。

一个用户想发起 DCSync 攻击,必须获得以下任一用户的权限:

  • Administrators 组内的用户

  • Domain Admins 组内的用户

  • Enterprise Admins 组内的用户

  • 域控制器的计算机帐户

在一般默认情况下域管理员组具有该权限,所以在域渗透中拿到域管理员账号就可以变相拿到整个域的控制权限。

Map Domain Trusts(查看域信任关系)

点击  Analysis - Map Domain Trusts

域渗透系列  域信息收集之BloodHound

可能有一些朋友还不知道什么是信任, 为什么要在域之间建立信任关系?

域是安全边界,若无信任关系,域用户帐户只能在本域内使用。信任关系在两个域之间架起了一座桥梁,使得域用户帐户可以跨域使用。

确切地说就是:信任关系使一个域的 DC(域控制器) 可以验证其他域的用户,这种身份验证需要信任路径。

例如:A域与B域没有信任关系,A域上的员工可以使用自己在A域的帐户,那么将不能访问B域上的资源。

总之,两个域之间只有建立适当的信任关系后才可以实现互相访问,这就像两个公司之间要进行友好往来需要建立外交关系一样。

知道了原理之后我们再来看上面这张图,SAUL.REDTEAM.COM 域,被信任(trustedby) REDTEAM.COM 域。

这个信任关系 指明 SAUL.REDTEAM.COM 域是受 REDTEAM.COM 域,信任的域,即 SAUL.REDTEAM.COM  域的用户帐户可以访问 REDTEAM.COM 域的资源(在拥有相应权限的前提下)。

从这里我们可以看出,信任关系具有方向性,这个图看上去信任关系是单向信任,SAUL.REDTEAM.COM 域的用户可以访问 REDTEAM.COM 域的资源,但 REDTEAM.COM 域的用户还不能访问 SAUL.REDTEAM.COM  域的资源,但是这是父子域的一个信任关系。在域森林中,父子域之间存在的信任关系,称为父子信任,在默认情况下, 当现有域树中添加新的子域时,将自动建立父子信任关系。这种信任是双向的可传递的信任关系,所以这个图本身就有问题,他们应该是双向信任,也就是 SAUL.REDTEAM.COM  域的用户可以访问 REDTEAM.COM 域的资源,而 REDTEAM.COM 域的用户也可以同样访问 SAUL.REDTEAM.COM 域的资源!

还有一种信任关系:A域和B域之间的双向信任(A域信任B域,且B域信任A域), 在这种信任关系下,A域和B域的用户帐户都能访问对方域的资源,因为这两个域都得到了对方域的信任,就类似于上面提到的父子域信任关系。

对于域信任关系,我们后面会有单独篇章讲跨域攻击,通过一个域信任的关系来跨域攻击到另外一个域内,这都是后话了。

Shortest Paths to Unconstrained Delegation Systems (查询到非约束委派系统的最短路径)

域委派是指将域内部用户的权限委派给服务账号,使用服务账号能以用户的权限在域内展开活动。

比如在域中如果出现一种使用 Kerberos 身份验证访问域中的服务B,而服务B再利用A的身份去请求域中的服务C,这个过程就可以理解为委派。

委派主要分为非约束委派(Unconstrained delegation)和约束委派(Constrained delegation)两个方式,还有一种是基于资源的约束委派(Resource Based Constrained Delegation)。

而通过非约束委派攻击我们就可以通过 TGT 去获取到 AD 或者其他域内服务主机的权限,至于什么是 TGT 我也会单独写一篇来讲解域内的每一个协议,大家只需要初步的认为非资源约束委派可以帮助我们拿到其他主机的权限就好。

域渗透系列  域信息收集之BloodHound

原文始发于微信公众号(SecretTeam安全团队):域渗透系列 域信息收集之BloodHound

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月25日22:02:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域渗透系列 域信息收集之BloodHoundhttps://cn-sec.com/archives/3111567.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息