strikoder/CredSpray

GitHub: strikoder/CredSpray

CredSpray 是一个基于 NetExec 的 bash 工具,用于自动化多协议凭据喷洒和验证,简化渗透测试中的凭据测试工作。

Stars: 26 | Forks: 3

# CredSpray
![credspray](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/72651e315c132142.jpg) **面向渗透测试的多协议凭据验证工具** [![Version](https://img.shields.io/badge/Version-1.0.0-yellow.svg)](https://opensource.org/licenses/MIT) [![NetExec](https://img.shields.io/badge/requires-NetExec-blue.svg)](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 ``` ## 使用方法
searching usage results
``` 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) ``` ## 社区反馈

Credspray

## 致谢 - [NetExec](https://github.com/Pennyw0rth/NetExec) - 驱动 CredSpray 的强大网络协议测试工具。查阅 [NXC 速查表](https://gist.github.com/strikoder/99635df00444bbf5fc90ca83ec8051a0) - OSCP/CTF 社区 - 激发了实用的渗透测试工具开发