内容
<p align="center">
<img src="docs/logo.png" alt="RedHands Logo" width="250" height="250"/>
</p>
<h1 align="center">RedHands</h1>
<p align="center">
<strong>适用于进攻性安全工具的企业级MCP服务器</strong>
</p>
<p align="center">
<a href="https://github.com/yasindce1998/redhands/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/yasindce1998/redhands/ci.yml?style=flat-square&logo=github&logoColor=white&label=CI&color=00c853" alt="CI"></a>
<a href="https://go.dev/"><img src="https://img.shields.io/badge/Go-1.26+-00ADD8?style=flat-square&logo=go&logoColor=white" alt="Go 1.26+"></a>
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-Compatible-ff2d2d?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzIi8+PC9zdmc+" alt="MCP Compatible"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-bf5fff?style=flat-square" alt="License: MIT"></a>
<a href="https://github.com/yasindce1998/redhands"><img src="https://img.shields.io/badge/Tools-125-00fff2?style=flat-square" alt="125 Tools"></a>
</p>
<p align="center">
使用Go语言构建,零外部依赖。多传输(stdio/SSE/WebSocket),工具链,<br/>
结构化解析,报告生成,插件系统,速率限制,缓存和审计日志。
</p>
```
go install github.com/yasindce1998/redhands/cmd/redhands@latest
```
## 快速开始
### 一键安装(Linux/macOS)
```bash
curl -fsSL https://raw.githubusercontent.com/yasindce1998/redhands/main/scripts/install.sh | bash
```
下载 `redhands` 二进制文件并打印MCP配置说明。 要安装安全工具:
```bash
curl -fsSL https://raw.githubusercontent.com/yasindce1998/redhands/main/scripts/install.sh | bash -s -- --with-tools --profile=web
```
### 从源码安装
```bash
git clone https://github.com/yasindce1998/redhands.git && cd redhands
make build
sudo make install
# 安装安全工具依赖(选择一个配置文件)
sudo make install-tools PROFILE=minimal # nmap, nuclei, httpx, subfinder
sudo make install-tools PROFILE=web # web评估工具
sudo make install-tools PROFILE=network # 网络/基础设施工具
sudo make install-tools PROFILE=ad # Active Directory工具
sudo make install-tools PROFILE=k8s # Kubernetes进攻工具
sudo make install-tools PROFILE=uefi # UEFI引导程序模拟
sudo make install-tools PROFILE=all # 所有工具
# 检查已安装的内容
make check-deps
```
### Windows(PowerShell)
```powershell
git clone https://github.com/yasindce1998/redhands.git; cd redhands
go build -o bin\redhands.exe .\cmd\redhands
# 安装工具依赖
.\scripts\install-tools.ps1 -Profile web
.\scripts\install-tools.ps1 -Check # 显示已安装/缺失的工具
```
### MCP配置
将以下内容添加到您的MCP客户端配置文件中:
**Claude Code** (`~/.claude/claude_desktop_config.json`), **Cursor** (`.cursor/mcp.json`), **VS Code** (`.vscode/mcp.json`):
```json
{
"mcpServers": {
"redhands": {
"command": "redhands"
}
}
}
```
### 运行
```bash
# stdio(默认,适用于MCP客户端)
redhands
# SSE传输(远程/团队使用)
REDHANDS_TRANSPORT=sse REDHANDS_SSE_ADDR=:8080 redhands
# WebSocket传输
REDHANDS_TRANSPORT=ws REDHANDS_WS_ADDR=:8081 redhands
# Docker(所有工具预安装)
docker compose up
```
### 安装配置文件
| 配置文件 | 包含工具 | 用例 |
|---------|---------------|----------|
| `minimal` | nmap, subfinder, httpx, nuclei | 快速侦察和扫描 |
| `web` | minimal + ffuf, katana, nikto, sqlmap, feroxbuster | Web应用程序测试 |
| `network` | minimal + masscan, rustscan, tshark, chisel, ligolo | 网络/基础设施 |
| `ad` | minimal + impacket, certipy, crackmapexec, hashcat, john | Active Directory攻击 |
| `k8s` | nmap, kubedagger-client, kubedagger-operator | Kubernetes进攻(eBPF)|
| `uefi` | barzakh-adversary, barzakh-scanner | UEFI引导程序攻击模拟 |
| `recon` | minimal + amass, gau, waybackurls, arjun, whatweb | 深度侦察 |
| `all` | 所有工具 | 完整的进攻性工具包 |
## 要求
- Go 1.26+(从源码构建)
- 安全工具在PATH中(通过上述脚本、Docker或手动安装)
## 可用工具
### Nmap(工具集:`nmap`)
| 工具 | 描述 |
|------|-------------|
| `nmap_port_scan` | TCP/UDP端口扫描(SYN,connect,UDP)|
| `nmap_service_detect` | 服务和版本检测(-sV)|
| `nmap_os_detect` | 操作系统指纹识别(-O)|
| `nmap_vuln_scan` | NSE漏洞脚本 |
### 侦察(工具集:`recon`)
| 工具 | 描述 |
|------|-------------|
| `subfinder_enum` | 从被动源进行子域名枚举 |
| `amass_enum` | 网络映射和ASN发现(OWASP Amass)|
| `dns_lookup` | 通过dig进行DNS记录查询(A,AAAA,MX,NS,TXT等)|
| `waybackurls` | 从Wayback Machine获取存档URL |
| `gau_urls` | 从AlienVault OTX,Wayback,CommonCrawl,URLScan获取URL |
| `arjun_discover` | HTTP参数发现(隐藏的GET/POST参数)|
### Web(工具集:`web`)
| 工具 | 描述 |
|------|-------------|
| `httpx_probe` | 具有技术检测的HTTP服务探测 |
| `katana_crawl` | 下一代网页爬虫(JS爬虫,headless)|
| `nikto_scan` | Web服务器漏洞扫描器 |
| `whatweb_fingerprint` | Web技术指纹识别 |
| `testssl_scan` | TLS/SSL加密测试 |
### 模糊测试(工具集:`fuzz`)
| 工具 | 描述 |
|------|-------------|
| `ffuf_fuzz` | Web模糊测试(目录,参数,虚拟主机)|
| `gobuster_dir` | 目录/文件强行枚举 |
| `feroxbuster_scan` | 递归内容发现(强制浏览)|
### 扫描(工具集:`scan`)
| 工具 | 描述 |
|------|-------------|
| `masscan_scan` | 大规模端口扫描(10M pps)|
| `rustscan_scan` | 现代快速端口扫描器(所有65535个端口,几秒内)|
### 利用(工具集:`exploit`)
| 工具 | 描述 |
|------|-------------|
| `sqlmap_scan` | 自动SQL注入检测和利用 |
### 漏洞(工具集:`vuln`)
| 工具 | 描述 |
|------|-------------|
| `nuclei_scan` | 基于模板的漏洞扫描 |
### Impacket(工具集:`impacket`)
| 工具 | 描述 |
|------|-------------|
| `impacket_secretsdump` | 转储SAM/LSA/NTDS.dit机密 |
| `impacket_psexec` | 类似PsExec的远程执行 |
| `impacket_wmiexec` | 基于WMI的远程执行 |
| `impacket_smbclient` | SMB客户端操作 |
| `impacket_dcomexec` | DCOM远程执行 |
| `impacket_get_tgt` | 请求Kerberos TGT |
| `impacket_get_st` | 请求服务票(Kerberoast/委托)|
| `impacket_ntlmrelay` | NTLM中继攻击 |
### Sliver C2(工具集:`sliver`)
| 工具 | 描述 |
|------|-------------|
| `sliver_generate` | 生成植入物(mTLS,HTTP/S,DNS,WireGuard)|
| `sliver_listeners` | 管理C2监听器 |
| `sliver_sessions` | 列出/与会话交互 |
| `sliver_beacons` | 列出/与信标交互 |
| `sliver_execute` | 在植入物上执行命令 |
| `sliver_upload` | 上传文件到植入物 |
| `sliver_download` | 从植入物下载文件 |
| `sliver_pivot` | 枢轴设置和管理 |
| `sliver_portfwd` | 通过植入物进行端口转发 |
### 隧道(工具集:`tunnel`)
| 工具 | 描述 |
|------|-------------|
| `chisel_server` | 启动Chisel反向隧道端点 |
| `chisel_client` | Chisel客户端(转发/反向/SOCKS)|
| `ligolo_start` | 启动Ligolo-ng代理服务器 |
| `ligolo_route` | 添加通过Ligolo隧道的路由 |
| `ligolo_listener` | 管理Ligolo代理上的监听器 |
### 密码破解(工具集:`crack`)
| 工具 | 描述 |
|------|-------------|
| `hashcat_crack` | 破解哈希值(字典,规则,掩码)|
| `hashcat_benchmark` | 基准测试哈希类型 |
| `hashcat_show` | 显示从potfile中破解的内容 |
| `john_crack` | 使用John the Ripper破解密码 |
| `john_show` | 显示破解的密码 |
| `john_formats` | 列出支持的哈希格式 |
### CrackMapExec(工具集:`crackmapexec`)
| 工具 | 描述 |
|------|-------------|
| `cme_smb` | SMB枚举/执行/传递哈希 |
| `cme_winrm` | WinRM执行 |
| `cme_ldap` | LDAP枚举 |
| `cme_mssql` | MSSQL查询/执行 |
| `cme_ssh` | SSH凭证喷洒/执行 |
### Certipy(工具集:`certipy`)
| 工具 | 描述 |
|------|-------------|
| `certipy_find` | 查找AD CS模板和CA |
| `certipy_req` | 请求证书 |
| `certipy_auth` | 通过PKINIT认证 |
| `certipy_shadow` | 影子凭证攻击 |
| `certipy_forge` | 黄金证书伪造 |
| `certipy_relay` | NTLM中继到AD CS |
### tshark(工具集:`tshark`)
| 工具 | 描述 |
|------|-------------|
| `tshark_capture` | 捕获数据包(接口,过滤器,持续时间)|
| `tshark_read` | 读取pcap文件并显示过滤器 |
| `tshark_stats` | 协议统计 |
| `tshark_extract` | 从捕获中提取字段 |
| `tshark_follow` | 跟随TCP/UDP/HTTP流 |
### KubeDagger(工具集:`kubedagger`)
| 工具 | 描述 |
|------|-------------|
| 57个工具 | eBPF驱动的Kubernetes进攻性工具包(参见`tools/kubedagger/`)|
### Barzakh(工具集:`barzakh`)
| 工具 | 描述 |
|------|-------------|
| `barzakh_list` | 列出可用的UEFI引导程序有效载荷类型 |
| `barzakh_generate` | 为对手模拟生成UEFI引导程序有效载荷 |
| `barzakh_corpus` | 生成完整测试语料库的恶意/干净固件对 |
| `barzakh_scan` | 使用43个专用引导程序检测器扫描固件映像 |
### 系统
| 工具 | 描述 |
|------|-------------|
| `redhands_health` | 服务器健康检查和二进制依赖状态 |
## 传输
RedHands支持三种传输模式:
| 传输 | 用例 | 配置 |
|-----------|----------|--------|
| **stdio**(默认) | 本地使用Claude Code,Cursor,VS Code | `REDHANDS_TRANSPORT=stdio` |
| **SSE** | 通过HTTP进行远程/团队部署 | `REDHANDS_TRANSPORT=sse` + `REDHANDS_SSE_ADDR=:8080` |
| **WebSocket** | 实时双向(原始帧协议) | `REDHANDS_TRANSPORT=ws` + `REDHANDS_WS_ADDR=:8081` |
## 认证
| 模式 | 配置 | 描述 |
|------|--------|-------------|
| **none**(默认) | `REDHANDS_AUTH=none` | 无认证 |
| **API密钥** | `REDHANDS_AUTH=apikey` + `REDHANDS_API_KEY=<secret>` | `X-API-Key`头部验证 |
| **mTLS** | `REDHANDS_AUTH=mtls` + 证书/密钥/CA环境变量 | 客户端证书验证 |
## 工具链(工作流)
按顺序链接工具,并带有变量替换:
```json
{
"method": "workflow/run",
"params": {
"steps": [
{"tool": "nmap_port_scan", "params": {"target": "10.0.0.1"}},
{"tool": "nuclei_scan", "params": {"target": "$prev.text"}}
]
}
}
```
变量: `$prev.text`(上一步输出), `$step[N].text`(第N步输出)。
## 结构化输出解析
内置解析器支持常见工具输出格式:
- **Nmap XML** — 将 `-oX` 输出解析为结构化的主机/端口/服务
- **Nuclei JSON** — 将 JSONL 发现结果解析为按严重性分组的结果
- **Masscan JSON** — 将 `-oJ` 输出解析为主机/端口对
## 报告生成
从工作流结果生成报告:
```json
{
"method": "report/generate",
"params": {
"format": "markdown",
"data": { ... }
}
}
```
格式: `markdown`(.md)和 `html`(自包含,带有内联CSS)。
## 插件系统
通过JSON定义自定义工具,无需编写Go语言:
```json
{
"name": "custom_quick_scan",
"description": "快速nmap top-100扫描",
"binary": "nmap",
"args_template": ["-sS", "--top-ports", "100", "{{.target}}"],
"input_schema": {
"type": "object",
"properties": {
"target": {"type": "string", "description": "目标IP或主机名"}
},
"required": ["target"]
}
}
```
将JSON文件放入 `REDHANDS_PLUGINS_DIR`(默认为 `./plugins/`),它们将自动出现在 `tools/list` 中。
## 配置
所有设置均通过环境变量:
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `REDHANDS_TOOLSETS` | (所有) | 要启用的工具集的逗号分隔列表 |
| `REDHANDS_TIMEOUT` | `5m` | 每个工具调用的执行超时 |
| `REDHANDS_MAX_OUTPUT` | `10485760` | 每个执行的输出字节数最大值(10MB) |
| `REDHANDS_RATE_LIMIT` | `10` | 令牌桶补充率(请求/秒) |
| `REDHANDS_RATE_BURST` | `20` | 令牌桶突发容量 |
| `REDHANDS_CACHE_TTL` | `5m` | 结果缓存TTL |
| `REDHANDS_CACHE_SIZE` | `100` | 最大缓存结果(LRU逐出) |
| `REDHANDS_AUDIT_FILE` | `audit.jsonl` | 审计日志文件路径 |
| `REDHANDS_TRANSPORT` | `stdio` | 传输模式:`stdio`,`sse`或`ws` |
| `REDHANDS_SSE_ADDR` | `:8080` | SSE HTTP监听地址 |
| `REDHANDS_WS_ADDR` | `:8081` | WebSocket监听地址 |
| `REDHANDS_AUTH` | `none` | 认证模式:`none`,`apikey`或`mtls` |
| `REDHANDS_API_KEY` | — | API密钥(当auth=apikey时需要) |
| `REDHANDS_TLS_CERT` | — | TLS证书路径 |
| `REDHANDS_TLS_KEY` | — | TLS私钥路径 |
| `REDHANDS_TLS_CA` | — | 用于mTLS客户端验证的CA证书 |
| `REDHANDS_PLUGINS_DIR` | `./plugins` | JSON插件定义目录 |
### 工具集过滤
启用特定工具集:
```bash
# AD/内部评估
export REDHANDS_TOOLSETS=nmap,impacket,crackmapexec,certipy,sliver,crack
# 外部Web评估
export REDHANDS_TOOLSETS=nmap,recon,web,fuzz,scan,vuln
# 网络分析
export REDHANDS_TOOLSETS=nmap,scan,tshark,tunnel
# 所有工具(默认情况下未设置)
export REDHANDS_TOOLSETS=
```
## 安全
- **二进制允许列表** — 仅允许执行已知安全工具
- **Shell元字符拒绝** — 所有输入的Shell元字符
- **目标验证** — IP、域名、URL的严格格式检查
- **输出大小限制** — 每次执行10MB
- **执行超时** — 可配置的每个工具调用超时
- **速率限制** — 令牌桶防止滥用
- **认证** — 远程传输的API密钥或mTLS
- **完整审计轨迹** — 每个工具调用记录为JSONL
## 开发
```bash
make build # 构建二进制文件到bin/
make test # 运行带有竞争检测器的测试
make lint # 运行golangci-lint
make docker # 构建Docker镜像
make install # 将二进制文件安装到/usr/local/bin
make install-tools # 安装安全工具(PROFILE=minimal|web|network|ad|all)
make check-deps # 检查哪些工具可用
```
## Docker
```bash
# 构建和运行
docker build -t redhands .
docker run -i redhands
# 使用Docker Compose(SSE模式)
docker compose up
# 使用认证
REDHANDS_API_KEY=mysecret docker compose --profile secure up
```
Docker镜像包含所有支持的安全工具预安装:
- **apt**:nmap,masscan,tshark,hashcat,john,nikto,whatweb
- **pip**:impacket,certipy-ad,crackmapexec
- **Go工具**:subfinder,httpx,nuclei,ffuf,katana,gobuster,gau
- **发布**:chisel,ligolo-ng,kubedagger
## 许可证
MIT
## 免责声明
RedHands仅用于授权的安全测试、教育和研究目的。您在未经明确书面许可的情况下,将此工具用于任何系统、网络或应用程序,均为非法行为,并根据适用的法律(包括《计算机欺诈和滥用法》(CFAA)、《计算机滥用法》以及世界各地的同等立法)受到惩罚。RedHands的作者和贡献者不对因滥用或由该软件造成的任何损害负责。请负责任和合乎道德地使用。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器