


**模块化凭证喷洒工具,用于授权安全测试。**
使用原生 Python 库同时对 28 个协议进行凭证喷洒。指向网络,提供凭证,它会自动扫描端口、检测服务、发现域,并对其发现的所有内容测试身份验证。核心功能无需外部工具依赖。
## 快速开始
```
git clone https://github.com/Real-Fruit-Snacks/Rapids.git
cd Rapids
pipx install -e .
```
```
# 自动扫描端口,发现域名,测试所有检测到的服务
rapids -t 192.168.1.0/24 -u admin -p 'Password123'
# 从文件加载多个凭据
rapids -t 10.10.10.50 -C creds.txt
# 使用访问证明验证进行喷洒
rapids -t 192.168.1.100 -u admin -p 'Pass123' --verify
# 使用NT哈希进行传递哈希
rapids -t 10.10.10.50 -u administrator -p ':aad3b435b51404eeaad3b435b51404ee'
# 试运行 -- 预览将要测试的内容
rapids -t 192.168.1.0/24 -C creds.txt --dry-run
```
需要 Python 3.10+ 和 nmap 进行自动扫描。NetExec 可选,用于 `--nxc` 模式。
## 功能
### 28 个原生协议模块
每个协议都使用原生 Python 库实现 —— SMB/MSSQL/Kerberos 使用 impacket,SSH 使用 paramiko,WinRM 使用 pywinrm,数据库使用 pymysql/psycopg2/redis。不调用 CLI 工具意味着更快的执行和更丰富的错误处理。
```
rapids -t 10.0.0.5 -u admin -p pass -s smb,ssh,rdp
rapids -t 10.0.0.5 -u admin -p pass --nxc # Swap to NetExec modules
```
### 自动发现
将 Rapids 指向 IP 地址,它会自动运行 nmap 服务扫描。检测到的端口会映射到正确的模块,域通过 SMB 发现,不同端口上的 HTTP 端口会分开保留(不会对 Web 应用进行去重)。
### 自适应跳过
跟踪每个端点和每个主机的超时情况。某个端口连续 3 次超时后,该端点会被跳过。某个主机所有端口累计 5 次超时后,整个主机将被标记为不可达。
### 访问证明
使用 `--verify` 在成功认证后执行访问证明命令 —— 列出 SMB 共享、通过 WinRM 运行 `whoami`、查询数据库版本、获取 Redis 服务器信息。
### NT 哈希支持
跨 SMB、RDP、WinRM、MSSQL、LDAP 和 Kerberos 进行哈希传递。凭证可以是密码或 NT 哈希(以 `:` 开头)。哈希和密码凭证可以在凭证文件中自由混合。
### 双模块系统
每个支持的协议都有一个原生库模块和一个可选的 NetExec 包装器。使用 `--nxc` 切换到 NetExec 支持的模块,以获得更好的兼容性。
### 每服务超时
RDP 和 WinRM 连接本质上比 SSH 或 SMB 慢。Rapids 自动应用超时倍数 —— RDP 为 3 倍,WinRM/Kerberos 为 2 倍 —— 让慢速协议有足够的时间,而不会惩罚快速协议。
### 凭证掩码
使用 `--mask-creds` 在所有输出中隐藏密码,以便在实时渗透测试中安全地进行屏幕共享。
## 架构
```
rapids/
rapids.py # CLI entry point (Click)
core/
engine.py # SprayEngine -- ThreadPoolExecutor, adaptive skip
models.py # Target, Credential, SprayResult dataclasses
input_parser.py # Target/credential parsing, nmap XML, port scanning
output.py # Rich tables, banner, summary, JSON export
theme.py # Catppuccin Mocha color palette
modules/
base.py # ServiceModule abstract base class
nxc_base.py # NxcModule base (NetExec wrapper)
smb.py # impacket SMBConnection
ssh.py # paramiko
rdp.py # xfreerdp + nxc fallback + impacket CredSSP
winrm_mod.py # pywinrm (NTLM)
mssql.py # impacket TDS
mysql.py # pymysql
postgres.py # psycopg2
ldap_mod.py # ldap3
kerberos_mod.py # impacket getTGT
... # + 18 more native modules
nxc_smb.py # NXC wrapper modules (9 total)
...
```
每个模块都实现 `test_credential()` 用于认证,`verify_access()` 用于访问证明。喷洒引擎通过 ThreadPoolExecutor(默认 10 线程)处理并发、自适应跳过和结果收集。
| 层级 | 技术 |
|-------|------------|
| 语言 | Python 3.10+ |
| CLI | Click |
| AD 协议 | impacket (SMB, MSSQL, Kerberos, RDP) |
| SSH | paramiko |
| WinRM | pywinrm |
| 数据库 | pymysql, psycopg2, redis-py, pymongo, oracledb |
| 输出 | Rich (Catppuccin Mocha) |
| 扫描 | nmap (自动发现) |
## 命令参考
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-t, --target` | 目标 (IP, IP:port, IP:port:service, CIDR) | -- |
| `-T, --targets-file` | 目标文件(每行一个) | -- |
| `-n, --nmap` | 用于自动发现的 Nmap XML 文件 | -- |
| `-u, --user` | 单个用户名 | -- |
| `-p, --pass` | 单个密码或 NT 哈希(前缀 `:`) | -- |
| `-C, --creds` | 凭证文件(每行 user:pass) | -- |
| `-s, --services` | 要测试的逗号分隔服务 | 全部 |
| `-w, --threads` | 并发线程数 | `10` |
| `--timeout` | 连接超时(秒) | `5` |
| `--delay` | 尝试之间的延迟(秒) | `0.0` |
| `-d, --domain` | AD 协议的域(自动发现) | -- |
| `--verify` | 成功认证后运行访问证明 | -- |
| `--nxc` | 使用 NetExec 模块而非原生模块 | -- |
| `--mask-creds` | 在输出中掩码凭证 | -- |
| `--dry-run` | 预览而不发送流量 | -- |
| `-o, --output` | 将结果写入 JSON 文件 | -- |
### 凭证文件格式
```
# -C / --creds(每行一个用户名:密码)
admin:Password123
administrator:aad3b435b51404eeaad3b435b51404ee
sa:SQLServer2024!
# -U / --userfile(每行一个用户名)
admin
administrator
# -P / --passfile(每行一个密码/哈希)
Password123
:aad3b435b51404eeaad3b435b51404ee
```
## 平台支持
| 功能 | Linux | macOS | Windows |
|---------|-------|-------|---------|
| 核心喷洒引擎 | 完整 | 完整 | 完整 |
| 自动 nmap 扫描 | 完整 | 完整 | 完整 |
| 原生模块 (28) | 完整 | 完整 | 完整 |
| NetExec 模块 | 完整 | 完整 | 部分 |
| RDP (xfreerdp) | 完整 | 完整 | -- |
| Evil-WinRM | 完整 | 完整 | -- |
| Catppuccin 主题 | 完整 | 完整 | 完整 |
## 安全
通过 [SECURITY.md](SECURITY.md) 或 GitHub 安全公告报告漏洞。请勿就安全问题公开发布 issue。
Rapids **不会**:
- 存储或缓存超出当前会话的凭证
- 从已认证服务中窃取数据
- 利用漏洞(仅测试凭证有效性)
- 绕过网络访问控制或防火墙
- 在目标系统上持久化
## 许可证
[MIT](
标签:impacket, paramiko, Pass-the-Hash, PoC, PostgreSQL, Python安全工具, pywinrm, Redis, SMB, SNMP, SSH, WinRM, 云存储安全, 凭据复用, 凭证喷洒, 域渗透, 密码喷射, 工业互联网, 数据统计, 暴力破解, 服务发现, 横向移动, 电子数据取证, 端口扫描, 编程规范, 网络安全, 网络扫描, 逆向工具, 错误配置检测, 隐私保护