0x01 汉化及规则
使用方法:替换相应文件即可
效果
域基本信息
查找所有域管 | |
域信任 | |
老旧系统 |
高风险权限
查找具有 DCSync 权限的主体 | |
具有外部域组成员身份的用户 | |
admincount=1 且启用的账号 | |
具有外部域组成员身份的组 | |
查找本地管理员为域用户的计算机 | |
查找域用户可以读取 LAPS 密码的计算机 | |
查找域用户到高价值目标的所有路径 | |
查找域用户可以进行远程桌面连接的工作站 | |
查找域用户可以进行远程桌面连接的服务器 | |
查找域用户组的危险权限 | |
查找域管理员登录非域控制器的情况 |
Kerberos 交互
查找高价值组中可以进行 Kerberoasting 的成员 | |
列出所有可以进行 Kerberoasting 的账户 | |
查找具有最高权限的可以进行 Kerberoasting 的用户 | |
可进行 Kerberoasting 攻击的高价值组成员账户 | |
列出所有可进行Kerberoast攻击的账户 | |
查找可以进行 AS-REP Roasting 的用户(未启用预身份验证要求) |
最短攻击路径
查找无约束委派系统的最短攻击路径 | |
从可以进行 Kerberoasting 的用户开始的最短路径 | |
从可以进行 Kerberoasting 的用户到域管理员的最短路径 | |
从拥有权限的主体开始的最短攻击路径 | |
从已拥有权限的主体到域管理员的最短路径 | |
通往高价值目标的最短路径 | |
Domain Users 到高价值目标最短攻击路径 | |
到域管最短攻击路径 |
列出域用户是本地管理员的计算机 | |
查找域用户可以 RDP 到的工作站 | |
查找域用户可以 RDP 到的服务器 | |
所有域用户到高价值目标的路径 | |
非 DC机器的域管会话 | |
可进行 Kerberoasting 攻击的高价值组成员账户 | |
列出所有可进行Kerberoast攻击的账户 | |
查找有最多管理员的TOP 10计算机 | |
最多本地管理员TOP 10用户 | |
获取没有管理员的计算机的数量 | |
查找非管理员的计算机的名称,按字母顺序排序 | |
查找所有非域控机器 | |
List all High Valued Targets | |
List the groups of all owned users | |
寻找从一个已经获取所有权限的对象到一个高价值目标的最短攻击路径 | |
查找从获得权限对象到无约束委派的系统最短攻击路径 | |
Find all Kerberoastable Users | |
查找所有密码最后设置在5年之内的可进行Kerberoasting攻击的用户 | |
查找具有访问域管理员路径的可进行Kerberoasting攻击的用户 | |
Domain Users可远程桌面访问的机器 | |
查找可以远程登录的组 | |
查找可以重置密码的组(警告:重度) | |
查找具有本地管理员权限的组(警告:重度) | |
查找所有拥有本地管理员权限的用户 | |
查找无约束委派的所有计算机 | |
查找最近 90 天内登录的用户 | |
查找最近 90 天之前设置密码的用户 | |
查找约束委托 | |
查找允许不受约束委派但不是域控制器的计算机。 | |
返回 SPN 包含字符串'MSSQL'的计算机 | |
展示100条 GPOs | |
展示所有包含'admin' 关键字的组 | |
查找不要求kerberos 预身份认证用户 | |
查找所有具有 SPN 的用户/查找所有密码上次设置 > 5 年的 Kerberoastable 用户 | |
显示所有高价值目标的组 | |
查找同时包含用户和计算机的组 | |
查找作为高价值组成员的 Kerberoastable 用户 | |
查找 Kerberoastable 用户及其管理员权限 | |
查找具有受限委派权限的计算机及其允许委派的相应目标 | |
查找是否有任何域用户对 GPO 具有有趣的权限(警告:重度 | |
查找非特权用户有权将成员添加到组中 | |
查找属于 VPN 组的所有用户 | |
查找从未登录且帐户仍处于活动状态的用户 | |
在一个域中找到一个可以对外来对象执行某些操作的对象 | |
查找能够对外部对象执行任何操作的域对象 | |
查找任何已拥有用户权限在一台计算机上的所有边缘资产 |
Session 相关
域管账号会话机器 | |
会话最多的TOP 10用户 | |
最多用户会话机器TOP 10 | |
最多管理员会话机器TOP 10 | |
查找所有活动的域管理员会话 | |
查找特定域下的用户所有会话 |
已经获取权限的对象
List all owned users | |
List all owned computers | |
List all owned groups |
ACL 审计
用户对机器有特殊权限查询 WriteAccountRestrictions (Top 100) | |
用户对机器有特殊权限查询 GenericAll (Top 100) | |
用户对机器有特殊权限查询 Owns (Top 100) | |
用户对机器有特殊权限查询 AllExtendedRights (Top 100) |
主体汉化
文件路径:\BloodHound-win32-x64\resources\app\dist\bundle.js
内置规则及汉化
文件路径: \BloodHound-win32-x64\resources\app\src\components\SearchContainer\Tabs\PrebuiltQueries.json
自定义规则及汉化
文件路径:C:\Users\[user目录]\AppData\Roaming\bloodhound\customqueries.json
以上文件地址:
https://github.com/mabangde/Bloodhound_cn
替换相应文件即可
0x02 辅助分析工具
项目地址:https://github.com/mabangde/Bloodhound_data_parse
处理Active Directory中的安全主体(如用户、组、计算机等)的ACL信息,将信息导出CSV方便分析,该工具可与Bloodhound 配合使用,Bloodhound处理大量数据渲染慢
功能:
acl_audit(object_type='user') # 审计用户对象acl
acl_audit(object_type='computer') # 审计计算机对象acl
acl_audit(object_type='group') # 审计组对象acl
get_computer_sessions_info() # 获取所有计算机登录session
get_domain_users() # 获取域内所有用户
get_group_members() # 获取所有组下面用户
可用以下采集器采集:
https://github.com/fox-it/BloodHound.py
https://github.com/OPENCYBER-FR/RustHound
ADExplorer.exe + ADExplorerSnapshot.py
SharpHound
文件放置:
files 目录
输出结果:
output目录
效果:
(以上图片数据均为伪造数据)
0x03 名词说明
First Degree Group Memberships(一级组成员关系):指直接加入某个组的用户或计算机账户。
Unrolled Group Membership(展开的组成员关系):指在组成员中,展开所有直接和间接的成员关系,便于发现更多的权限和访问路径。
Foreign Group Membership(外部组成员身份):指在域环境中,属于其他域或外部系统的组成员身份。例如,如果某个组包含了其他域中的用户或计算机账户,则这些用户或计算机账户就属于该组的外部成员。
First Degree Local Admin(一级本地管理员):指在计算机中直接拥有本地管理员权限的用户或组。
Group Delegated Local Admin Rights(委派组的本地管理员权限):指在计算机中,通过组策略对象(GPO)或其他方式委派给指定组的本地管理员权限。
Derivative Local Admin Rights(派生本地管理员权限):指在计算机中,通过其他方式获取本地管理员权限的用户或组,例如从另一个本地管理员账户继承权限、获取某个服务的管理员权限等。
First Degree Group Membership(一级组成员):指直接加入某个组的用户或计算机账户。
Unrolled Member Of(展开的成员关系):指在组成员中,展开所有直接和间接的成员关系,便于发现更多的权限和访问路径。
Foreign Group Membership(外部组成员):指在域环境中,属于其他域或外部系统的组成员身份。
Direct Members(直接成员):指在组成员中,直接加入该组的用户或计算机账户。
Unrolled Members(展开的成员):指在组成员中,展开所有直接和间接的成员关系,包括所有子组和外部组成员。
Foreign Members(外部成员):指在域环境中,属于其他域或外部系统的用户或计算机账户。
First Degree RDP Privileges(一级远程桌面特权):指在域环境中,直接拥有可以通过远程桌面协议(RDP)进行远程控制权限的用户或计算机。
Group Delegated RDP Privileges(委派组的远程桌面特权):指在域环境中,通过组策略对象(GPO)或其他方式委派给指定组的远程桌面特权。
First Degree DCOM Privileges(一级DCOM特权):指在域环境中,直接拥有可以通过分布式组件对象模型(DCOM)进行本地或远程权限提升的用户或计算机。
Group Delegated DCOM Privileges(委派组的DCOM特权):指在域环境中,通过GPO或其他方式委派给指定组的DCOM特权。
SQL Admin Rights(SQL管理员权限):指在计算机中拥有对SQL Server进行管理的权限,包括创建、删除、修改数据库、备份和还原数据等。
Constrained Delegation Privileges(受限委派特权):指在域环境中,通过委派方式授予的仅可用于指定目标计算机的受限委派特权,可以在不泄露凭据的情况下,以当前用户的身份访问目标计算机。这是一种安全的权限管理方式,可以避免攻击者滥用委派特权导致的安全问题。
Sessions(会话):指在计算机网络中,建立起连接并进行通信的两个程序之间的运行实例。在域环境中,用户可以通过建立会话与域进行交互,例如登录、访问资源等。
Sibling Objects in the Same OU(同一OU中的同级对象):指在域环境中,同一组织单位(OU)中的同级对象,它们在同一层级并具有相同的父级OU。
Reachable High Value Targets(可达高价值目标):指在域环境中,可以通过当前已知的权限路径到达的高价值目标,例如域管理员、企业管理员等。
Effective Inbound GPOs(有效的入站GPO):指在域环境中,对指定计算机或用户具有有效入站网络访问控制的组策略对象(GPO)。
See user within Domain/OU Tree(在域/OU树中查看用户):指在BloodHound工具中,通过查询域或OU树来查找指定用户及其权限路径的功能。该功能可以帮助安全人员了解当前域中的权限情况,并帮助找到潜在的攻击路径。
First Degree Object Control(一级对象控制):指对一个对象(如文件、文件夹、数据库等)的直接控制,即可以对该对象进行修改、删除、共享等操作的权限控制。
Group Delegated Object Control(组委派对象控制):指通过将权限授予某个用户组来管理对象访问权限的方式。用户组成员可以继承该组的权限,并且可以通过添加或删除组成员来管理对象的访问权限。
Transitive Object Control(传递性对象控制):指当一个对象控制了另一个对象的访问权限时,它也会控制那个对象所控制的所有对象的访问权限。例如,如果用户拥有对文件夹的完全控制权,则他也将具有对该文件夹中的所有文件和子文件夹的完全控制权。
Explicit Object Controllers(显式对象控制器):指控制对象访问权限的明确指定的用户或用户组。这些用户或用户组的权限通常在对象的安全描述符中明确列出。
Unrolled Object Controllers(未展开的对象控制器):指未将所有显式控制对象列在安全描述符中的控制对象。这些对象可能是由于传递性控制而得到的控制权,也可能是由于权限继承而得到的控制权。
Transitive Object Controllers(传递性对象控制器):指通过传递性控制方式获得访问权限的对象控制器。例如,如果用户A控制了文件夹的访问权限,而文件夹又控制了文件的访问权限,那么用户A也就成为了这些文件的控制器。这种控制方式可能会导致访问权限的泄漏或不当使用。0x03 常见权限说明:
WriteAccountRestrictions:允许用户更改帐户约束,包括密码长度、复杂性、帐户锁定策略等。
Owns:允许用户拥有对象的所有权。
AllExtendedRights:允许用户执行所有特殊任务的权限。
GenericAll:允许用户对指定对象执行任何操作的完全权限。
WriteMembers:允许用户更改组成员身份的权限。
ResetPassword:允许用户重置用户帐户密码的权限。
Self(Self-Membership):自成员,这个是能够将自己添加到组的另一项特权
GenericWrite:允许用户对指定对象执行大多数操作的权限。
WriteProperty:允许用户更改指定对象的属性的权限。
WriteOwner:允许用户更改对象所有者的权限。
WriteDacl:允许用户更改对象访问控制列表(DACL)的权限,该列表确定哪些用户或组对对象具有访问权限。
GetChangesInFilteredSet:允许用户检索符合过滤条件的目录服务对象更改。
GetChanges:允许用户检索目录服务中的更改。
GetChangesAll:允许用户检索所有目录服务对象的更改。
参考文章:
https://hausec.com/2019/09/09/bloodhound-cypher-cheatsheet/