strikoder/CredSpray
GitHub: strikoder/CredSpray
CredSpray 是一个基于 NetExec 的 bash 工具,用于自动化多协议凭据喷洒和验证,简化渗透测试中的凭据测试工作。
Stars: 26 | Forks: 3
# CredSpray
```
credspray.sh -t -u [-p ] [-H ] [-c ] [-a ] [--spray|--no-spray]
```
### 选项
| 选项 | 描述 |
|--------|-------------|
| `-t ` | 目标 IP 或主机名 **(必需)** |
| `-u ` | 用户名或包含用户名的文件 **(必需)** |
| `-p ` | 密码或仅包含密码的文件 |
| `-H ` | NTLM 哈希或仅包含哈希的文件 |
| `-c ` | 混合格式的组合文件(user:pass, user:hash 等) |
| `-a ` | 认证类型:`both`(默认)、`local`、`domain` |
| `--spray` | 喷洒模式:测试所有用户与所有密码的组合 **(默认)** |
| `--no-spray` | 无喷洒模式:配对凭据测试(user1:pass1, user2:pass2) |
### 重要说明
- 默认模式是**喷洒** - 使用 `--no-spray` 进行配对测试
- 默认认证模式为 **both**(域 + 本地)- 使用 `-a` 指定仅域或仅本地
## NXC 支持的协议
| 协议 | 端口 | 哈希支持 | 本地认证 |
|----------|------|--------------|------------|
| **SMB** | 445 | 是 | 是 |
| **WinRM** | 5985 | 是 | 是 |
| **RDP** | 3389 | 是 | 是 |
| **SSH** | 22 | 否 | 不适用 |
| **MSSQL** | 1433 | 是 | 是 |
| **LDAP** | 389 | 是 | 是 |
| **FTP** | 21 | 否 | 不适用 |
| **WMI** | 135 | 是 | 是 |
| **VNC** | 5900 | 否 | 是 |
| **NFS** | 2049 | 否 | 是 |
### 协议选择
运行脚本后,将提示您选择协议:
**示例:**
- `1,2,3` - 测试 SMB、WinRM 和 RDP
- `1-5` - 测试第 1 到第 5 个协议
- `all` - 测试所有可用协议
## 文件格式
### 用户文件 (users.txt)
```
administrator
strikoder
```
### 密码文件 (passwords.txt)
```
Password123!
Summer2024
```
### 哈希文件 (hashes.txt)
NTLM 哈希:
```
8846f7eaee8fb117ad06bdd830b7586c
32ed87bdb5fdc5e9cba88547376818d4
```
### 组合文件格式(-c 选项)
**喷洒模式** - 分别提取所有用户和所有凭据:
```
user1:password1 → extracts: user1, password1
user2:hash123... → extracts: user2, hash123...
user3: → extracts: user3 (no credential)
:orphan_password → extracts: orphan_password
standalone_username → extracts as username
:unknown_credential → smart detection (hash vs password)
```
**无喷洒模式** - 当同一文件用于 -u creds.txt -p creds.txt 时,配对凭据(跳过未配对的条目):
```
user1:password1 → tests: user1:password1
user2:hash123... → tests: user2:hash123...
user3: → SKIPPED (no credential)
:orphan_password → SKIPPED (no username)
standalone_username → SKIPPED (no credential)
```
## 社区反馈

**面向渗透测试的多协议凭据验证工具**
[](https://opensource.org/licenses/MIT)
[](https://github.com/Pennyw0rth/NetExec)
## 概述
**CredSpray** 是一个围绕 NetExec (nxc) 构建的 bash 封装脚本,旨在简化渗透测试过程中跨多个协议的凭据验证工作。它支持**喷洒模式**(针对所有用户测试所有密码)和**无喷洒模式**(配对凭据测试)。
非常适合 OSCP/CTF/CPTS/PNPT 环境、密码喷洒攻击、针对性凭据测试以及多协议枚举与结果整合。
## 功能特性
- **混合哈希/密码文件处理**:自动检测并分离组合文件中的哈希与密码
- **中断处理**:跳过当前测试(单次 Ctrl+C)或退出程序(连续两次 Ctrl+C)
- **喷洒与无喷洒模式**:测试所有组合或配对凭据
- **双重认证支持**:支持域和本地认证
- **多协议支持**:SMB, WinRM, RDP, SSH, MSSQL, LDAP, FTP, WMI, VNC, NFS
- **结果追踪**:自动保存成功的认证记录
- **故障排除提示**:内置错误检测与解决方案(参见[常见问题 Gist](https://gist.github.com/strikoder/ef708d34e98d8dc52daf5c64b39dc256))
## CTF/OSCP/CPTS/PNPT 应用场景与示例
### 常见场景
**场景 1:同一文件包含用户名和密码**
```
# 用于配对测试(将用户名作为密码进行喷射)
credspray.sh -t 192.168.1.100 -u usernames.txt -p usernames.txt --no-spray
```
**场景 2:发现不同格式的凭据、孤立哈希及用户**
```
# 创建包含所有发现的组合文件
vim findings.txt
admin:Password123
strikoder:8846f7eaee8fb117ad06bdd830b7586c
:Welcome2024
:8846f7eaee8fb117ad06bdd830b7586445
# 测试所有凭据对目标的有效性
credspray.sh -t 10.10.10.100 -u findings.txt -c findings.txt
```
**场景 3:使用常见密码进行密码喷洒**
```
# 查看 NagoyaSpray 以获取常见密码列表
# https://github.com/strikoder/NagoyaSpray
# 跨所有协议进行喷射
credspray.sh -t 10.10.10.100 -u users.txt -p nagoyapasswords.txt
```
## 安装
### 前置条件
**NetExec (nxc)** - 凭据测试所必需
```
pip install netexec
```
### 安装 CredSpray
**手动安装**
```
# 克隆该仓库
git clone https://github.com/strikoder/CredSpray.git
cd CredSpray
# 使脚本可执行
chmod +x credspray.sh
# 可选:移动到系统路径
sudo cp credspray.sh /usr/local/bin/credspray
```
## 使用方法