ShotHound如何与CornerShot联动优化BloodHound路径验证?

7 人参与

在BloodHound揭示的数以百万计的潜在攻击路径面前,即便是经验丰富的红队成员也会感到棘手。这些路径在理论上成立,但在现实的网络访问控制下,有多少是真正可用的?ShotHound与CornerShot的联动,本质上是在解决一个核心矛盾:如何将BloodHound的“逻辑路径”转化为经过网络可达性验证的“实际路径”。

从理论到实践:路径验证的鸿沟

BloodHound的强大之处在于它通过解析活动目录(AD)中的各种关系,构建出复杂的攻击图。它告诉你:“用户A是计算机B的管理员,而计算机B又与服务器C存在会话。”理论上,这是一条清晰的横向移动路径。但问题在于,BloodHound默认不验证从计算机B到服务器C的网络层连通性。如果两者之间的防火墙规则只允许特定端口通信,或者干脆阻断了所有连接,这条逻辑路径在实战中就是一条死胡同。

CornerShot:充当“网络探针”

这就是CornerShot登场的地方。你可以把它想象成一个部署在“已控跳板机”(Carrier)上的精密探针。它的工作原理很巧妙:利用Windows RPC等协议,从一个已获得凭证的主机(Carrier)去探测到另一个目标主机(Target)特定端口(如445, 3389)的可达性,而无需在目标上执行任何代码或拥有其权限。说白了,它帮你问了目标主机一句:“嘿,从我这个IP过来,你能接到我的某某端口的招呼吗?”

一个关键的技术细节

CornerShot的探测并非普通的ICMP Ping或TCP SYN扫描。它利用了Windows网络API的行为,这种基于RPC的探测方式更能真实反映域内主机间SMB、WinRM等关键管理协议的实际连通情况,减少了被主机防火墙或网络设备误判为攻击扫描的风险,结果更具参考价值。

ShotHound:自动化整合的“大脑”

如果手动将BloodHound导出的路径逐一用CornerShot去验证,工作量是灾难性的。ShotHound扮演了自动化“大脑”的角色。它的工作流程可以拆解为几个清晰的步骤:

  • 路径提取与解析:ShotHound从BloodHound的图数据库中提取出用户指定的高价值攻击路径(例如,从初始立足点到域管理员)。它会自动解析路径中的每一“跳”,识别出作为“源”和“目标”的主机。
  • 任务编排:对于路径“A->B->C”,ShotHound知道需要验证A到B,以及B到C的网络连通性。它会智能地将这些验证任务组织起来,调用CornerShot的API。
  • 并行探测与结果聚合:ShotHound可以协调多个CornerShot实例(或使用多个Carrier)对不同的目标对进行并行探测,极大提升了验证效率。探测结果(端口开放、关闭、过滤)会被实时收集回来。
  • 路径过滤与排序:这是最核心的价值所在。ShotHound根据网络验证结果,对原始路径列表进行“过滤”。那些存在网络断点(例如,从B到C的445端口被过滤)的路径会被降权或直接剔除。最终输出的,是一个按照网络可达性概率重新排序的、精简后的高置信度路径列表。

实战意义:效率与精准度的双重提升

这种联动带来的改变是实质性的。曾经,分析师可能需要面对BloodHound输出的50条路径,并花费数小时手动测试关键节点的连通性。现在,通过ShotHound与CornerShot的自动化流水线,可能在几分钟内就将这50条路径压缩到只剩下3到5条网络验证通过的路径。

红队可以立即将火力集中在这几条“绿色通道”上,制定精确的横向移动策略,避免了在无效路径上浪费宝贵的攻击窗口。对于蓝队而言,理解这种联动机制同样重要——它揭示了攻击者是如何快速筛选出真实威胁路径的,从而提醒防御方需要确保自己的网络分段策略与AD权限模型保持一致,堵住那些逻辑和网络都通的“双通”路径。

工具链的进化,正在将攻击模拟从依赖经验的“艺术”,推向更多依赖数据验证的“工程”。ShotHound和CornerShot的配合,正是这个趋势下一个漂亮的注脚。

参与讨论

7 条评论
  • 蓝调咖啡

    这个联动思路挺巧妙的,把逻辑和网络验证打通了。

    回复
  • 夜空画师

    从B到C的445端口不通的话,这路径就废了吧?

    回复
  • 啵啵小海豚

    我们内网之前用BloodHound扫出一堆路径,手动测到吐血,要早点知道这个工具就好了。

    回复
  • 七夕织女

    CornerShot那个基于RPC的探测,比直接扫端口稳一点?

    回复
  • 深渊幽光

    所以本质上就是自动做了一遍端口探测和路径筛选。

    回复
  • 阮郎归

    对于蓝队来说,看这个比看纯BloodHound报告更有针对性。

    回复
  • 伦敦眼

    ShotHound能直接调用本地的CornerShot实例吗,还是需要单独部署?

    回复