此版本已弃用,请改用 SHARPHOUND。使用此方法收集的数据将无法与 BloodHound 4.1+ 配合使用
SharpHound - BloodHound 数据采集器的 C# 重写版
获取 SharpHound
最新构建的 SharpHound 始终位于 BloodHound 仓库 此处
编译说明
SharpHound 使用 C# 9.0 功能编写。若要轻松编译此项目,请使用 Visual Studio 2019。
如果要在 Visual Studio 的早期版本上编译,可以安装 Microsoft.Net.Compilers NuGet 包。
构建项目会生成一个可执行文件以及一个包含该可执行文件的 PowerShell 脚本。所有依赖项都已打包到二进制文件中。
要求
SharpHound 的目标是 .Net 4.5。SharpHound 必须在域用户上下文中运行,无论是通过直接登录还是通过其他方法(如 RUNAS)。
更多信息
用法
枚举选项
- CollectionMethod - 要使用的采集方法。此参数接受逗号分隔的值列表。可能的值如下(默认值:Default):
- Default - 执行组成员资格采集、域信任采集、本地组采集、会话采集、ACL 采集、对象属性采集和 SPN 目标采集
- Group - 执行组成员资格采集
- LocalAdmin - 执行本地管理员采集
- RDP - 执行远程桌面用户采集
- DCOM - 执行分布式 COM 用户采集
- PSRemote - 执行远程管理用户采集
- GPOLocalGroup - 使用组策略对象执行本地管理员采集
- Session - 执行会话采集
- ComputerOnly - 执行本地管理员、RDP、DCOM 和会话采集
- LoggedOn - 执行特权会话采集(需要在目标系统上拥有管理员权限)
- Trusts - 执行域信任枚举
- ACL - 执行 ACL 采集
- Container - 执行容器采集
- DcOnly - 仅使用 LDAP 执行采集。包括 Group、Trusts、ACL、ObjectProps、Container 和 GPOLocalGroup。
- ObjectProps - 执行对象属性采集,例如 LastLogon 或 PwdLastSet
- All - 执行除 GPOLocalGroup 之外的所有采集方法
- Domain - 搜索特定域。如果为 null,则使用当前域(默认值:null)
- Stealth - 执行 stealth 采集方法。所有 stealth 选项均为单线程。
- ExcludeDomainControllers - 从枚举中排除域控制器(避免触发 Microsoft ATA 标志 :))
- ComputerFile - 指定一个包含计算机名称/IP 地址的文件
- LdapFilter - 要附加到搜索的 LDAP 过滤器
- OverrideUserName - 覆盖用于会话枚举的用户名(高级)
- RealDNSName - 覆盖 API 调用的 DNS 名称
- CollectAllProperties - 采集所有字符串 LDAP 属性,而非子集
- WindowsOnly - 将计算机采集限制为操作系统匹配 *Windows* 的系统
循环选项
- Loop - 循环计算机采集
- LoopDuration - 循环持续多长时间
- LoopInterval - 循环之间的等待持续时间
连接选项
- DomainController - 指定要连接的域控制器(默认值:null)
- LdapPort - 指定 LDAP 端口(默认值:0)
- SecureLdap - 使用安全 LDAP 而非普通 LDAP 连接到 AD。默认连接端口 636。
- LdapUsername - 连接 LDAP 的用户名。还需要 LDAPPassword 参数(默认值:null)
- LdapPassword - 连接 LDAP 的用户密码。还需要 LDAPUser 参数(默认值:null)
- DisableKerberosSigning - 禁用 LDAP 加密。不推荐。
性能选项
- PortScanTimeout - 指定 ping 请求的超时时间(毫秒)(默认值:2000)
- SkipPortScan - 指示 SharpHound 跳过 ping 请求以检查系统是否在线
- Throttle - 在每个请求之后添加延迟(毫秒)(默认值:0)
- Jitter - 为 throttle 添加百分比抖动(默认值:0)
输出选项
- OutputDirectory - 存储 JSON 文件的文件夹(默认值:.)
- OutputPrefix - 添加到 JSON 文件的前缀(默认值:"")
- NoZip - 不要将 JSON 文件压缩为 zip 文件。将 JSON 文件保留在磁盘上(默认值:false)
- EncryptZip - 为 zip 文件添加随机生成的密码。
- ZipFileName - 指定 zip 文件的名称
- RandomizeFilenames - 随机化输出文件名
- PrettyJson - 输出带多行缩进的 JSON 以提高可读性。代价是文件大小增加。
- DumpComputerStatus - 转储连接计算机时的错误代码
缓存选项
- CacheFileName - SharpHound 缓存的文件名(默认值:.bin)
- NoSaveCache - 不要将缓存文件保存到磁盘。如果没有此标志,.bin 将被写入磁盘
- InvalidateCache - 使缓存文件失效并构建新缓存
杂项选项
- StatusInterval - 枚举期间显示进度的间隔(毫秒)(默认值:30000)