首页
/ BloodHound项目中的SharpHound数据收集器深度解析

BloodHound项目中的SharpHound数据收集器深度解析

2025-07-06 06:18:18作者:贡沫苏Truman

前言

在Active Directory(AD)安全评估领域,BloodHound无疑是最强大的工具之一。而作为其官方数据收集器,SharpHound扮演着至关重要的角色。本文将全面解析SharpHound的功能特性、使用方法以及在实际环境中的应用技巧。

SharpHound概述

SharpHound是专为BloodHound设计的C#数据收集工具,它通过Windows原生API和LDAP命名空间函数,从域控制器和域内Windows系统收集关键数据。这些数据将被BloodHound用于构建AD环境的关系图谱,揭示潜在的攻击路径。

基础使用方法

最简单的使用方式是不带任何参数直接运行:

SharpHound.exe

执行此命令后,SharpHound会自动完成以下操作:

  1. 识别当前用户所属域
  2. 定位该域的域控制器
  3. 执行默认收集方法

默认收集方法会获取以下关键信息:

  • 安全组成员关系
  • 域信任关系
  • AD对象上的可滥用权限
  • 组策略链接
  • OU树结构
  • 计算机、组和用户对象的多项属性
  • SQL管理员链接

此外,SharpHound还会尝试从每台域内Windows计算机收集:

  • 本地管理员、远程桌面、分布式COM和远程管理组的成员
  • 活动会话信息(用于关联用户登录情况)

会话循环收集方法

在AD安全评估中,用户会话数据具有动态特性,这使其成为攻击路径分析的关键因素。SharpHound提供了专门的会话循环收集方法:

SharpHound.exe --CollectionMethods Session --Loop

此命令将使SharpHound持续运行2小时的会话收集,每次循环结束后生成一个ZIP文件。建议将所有生成的ZIP文件一并导入BloodHound。

如需自定义循环时长,可使用--Loopduration参数(HH:MM:SS格式):

SharpHound.exe --CollectionMethods Session --Loop --Loopduration 03:09:41

非域环境下的数据收集

虽然不推荐,但SharpHound确实支持从非域内系统收集数据。实现步骤较为复杂:

  1. 配置系统DNS指向目标域的域控制器IP
  2. 使用runas命令以目标域用户身份启动CMD(需/netonly参数)
  3. 验证域认证是否成功
  4. 使用-d参数指定目标域运行SharpHound

源码编译与自定义构建

SharpHound基于C# 9.0开发,建议使用Visual Studio 2019进行编译。对于较早版本的VS,可通过安装Microsoft.Net.Compilers nuget包实现兼容。

编译过程会生成可执行文件和封装了可执行文件的PowerShell脚本,所有依赖项都已集成到二进制文件中。

反病毒规避策略

由于SharpHound常用于渗透测试,许多反病毒产品会将其标记为恶意软件。针对不同角色,我们有以下建议:

红队策略:

  • 采用内存执行技术(如Cobalt Strike的execute-assembly)
  • 避免磁盘写入操作
  • 自定义源码构建并应用混淆技术

蓝队策略:

  • 申请特定路径或文件的AV例外
  • 严格控制例外范围,防止低权限用户枚举
  • 考虑使用内存执行技术进行防御性评估

结语

SharpHound作为BloodHound生态系统的核心组件,其强大的数据收集能力为AD安全评估提供了坚实基础。无论是攻击路径发现还是防御加固,深入理解SharpHound的工作原理和使用技巧都至关重要。通过合理配置收集参数和规避策略,安全专业人员可以更高效地完成AD环境的安全评估工作。