关于ShadowHound
ShadowHound是一款用于活动目录AD枚举的PowerShell工具,该工具可以帮助广大研究人员更好地检测网络系统活动目录的安全。
功能介绍
ShadowHound提供了一系列功能强大的PowerShell脚本,该工具能够最大程度地利用本机PowerShell功能来降低活动目录的安全风险,主要提供了以下两种数据收集方法:
1、ShadowHound-ADM.ps1:使用 Active Directory 模块 (ADWS);
2、ShadowHound-DS.ps1:通过利用直接 LDAP 查询DirectorySearcher;
工具要求
PowerShell
工具安装
广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/Friends-Security/ShadowHound.git
工具使用
ShadowHound-ADM.ps1
方法:Active Directory 模块(Get-ADObject)。
使用场景:当 AD 模块可用且 ADWS 可访问时。
功能:
使用-SplitSearch、-Recurse和-LetterSplitSearch选项处理大型目标域;
使用-Certificates选项枚举证书;
ShadowHound-DS.ps1
方法:使用直接 LDAP 查询DirectorySearcher;
使用场景:AD 模块不可用或优先使用 LDAP 的环境。
功能:
使用-Certificates选项枚举证书;
支持使用-Credential参数的备用凭据;
工具运行演示
基本枚举
ShadowHound-ADM.ps1
# Basic usage ShadowHound-ADM -OutputFilePath "C:\Results\ldap_output.txt" # Specify a domain controller and custom LDAP filter ShadowHound-ADM -Server "dc.domain.local" -OutputFilePath "C:\Results\ldap_output.txt" -LdapFilter "(objectClass=user)" # Use alternate credentials $cred = Get-Credential ShadowHound-ADM -OutputFilePath "C:\Results\ldap_output.txt" -Credential $cred -SearchBase "DC=domain,DC=local"
ShadowHound-DS.ps1
# Basic usage ShadowHound-DS -OutputFile "C:\Results\ldap_output.txt" # Specify a domain controller ShadowHound-DS -Server "dc.domain.local" -OutputFile "C:\Results\ldap_output.txt" # Use a custom LDAP filter ShadowHound-DS -OutputFile "C:\Results\ldap_output.txt" -LdapFilter "(objectClass=computer)"
枚举证书
这两个脚本都支持枚举那些有趣的 ADCS 向量的证书相关对象:
# Using ShadowHound-ADM.ps1 ShadowHound-ADM -OutputFilePath "C:\Results\cert_output.txt" -Certificates # Using ShadowHound-DS.ps1 ShadowHound-DS -OutputFile "C:\Results\cert_output.txt" -Certificates
处理大型域名(ShadowHound-ADM.ps1)
# Split search across top-level containers with letter splitting ShadowHound-ADM -OutputFilePath "C:\Results\ldap_output.txt" -SplitSearch -LetterSplitSearch
为 BloodHound 转换数据
如果使用 ShadowHound 获得的 ldap_output.txt 对于 Bofhound 来说太大(内存错误),可以使用 split_output.py 拆分 ShadowHound 输出:
# Split ldap_output.txt to 100 chunks which are named split_output_1.txt, split_output_2.txt and so on... # In order to provide bofhound with a folder containing ldap output, the files *must* be prefixed with "pyldapsearch". python3 split_output.py -i ldap_output.txt -o pyldapsearch_ldap -n 100 # Provide Shadowhound with a folder containing the splitted output python3 bofhound.py -i ./folder -p All --parser ldapsearch
收集数据后,使用BofHound将其转换为与 BloodHound 兼容的 JSON 文件:
python3 bofhound.py -i ldap_output.txt -p All --parser ldapsearch
对于大型 JSON 文件(>100MB),请考虑使用ShredHound之类的工具对其进行拆分。
工具运行截图
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
ShadowHound:【GitHub传送门】