
A Python based ingestor for BloodHound
BloodHound.py 是一个基于 Python 的 BloodHound 数据采集器,基于 Impacket。
此分支中的代码仅与 BloodHound 4.2 和 4.3 兼容。对于 BloodHound CE,请查看 bloodhound-ce 分支
BloodHound Community Edition (CE) 和 BloodHound 旧版的安装方法不同。除非你对两个工具都使用虚拟环境,或使用 pipx 这类可自动设置虚拟环境的包管理器,否则同一时间只能安装其中一种工具。
可使用以下安装方法:
pip install bloodhoundpipx install bloodhoundgit clone https://github.com/dirkjanm/BloodHound.py,并在项目目录中运行 pip install .。BloodHound.py 旧版安装会将命令行工具 bloodhound-python 添加到你的 PATH 中。
可使用以下安装方法:
pip install bloodhound-cepipx install bloodhound-cegit clone https://github.com/dirkjanm/BloodHound.py,切换到 CE 分支 git checkout bloodhound-ce,并在项目目录中运行 pip install .。BloodHound.py CE 数据采集器会将命令行工具 bloodhound-ce-python 添加到你的 PATH 中。
要使用该数据采集器,你至少需要所登录域的有效凭据。凭据可以指定为用户名 + 密码、NT 哈希或 AES 密钥,或 ccache 文件中的 Kerberos TGT。
你需要使用 -u 选项指定该域的用户名(如果是受信任域中的用户,则使用 username@domain)。如果你的 DNS 设置正确,且 AD 域在你的 DNS 搜索列表中,BloodHound.py 会自动检测域。如果没有,你需要使用 -d 选项手动指定。
默认情况下,BloodHound.py 会查询 LDAP 以及域中的各台计算机,以枚举用户、计算机、组、信任关系、会话和本地管理员。
如果要限制采集范围,请指定 --collectionmethod 参数,该参数支持以下选项(与 SharpHound 类似):
多个采集方法之间应用逗号分隔,例如:-c Group,LocalAdmin
你可以覆盖部分自动检测选项,例如使用 -dc 指定不同的域控制器主机名,或使用 -gc 指定自己的全局编录(Global Catalog)。
BloodHound.py 目前具有以下局限性:
docker build -t bloodhound .docker run -v ${PWD}:/bloodhound-data -it bloodhound
之后,你可以在容器内运行 bloodhound-python,所有数据将存储在你启动容器的路径中。BloodHound.py 最初由 Fox-IT (NCC Group) 的 Dirk-jan Mollema、Edwin van Vliet 和 Matthijs Gielen 编写。BloodHound.py 目前由 Outsider Security 的 Dirk-jan Mollema 维护。其实现和数据模型基于 SpecterOps 的原始工具。非常感谢多年来通过测试、提交 issue 和 pull request 做出贡献的所有人。