Hackndo/sprayhound

GitHub: Hackndo/sprayhound

一款集成 BloodHound 的 Active Directory 密码喷洒工具,能够在安全策略感知的前提下进行密码测试并自动标记已被攻陷的账户及其攻击路径。

Stars: 258 | Forks: 22

# SprayHound [![PyPI 版本](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&type=6&v=0.0.4&x2=0)](https://pypi.org/project/sprayhound/) [![Twitter](https://img.shields.io/twitter/follow/hackanddo?label=HackAndDo&style=social)](https://twitter.com/intent/follow?screen_name=hackanddo) ![示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1d9d9c3cc7160839.gif) 这是一个 Python 库,用于在 Active Directory 中安全地进行密码喷洒,在 Bloodhound 中将已被攻陷的用户标记为 Owned,并检测通往 Domain Admins 的路径。 该库使用 [ldap3](https://ldap3.readthedocs.io) 项目进行所有 LDAP 操作。 | 章节 | 描述 | |----------------------------------------------|---------------------------------------------------------| | [前置条件](#requirements) | 安装 sprayhound 的前置条件 | | [警告](#warning) | 使用此工具前,请阅读此内容 | | [安装](#installation) | 安装说明 | | [用法](#usage) | 用法和命令行示例 | ## 前置条件 * Python >= 3.6 ## 警告 目前仅检查默认域策略。如果密码策略使用了自定义 GPO,将无法被检测到。此项功能仍在开发中。 ## 安装 ### 通过 pip ``` python3 -m pip install sprayhound ``` ### 通过源码 ``` sudo apt-get install libsasl2-dev python3-dev libldap2-dev libssl-dev git clone git@github.com:Hackndo/sprayhound.git cd sprayhound python3 setup.py install ``` ## 用法 ### 参数 ``` $ sprayhound -h usage: sprayhound [-h] [-u USERNAME] [-U USERFILE] [-p PASSWORD | --lower | --upper] [-t THRESHOLD] [-dc DOMAIN_CONTROLLER] [-d DOMAIN] [-lP LDAP_PORT] [-lu LDAP_USER] [-lp LDAP_PASS] [-lssl] [-lpage LDAP_PAGE_SIZE] [-nh NEO4J_HOST] [-nP NEO4J_PORT] [-nu NEO4J_USER] [-np NEO4J_PASS] [--unsafe] [--force] [--nocolor] [-v] sprayhound v0.0.1 - Password spraying optional arguments: -h, --help show this help message and exit --unsafe Enable login tries on almost locked out accounts --force Do not prompt for user confirmation --nocolor Do not use color for output -v Verbosity level (-v or -vv) credentials: -u USERNAME, --username USERNAME Username -U USERFILE, --userfile USERFILE File containing username list -p PASSWORD, --password PASSWORD Password --lower User as pass with lowercase password --upper User as pass with uppercase password -t THRESHOLD, --threshold THRESHOLD Number of password left allowed before locked out ldap: -dc DOMAIN_CONTROLLER, --domain-controller DOMAIN_CONTROLLER Domain controller -d DOMAIN, --domain DOMAIN Domain FQDN -lP LDAP_PORT, --ldap-port LDAP_PORT LDAP Port -lu LDAP_USER, --ldap-user LDAP_USER LDAP User -lp LDAP_PASS, --ldap-pass LDAP_PASS LDAP Password -lssl, --ldap-ssl LDAP over TLS (ldaps) -lpage LDAP_PAGE_SIZE, --ldap-page-size LDAP_PAGE_SIZE LDAP Paging size (Default: 200) neo4j: -nh NEO4J_HOST, --neo4j-host NEO4J_HOST Neo4J Host (Default: 127.0.0.1) -nP NEO4J_PORT, --neo4j-port NEO4J_PORT Neo4J Port (Default: 7687) -nu NEO4J_USER, --neo4j-user NEO4J_USER Neo4J user (Default: neo4j) -np NEO4J_PASS, --neo4j-pass NEO4J_PASS Neo4J password (Default: neo4j) ``` ### 未认证 在未认证的情况下使用时,**sprayhound** 将无法检查密码策略。账户可能会被锁定。 ``` # 单用户,单密码 sprayhound -u simba -p Pentest123.. -d hackn.lab -dc 10.10.10.1 # 用户列表,单密码 sprayhound -U ./users.txt -p Pentest123.. -d hackn.lab -dc 10.10.10.1 # 用户作为密码 sprayhound -U ./users.txt -d hackn.lab -dc 10.10.10.1 # 用户作为密码且密码小写 sprayhound -U ./users.txt --lower -d hackn.lab -dc 10.10.10.1 # 用户作为密码且密码大写 sprayhound -U ./users.txt --upper -d hackn.lab -dc 10.10.10.1 ``` ### 已认证 当提供有效的域账户时,**sprayhound** 将尝试查找默认域策略,并根据锁定阈值检查每个用户的 **badpwdcount** 属性。如果该值接近锁定阈值,将跳过这些账户。 ``` # 单用户,单密码 sprayhound -u simba -p Pentest123.. -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd # 所有域用户,单密码 sprayhound -p Pentest123.. -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd # 所有域用户,单密码,使用来自受信任域的账户 sprayhound -p Pentest123.. -d hackn.lab -dc 10.10.10.1 -lu 'babdcatha.net\Babd' -lp P4ssw0rd # 所有域用户的用户作为密码 sprayhound -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd # 用户作为密码且密码小写 sprayhound --lower -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd # 用户作为密码且密码大写 sprayhound --upper -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd ``` **badpwdcount** 与锁定阈值之间的差值可以通过 `--threshold` 参数进行调整。如果设置为 **2**,且密码策略在 5 次登录失败后锁定账户,那么 **sprayhound** 将不会测试 **badpwdcount** 为 3(或以上)的用户。 ``` sprayhound -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd --threshold 1 ``` ## Bloodhound 集成 当 **sprayhound** 发现账户凭据时,它可以在 BloodHound 中将这些账户设置为 **Owned**。需要为此工具提供 BloodHound 的相关信息。 ``` # -nh: Neo4J 服务器 # -nP: Neo4J 端口 # -nu: Neo4J 用户 # -np: Neo4J 密码 sprayhound -d hackn.lab -dc 10.10.10.1 -lu pixis -lp P4ssw0rd -nh 127.0.0.1 -nP 7687 -nu neo4j -np bloodhound ``` ## 更新日志 ``` v0.0.2 ------ First release ```
标签:Active Directory, Bloodhound, Checkov, CTF学习, LDAP, Plaso, Python, 内网渗透, 协议分析, 口令安全, 域渗透, 域管, 密码喷射, 密码爆破, 无后门, 权限提升, 活动目录, 电子数据取证, 目录服务, 网络安全, 逆向工具, 隐私保护