详解Active Directory图论分析与隐藏权限路径发现
内网渗透之域关系探测神器:Bloodhound
想象一下,一个渗透测试人员或安全分析师,面对一个拥有数千用户、数百个组和复杂信任关系的庞大Active Directory森林。传统的枚举工具能列出一堆权限和组成员,但那些真正危险的、像毛细血管一样遍布整个系统的隐蔽权限路径,却藏在数据的迷雾里。这正是图论分析切入的地方——它不满足于罗列清单,而是要画出一张揭示所有潜在攻击路径的“作战地图”。
从静态清单到动态关系图
传统的AD审计工具输出什么?是像“用户A是组G的成员,组G在计算机C上有本地管理员权限”这样的静态语句。这当然有用,但它只告诉你直接关系。图论的视角完全不同,它将AD中的每一个实体——用户、组、计算机、OU、GPO——都视为一个“节点”,将权限关系(如“成员属于”、“拥有管理员权限”、“受GPO控制”)视为连接这些节点的“边”。
当整个AD环境被建模成一张图后,问题就从“用户A有什么权限?”转变为“从攻击者控制的初始节点(比如一个被攻陷的普通用户账户)出发,能够通过多少条路径,最终抵达高价值目标节点(比如域管理员组)?”。这种转变是革命性的。
隐藏路径:那些被忽略的“特权传递”
图论分析最擅长揭露的就是那些非直观的、间接的权限路径,也就是所谓的“隐藏权限路径”。它们往往由一系列看似无害的关系串联而成,形成一条完整的攻击链。举个例子:
- 路径一(常规路径):用户Alice → 域管理员组。一目了然,但监控也最严格。
- 路径二(隐藏路径):攻击者控制的用户Bob → IT支持组(拥有对服务器S的本地管理员权限)→ 服务器S(其上运行着以域管理员身份执行任务的计划任务或服务账户)→ 窃取该服务账户凭据 → 域管理员权限。
第二条路径中的任何一个环节单独看,可能都不算高危。IT支持组需要管理服务器,合情合理;服务器上跑个计划任务,也司空见惯。但图算法能将它们自动串联起来,计算出从Bob到域管理员的最短路径,并高亮这条“攻击成本”最低的路线。这往往就是防御的盲区。
核心算法:最短路径与入度分析
在图论模型中,发现这些路径主要依赖两类算法。其一是最短路径算法,比如Dijkstra算法。给定一个起点(被入侵账户)和一个终点(域控制器管理员),算法能快速找出需要经过最少中间节点的攻击路径。这对红队规划攻击步骤,或蓝队评估单个账户失陷后的潜在影响范围,至关重要。
其二是入度/出度分析。在AD权限图中,指向某个节点的“边”越多(入度高),意味着有越多的其他实体能够直接或间接影响到它。一个入度极高的普通用户,可能因为隶属于几十个不同的组,而意外获得了广泛的权限。反之,一个出度极高的组(如“所有工作站的管理员组”),则是权限扩散的关键枢纽,需要重点审查。通过计算这些指标,可以迅速定位到整个权限网络中的“超级节点”和薄弱环节。
实战意义:从被动响应到主动狩猎
将AD视为图进行建模和分析,其价值远超一个炫酷的可视化界面。它从根本上改变了安全运维的模式。
对于蓝队而言,这意味着一场从“事件响应”到“攻击路径预测”的转变。与其等待告警,不如定期运行图分析,主动寻找环境中新出现的、不合理的短路径。例如,当一个新的服务账户被加入一个本不该有权限的组时,图模型会立刻显示出由此产生的、通往关键系统的潜在新路径。这种基于图的持续监控,能在大规模横向移动发生前,就掐灭苗头。
说白了,图论分析提供了一种语言和一套数学工具,让我们能精准地描述和度量Active Directory中那团看似混沌的权限关系。它把渗透测试中那些高手凭经验直觉才能发现的“骚操作”,变成了可计算、可复现、可防御的显性知识。当攻击者还在手动枚举时,防御方已经用算法看穿了整个棋盘。

参与讨论
这图算法真是利器。
Bob的账号是怎么被拿到的?
我之前在某公司也遇到过类似的IT支持组权限泄漏,后来通过图分析才发现问题。
如果把服务账户的出度也纳入监控,会不会导致误报太多?有没有办法只关注出度异常的节点?比如说只筛选出度大于10且关联到关键服务器的组,这样既能捕获风险,又不至于被噪音淹没。🤔