0x1)BloodHound介绍
https://bloodhound.readthedocs.io/en/latest/index.html
BloodHound 使用图论来揭示 Active Directory 环境中隐藏的且通常是意想不到的关系,攻击者可以使用 BloodHound 轻松识别原本无法快速识别的高度复杂的攻击路径。防御者可以使用 BloodHound 来识别并消除这些相同的攻击路径。蓝队和红队都可以使用 BloodHound 轻松深入地了解 Active Directory 环境中的权限关系。
安装
需要先安装一下neo4j数据库,最好用管理员权限启动
neo4j
登录
然后再配合SharpHound
SharpHound -c all #我这里用的版本是1.1.1 2.0.1版本导入一直为0
powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all"
半天不动敲一下回车,最后会生成一个zip包,然后就可以开始分析
Database Info为数据库信息。
Node info是节点信息
Analysis为查询模块
边缘信息
边缘就是两个节点之间的连线,可以反映两个相互作用的节点之间的关系。
比如这个MemberOf
代表域用户Administrator是用户组Domain Admins的成员
边缘名称 | 说明 |
---|---|
AdminTo | 表示该用户是目标计算机上的本地管理员 |
MemberOf | 表示该主体是某用户组的成员 |
HasSession | 表示该用户在某计算机上拥有会话(用户与计算机时进行会话时,凭据会保留在内存中。说明用户登陆过该主机) |
ForceChangePassword | 表示该主题可以在不知道目标用户当前密码的情况下重置目标用户的密码 |
AdddMembers | 表示该主体能够将任意主体添加到目标安全组 |
CanRDP | 表示该主体可以登录目标计算机的远程桌面 |
CanPSRemote | 表示该主体可以通过Enter-PSSession启动一个与目标计算机的交互式会话 |
ExecuteDCOM | 表示该主体可以通过在远程计算机上实例化COM对象,并调用其方法,在某些条件下执行代码 |
SQLAdmin | 表示该用户是目标计算机的SQL管理员 |
AllowToDelegte | 表示该主体目标计算机的服务具有委派权限 |
GetChanges,GetChangesAll | 他们的组合表示该主体具有执行DCSync的权限 |
GenericAll | 表示该主体对某对象具有完全控制权限 |
WriteDacl | 表示该主体对某对象拥有写DACL的权限 |
Gplink | 表示组策略链接到的范围 |
TrustedBy | 用于跟踪域信任,并映射到访问方向 |
数据分析
查询
Domain information |
域信息 |
---|---|
Find all Domain Admins | 查询所有域管理员 |
Map Domain Trusts | 域信任地图 |
Find Computers with Unsupported Operating Systems | 查找不支持操作系统的计算机 |
Dangerous Privileges |
危险特权 |
Find Principals with DCSync Rights | 查找所有拥有DCSync权限的主体 |
Users with Foreign Domain Group Membership | 具有外部域组成员资格的用户 |
Groups with Foreign Domain Group Membership | 具有外部域名组成员资格的组 |
Find Computers where Domain Users are Local Admin | 查找域用户是本地管理员的所有计算机 |
Find Computers where Domain Users can read LAPS passwords | 查找域用户可以读取密码的所有计算机 |
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 Privileges for Domain Users Groups | 查找域用户组的危险权限 |
Find Domain Admin Logons to non-Domain Controllers | 查找所有非域控制器的域管理员登录 |
Kerberos Interaction |
Kerberos交互 |
Find Kerberosastable Members of High Value Groups | 查找高价值组中支持Kerberosastable的成员 |
List all Kerberosastable Accounts | 列出所有Kerberosastable用户 |
Find Kerberosastable Users with most privileges | 查找具有大多数特权的kerberosastable的用户 |
Find AS-REP Roastable Users(DontReqPreAuth) | 查找AS-REP Roastable用户(DontReqPreAuth) |
Shortest Paths |
最短路径 |
Shortest Paths to Unconstrained Delegation Systems | 识别到达无约束委派系统的最短路径 |
Shortest Paths from Kerberosastable Users | 识别达到Kerberosastable用户的最短路径 |
Shortest Paths to Domain Admins from Kerberosastable Users | 识别从Kerberosastbable用户到达域管理员用户的最短路径 |
Shortest Path from Owned Principals | 识别来自自有主体的最短路径 |
Shortest Paths to Domain Admins from Owned Principals | 从自有主体到域管理员的最短路径 |
Shortest Paths to High Value Targets | 识别到达高价值目标的最短路径 |
Shortest Paths from Domain Users to High Value Targets | 识别从域用户到达高价值目标的最短路径 |
Find Shortest Paths to Domain Admins | 识别从域用户到高价值目标的所有路径 |
0x2)节点信息
domain
Users
Sessions
观察到该用户登录的计算机数量。单击此数字可以直观地查看这些计算机与该用户之间的连接
Sibling Objects in the Same OU
OU(组织,几个用户可以添加成为一个组织)
同一 OU 中的同级对象:与该用户属于同一 OU 的其他 AD 用户、组和计算机的数量。
Reachable High Value Targets
可到达的高价值目标:该用户具有攻击路径的高价值目标的计数。默认情况下,高价值目标是属于域管理员、域控制器和其他几个高权限 Active Directory 组的任何计算机或用户。单击此数字可查看从该用户到这些高价值目标的最短攻击路径。
Effective Inbound GPOs
域管理组策略对象(GPO)
有效入站 GPO:适用于该用户的 GPO 计数。单击该数字可查看 GPO 以及它们如何应用于该用户。
See user within Domain/OU Tree
查看域/OU 树中的用户:单击此按钮可查看用户在 OU 树中的位置。这可以让您深入了解用户的地理位置以及实际人员的组织位置。
DisplayName
显示名称:用户的 Active Directory 显示名称
ObjectID
对象 ID:用户的 SID。在 neo4j 中,这被存储为用户的 objectid 以唯一标识节点
Password Last Changed
上次更改密码:上次更改用户密码的可读日期。这在内部以 Unix 格式存储
Last Logon
上次登录:您从中获取此数据的域控制器上次处理用户的登录请求的时间
Last Logon (Replicated)
上次登录(复制):任何域控制器上次处理该用户登录的时间
Enabled
是否启用:用户对象是否在 Active Directory 中启用。如果您控制禁用的用户对象,您可以重新启用该用户对象。
AdminCount
Active Directory 中的用户对象当前或可能曾经属于一组特定的高特权组。该属性与AdminSDHolder对象和SDProp进程相关。
Cannot Be Delegated
无法委派:是否在 Active Directory 中的用户上设置了 UAC 标志以禁止该用户的 kerberos 委派。如果这是“True”,则用户不能被滥用作为 kerberos 委托攻击的一部分
ASREP Roastable
用户是否可以被 ASREP 攻击
distinguishedname
用户的可分辨名称 (DN)
domain
用户所在域
passwordnotreqd
是否在用户对象上设置 UAC 标志以不要求用户拥有密码。请注意,这并不一定意味着用户没有密码,只是允许用户没有密码
userpassword
在某些情况下,您可能会在此属性中显示明文密码。最常见的是,我们看到某种基于 Unix/Linux 的应用程序会向该属性写入应用程序运行时使用的 AD 帐户的密码。这可能是用户当前的 AD 密码,但不保证是当前密码。
unconstraineddelegation
是否允许用户执行无约束的 kerberos 委派
First Degree Group Memberships
用户直接添加到的 AD 安全组
Unrolled Group Membership
展开的组成员身份:可以将组添加到组中,并且这些组嵌套可以向比预期更多的用户授予管理员权限、AD 对象的控制权和其他权限。这些是该用户实际上所属的组,因为该用户明确所属的组已添加到这些组中。(套娃)
Foreign Group Membership
外部组成员身份:该用户所属的其他 Active Directory 域中的组
First Degree Local Admin
一级本地管理员:该用户本身已添加到本地管理员组的计算机数量。如果您要在这些系统上输入 net localgroupadministrators,您将在列表中看到该用户(就是该用户在一些机器上就属于管理员)
Group Delegation Local Admin Rights
组委派本地管理员权限:AD 安全组可以添加到本地管理员组。此数字显示该用户通过安全组委派拥有本地管理员权限的计算机数量,无论这些组嵌套的深度如何
Derivative Local Admin Rights
派生本地管理员权限:默认情况下,此查询不会运行,因为它对于 Neo4j 来说是一个运行成本非常高的查询
First Degree RDP Privileges
一级 RDP 权限:此用户已添加到本地远程桌面用户组的计算机数量。
Group Delegated RDP Privileges
组委派的 RDP 权限:该用户通过安全组委派拥有远程桌面登录权限的计算机数量
SQL Admin Rights
SQL 管理员权限:该用户很可能被授予 MSSQL 实例 SA 权限的计算机数量。此数字是根据引用 MSSQL 实例的用户 serviceprincipalnames 属性中列出的计算机数量推断出来的
Constrained Delegation Privileges
约束委派权限:信任该用户执行约束委派的计算机数量。该数字是通过检查 Active Directory 中用户对象的 msDS-AllowedToDelegateTo 属性并获取该属性中列出的计算机数量来推断的
Explicit Object Controllers
显式对象控制器:在此组的 DACL 上作为可滥用 ACE 上的 IdentityReference 列出的主体数。换言之,直接控制此组的用户、组或计算机的数量
Computers
COMPUTERNAME.DOMAIN.COM
计算机的完全限定名称
Sessions
会话数:已观察到登录到此计算机的用户总数
Reachable High Value Targets
可访问的高价值目标:此计算机具有攻击路径的高价值目标数。默认情况下,高值目标是属于域管理员、域控制器和其他几个高特权 Active Directory 组的任何计算机或用户。单击此数字可查看从此计算机到这些高价值目标的最短攻击路径
Sibling Objects in the Same OU
同 OU 中的同级对象:与此计算机属于同一 OU 的其他 AD 用户、组和计算机的数量
Object ID
对象 ID:计算机的 SID。我们将其作为计算机的 objectid 存储在 neo4j 中,以唯一标识节点
OS
操作系统:在计算机上运行的操作系统,根据 Active Directory 中计算机对象上的相应属性
Enabled
是否启用计算机对象
Allows Unconstrained Delegation
允许无约束委派:是否信任计算机来执行无约束委派
serviceprincipalnames
serviceprincipalnames:计算机上的 SPN 列表。对于确定计算机上可能运行的任何非默认服务(如 MSSQL)非常有用
0x3)使用技巧
start-end
先标记一个终点节点。
然后再选择一个开始节点
这样就可以查询出两个节点之间的路径
路径信息
全局到该节点的最短路径
从拥有节点到此最短路径
首先标记一个我们拥有的主机(用户)节点
快捷键
CTRL
可以按三下,默认、始终显示、始终隐藏
隐藏:
默认:
始终显示
空格
快速弹出当前绘图内的节点信息,可以进行搜索选择,然后聚光灯。
删除键
回退操作
S键
展开或者缩起搜索
搜索框
语法
搜索时可以携带语法
- Group 组
- Domain 域名
- Computer 电脑
- User 用户
- Container 容器
路径
这个最强的其实就这个搜索路径,我们可以搜索两个节点之间的路径信息
如果两个路径之间不通的话就没有结果
开启这个设置就可以看到查询语法
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-