渗透测试MCP服务器
  
A. 已准备好投入生产 模型上下文协议(MCP)服务器,使AI代理能够执行自主渗透测试 任何Linux发行版 通过SSH访问。构建于持久的tmux会话、智能触发器、自动重连和全面的资源管理之上。
🚀 关键区别点: 与其他独立运行命令的MCP服务器不同,这台服务器提供 持久会话管理 使用tmux,可以实现复杂的交互式工作流程和长时间运行的操作。
📋 目录
👤 连接
🎥(电影胶片或视频播放的符号,无具体文字含义,可理解为“电影”或“视频”) 视频教程: 在YouTube上观看完整教程
领英(LinkedIn): 阿卜杜拉·恩迪亚耶
🖼️ 截图
Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4
🎯(靶心) 核心能力
这个MCP服务器为AI代理提供 持久会话控制 通过SSH在任何Linux发行版上启用:
- 🌍 全球通用兼容性与Kali Linux、Parrot Security、BackBox以及任何Linux发行版兼容
- 🔓 零工具限制在目标系统上运行任何已安装的工具——无限制
- 🔄 持久会话基于Tmux的会话,能够抵御断开连接和崩溃
- 🤖 智能自动化基于输出模式和触发条件的AI暂停/恢复功能
- ⚡ 自动重连使用指数退避策略的自动SSH重连
- 📊 资源管理智能限制并发的繁重操作
- 🎯 互动工具全面支持msfconsole、MySQL、反向Shell以及复杂工作流程
- 🛡️ 会话恢复在崩溃或网络问题后恢复所有会话
🎯(目标、靶心) 主要特点
我们的核心优势:
- 🔄 会话持久性会话在断开连接和崩溃后仍能保持
- 🎯 交互式工具支持处理msfconsole、反向Shell、复杂工作流程
- 🤖 智能自动化智能触发的AI暂停/恢复功能
- ⚡ 自动重连自动从网络问题中恢复
- 📊 资源管理智能限制和系统监控
- 🌍 通用兼容性兼容任何Linux发行版
💡 优势: 我们的服务器提供 持久会话管理 这使得能够执行复杂的、多步骤的渗透测试工作流,并提供全面的交互式工具支持。
🎯(瞄准目标) 实际影响
这所能实现的是:
- 复杂的工作流程跨数小时的多步骤渗透测试操作
- 交互式工具完全的Metasploit自动化,反向Shell管理
- 会话持久性长时间运行的扫描,能够抵御网络问题
- 资源管理对并发操作的智能限制
- 通用部署适用于任何Linux发行版
用例:
- 红队行动自动化侦察与利用
- CTF挑战赛复杂的多步骤问题解决
- 安全研究长期持续的漏洞评估
- AI辅助渗透测试重复性任务的智能自动化
🏗️ 建筑学
┌─────────────────────┐
│ AI Agent │
│ (Claude/ChatGPT) │
└──────────┬──────────┘
│ MCP Protocol
▼
┌─────────────────────┐
│ MCP Server │
│ (Python) │
│ │
│ ┌───────────────┐ │
│ │Session Manager│ │
│ │Auto-Reconnect │ │
│ │Resource Mgmt │ │
│ └───────────────┘ │
└──────────┬──────────┘
│ SSH + PTY
▼
┌─────────────────────┐
│ Pentest System │
│ (Kali/Parrot/etc) │
│ │
│ ┌───────────────┐ │
│ │ tmux │ │
│ │ ┌─────────┐ │ │
│ │ │Session 1│ │ │
│ │ │Session 2│ │ │
│ │ │Session N│ │ │
│ │ └─────────┘ │ │
│ └───────────────┘ │
└─────────────────────┘🚀 快速入门
安装(5分钟)
# 1. Clone repository
git clone https://github.com/LayeSec006/pentest-mcp-server.git
cd pentest-mcp-server
# 2. Install package
pip install -e .
# 3. Configure
cp .env.example .env
# Edit .env with your pentesting os details
# 4. Install tmux on target system
ssh kali@
# For Debian/Ubuntu/Kali/Parrot:
sudo apt update && sudo apt install tmux
# For Arch/BlackArch:
sudo pacman -S tmux
# For RHEL/CentOS/Fedora:
sudo yum install tmux
# OR for newer versions:
sudo dnf install tmux
# For Alpine Linux:
sudo apk add tmux
exit
# 5. Test
python -m pytest tests/ -v配置
创建一个 .env 附上您的目标系统详细信息文件:
# SSH Connection
TARGET_HOST=192.168.1.100
TARGET_PORT=22
TARGET_USER=kali
TARGET_PASSWORD=your_password
# OR use SSH key instead
# TARGET_SSH_KEY=/path/to/private/key
# Resource Limits
MAX_SESSIONS=20
MAX_HEAVY_TASKS=3
# Monitoring
POLL_INTERVAL=1.0
DEFAULT_TIMEOUT=300🤖 AI平台集成
Claude桌面集成
在您的Claude桌面配置中添加:
Windows: %APPDATA%\Claude\claude_desktop_config.json\ macOS:(可译为“苹果操作系统”或保持原样,因为“macOS”是苹果公司的专有名词,通常直接使用) ~/Library/Application Support/Claude/claude_desktop_config.json\ Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"pentest-mcp": {
"command": "python",
"args": ["-m", "pentest_mcp_server"],
"env": {
"TARGET_HOST": "192.168.1.100",
"TARGET_USER": "kali",
"TARGET_PASSWORD": "your_password"
}
}
}
}风帆冲浪集成
在你的风帆冲浪设置中添加:
{
"mcpServers": {
"pentest-mcp": {
"command": "python",
"args": ["-m", "pentest_mcp_server"],
"env": {
"TARGET_HOST": "192.168.1.100",
"TARGET_USER": "kali",
"TARGET_PASSWORD": "your_password"
}
}
}
}光标集成
在您的光标设置中添加:
{
"mcpServers": {
"pentest-mcp": {
"command": "python",
"args": ["-m", "pentest_mcp_server"],
"env": {
"TARGET_HOST": "192.168.1.100",
"TARGET_USER": "kali",
"TARGET_PASSWORD": "your_password"
}
}
}
}5ire Integration(注:这里的“5ire”可能是特定品牌、项目或公司的名称,直接翻译为中文时保持原样,因为没有具体的上下文来确定其准确含义,所以翻译为“5ire整合”或根据具体语境可能需要调整为更合适的名称或解释)
在5ire中:
- 点击 工具 在主界面
- 点击 本地 按钮
- 填写“编辑工具(本地服务器)”表单:
- 工具键: pentest-mcp - 姓名: Pentest MCP (可选) - 描述: AI-powered penetration testing server (可选) - 审批政策: 选择 Always (推荐) - 命令: python -m pentest_mcp_server - 环境变量: - TARGET_HOST = 192.168.1.100 - TARGET_USER = kali - TARGET_PASSWORD = your_password
- 审查/回顾 配置预览 以确保它是正确的
- 点击 保存
- 启用该工具: 将鼠标悬停在
pentest-mcp在工具列表中找到该项并点击 切换按钮 出现在右侧以启用它
### Warp AI Integration
In Warp terminal:
1. Go to **Settings** (⌘ + ,)
2. Click on **AI** in the sidebar
3. Scroll down to find **Manage MCP**
4. Click **Add MCP**
5. Paste this JSON configuration:
{ "mcpServers": { "pentest-mcp": { "command": "python", "args": ["-m", "pentest_mcp_server"], "env": { "TARGET_HOST": "192.168.1.100", "TARGET_USER": "kali", "TARGET_PASSWORD": "your_password" } } } }
6. 点击 **保存**
1. 重启扭曲(或:重新开始扭曲)
## 🔧 快速设置
### 设置步骤
1. Clone and install
git clone https://github.com/LayeSec006/pentest-mcp-server.git cd pentest-mcp-server pip install -e .
2. Configure
cp .env.example .env
Edit .env with your target system details
3. Test configuration
python -c "from pentest_mcp_server.config import Config; c = Config(); print('Config loaded:', c.TARGET_HOST)"
## 🚀 高级功能
### 🎯 交互式工具支持
启动并与Metasploit Framework等复杂工具进行交互:
{ "tool": "execute", "args": { "session_id": "msf_session", "command": "msfconsole -q" } }
与运行中的工具进行交互:
{ "tool": "send_input", "args": { "session_id": "msf_session", "input": "use exploit/multi/handler" } }
### 🔄 反向Shell管理
无缝处理传入的反向Shell:
{ "tool": "execute", "args": { "session_id": "reverse_shell", "command": "nc -lvp 4444" } }
与连接的外壳进行交互:
{ "tool": "send_input", "args": { "session_id": "reverse_shell", "input": "whoami" } }
### 📊 复杂工作流自动化
支持多步骤渗透测试工作流程:
1. **网络侦察** (nmap,masscan)
1. **网页应用扫描** (gobuster,nikto,dirb)
1. **漏洞利用** (Metasploit,自定义漏洞利用程序)
1. **实施漏洞利用** (Meterpreter,权限提升)
1. **数据外泄** (文件操作,隧道技术)
### 🛡️ 会话持久性与恢复
会话能够抵御网络中断和崩溃:
{ "tool": "recover_sessions", "args": {} }
**主要优势:**
- 即使SSH连接断开,会话仍会继续运行
- 自动重连,采用指数退避策略
- 网络问题中的状态保持
- 交互会话的完全恢复
## 🛠️ MCP 工具
### 会话管理
| 工具 | 描述 | 目的 |
|------|-------------|----------|
| `create_session` | 创建新的持久tmux会话 | 为渗透测试任务启动独立的工作空间 |
| `list_sessions` | 列出所有活动会话 | 监控运行中的操作 |
| `kill_session` | 终止特定会话 | 清理已完成的任务 |
#### `create_session`
为隔离的渗透测试操作创建一个新的持久tmux会话。
**参数:**
{ "session_id": "scan_network", "shell": "bash" }
#### `list_sessions`
列出所有活动的tmux会话及其状态。
**参数:**
{}
#### `kill_session`
终止特定会话并清理资源。
**参数:**
{ "session_id": "scan_network" }
### 命令执行
| 工具 | 描述 | 目的 |
|------|-------------|----------|
| `execute` | 在持久会话中执行命令 | 运行渗透测试工具和脚本 |
| `read_output` | 获取会话的当前输出 | 监控命令进度和结果 |
| `send_input` | 向交互式工具发送输入 | 控制交互式应用程序 |
#### `execute`
在持久会话中执行命令。
{ "session_id": "scan_network", "command": "nmap -sV 192.168.1.0/24", "background": false }
#### `read_output`
从会话中获取当前输出。
{ "session_id": "scan_network", "lines": 50 }
#### `send_input`
将输入发送到交互式工具。
{ "session_id": "msf_session", "input": "use exploit/multi/handler", "press_enter": true }
### 系统管理
#### `get_system_status`
获取系统资源使用情况和会话状态。
{}
#### `recover_sessions`
重新连接后恢复孤立会话。
{}
### 文件操作
#### `upload_file`
通过SFTP将文件上传到您的系统。
{ "local_path": "/path/to/local/file", "remote_path": "/tmp/uploaded_file" }
#### `download_file`
通过SFTP从您的系统中下载文件。
{ "remote_path": "/tmp/scan_results.xml", "local_path": "/path/to/local/results.xml" }
### 工具输出解析
#### `parse_tool_output`
解析常见的渗透测试工具输出(如nmap的XML、JSON等)。
{ "tool": "nmap", "file_path": "/tmp/scan.xml", "format": "xml" }
## 💡 使用示例
### 基本网络扫描
AI: I need to scan the network 192.168.1.0/24
Tool: create_session Args: {"session_id": "network_scan"}
Tool: execute Args: { "session_id": "network_scan", "command": "nmap -sV 192.168.1.0/24 -oX /tmp/scan.xml" }
Tool: read_output Args: {"session_id": "network_scan"}
### 交互式Metasploit使用
AI: Let me start Metasploit and set up a handler
Tool: create_session Args: {"session_id": "metasploit"}
Tool: execute Args: { "session_id": "metasploit", "command": "msfconsole -q" }
Tool: send_input Args: { "session_id": "metasploit", "input": "use exploit/multi/handler" }
Tool: send_input Args: { "session_id": "metasploit", "input": "set PAYLOAD linux/x64/meterpreter/reverse_tcp" }
Tool: send_input Args: { "session_id": "metasploit", "input": "exploit" }
### 并行操作
AI: I'll run multiple scans in parallel
Tool: create_session Args: {"session_id": "nmap_scan"}
Tool: create_session Args: {"session_id": "gobuster_scan"}
Tool: execute Args: { "session_id": "nmap_scan", "command": "nmap -p- 192.168.1.5", "background": true }
Tool: execute Args: { "session_id": "gobuster_scan", "command": "gobuster dir -u http://192.168.1.5 -w /usr/share/wordlists/dirb/common.txt", "background": true }
## 🔒 安全功能
### 命令过滤(可选)
服务器可以选择性地阻止危险命令:
- `rm -rf /` - 从根目录递归删除
- `dd if=...of=/dev/sd*` - 磁盘擦除命令
- `mkfs` - 文件系统格式化
- 叉炸弹和其他破坏性模式
## 🧪 测试
运行测试套件:
Install test dependencies
pip install pytest pytest-asyncio pytest-mock
Run tests
python -m pytest tests/ -v
Run with coverage
python -m pytest tests/ --cov=pentest_mcp_server --cov-report=html
### 测试类别
- **单元测试**单个组件测试
- **集成测试**端到端工作流程测试
- **连接测试**SSH和重新连接场景
- **会话测试**Tmux 会话管理
## 📊 监控与调试
### 记录日志
服务器提供详细的日志记录:
import logging logging.basicConfig(level=logging.INFO)
日志级别:
- `INFO`连接状态,会话创建/销毁
- `WARNING`重新连接尝试,被阻止的命令
- `ERROR`连接失败,命令错误
- `DEBUG`详细的协议消息
### 系统状态
使用 `get_system_status` 监控工具:
- CPU和内存使用情况
- 活跃会话数
- 连接状态健康
- 最近的命令历史
### 会话恢复
在崩溃或网络问题之后:
Tool: recover_sessions Args: {}
Response: { "status": "success", "recovered_sessions": [ { "session_id": "network_scan", "age_seconds": 1800, "last_output": "...Nmap scan report..." } ] }
## 🔧 高级配置
### 资源管理
Limit concurrent heavy operations
MAX_HEAVY_TASKS=3
Heavy commands that count against the limit
HEAVY_COMMANDS=nmap,masscan,hydra,john,hashcat,sqlmap
### 连接调优
Reconnection settings
MAX_RECONNECT_ATTEMPTS=5 RECONNECT_DELAY_BASE=2 # Exponential backoff base
Health check interval
POLL_INTERVAL=1.0
Default command timeout
DEFAULT_TIMEOUT=300
### Tmux 自定义设置
Custom tmux socket name
TMUX_SOCKET_NAME=mcp-pentest
Session persistence location
TMUX_SESSION_PATH=/tmp/mcp-sessions
## 🐞 故障排除
### 常见问题
**连接被拒绝**
Error: Connection failed: [Errno 111] Connection refused
- 验证您的系统上是否正在运行SSH: `service ssh status`
- 检查防火墙规则: `ufw status`
- 验证配置中的主机/端口
**认证失败**
Error: Permission denied (publickey,password)
- 验证用户名/密码是否正确
- 检查SSH密钥权限(600)
- 启用密码认证: `PasswordAuthentication yes` 在 `/etc/ssh/sshd_config`
**未找到 Tmux**
Error: tmux is not installed on target system
- 在你的发行版上安装tmux: `apt update && apt install tmux`
**会话丢失**
Error: Session 'scan_network' does not exist
- 使用 `recover_sessions` 用于查找孤儿会话的工具
- 检查系统是否已重启(会话不会在重启后保留)
### 调试模式
启用详细日志记录:
import logging logging.getLogger('pentest_mcp_server').setLevel(logging.DEBUG) logging.getLogger('asyncssh').setLevel(logging.DEBUG)
## 🤝 贡献(或“参与贡献”)
1. 为仓库创建分支(或:克隆仓库)
1. 创建一个特性分支(`git checkout -b feature/amazing-feature`)
1. 运行测试(`python -m pytest tests/`)
1. 提交更改(`git commit -m 'Add amazing feature'`)
1. 推送到分支(`git push origin feature/amazing-feature`)
1. 提交一个拉取请求
### 开发环境设置
git clone cd pentest_mcp_server pip install -e . pip install pytest pytest-asyncio pytest-mock
## 📝 许可证
这个项目采用MIT许可证授权——详见 [许可证](LICENSE) 文件中有详细信息。
## ⚠️ 法律免责声明
此工具仅供授权的安全测试和教育用途。用户有责任在使用此工具针对任何系统之前,确保已获得适当的授权。开发者对因使用此工具而造成的任何滥用或损害不承担责任。
## 🙏 致谢
- 基于 [t-suganuma/ssh-connect-mcp-server 翻译为中文是:“t-suganuma/通过SSH连接MCP服务器”](https://github.com/t-suganuma/ssh-connect-mcp-server)
- 使用……构建 [asyncssh(注:这是一个专有名词,通常指一个异步SSH库或工具,直接音译为“异步SSH”可能不够准确,具体翻译需根据上下文或该工具的官方中文名称来确定,但在此处仅提供音译作为参考)](https://asyncssh.readthedocs.io/) 以实现更优的SSH处理
- 用途 [tmux](https://github.com/tmux/tmux) 对于持久会话
- 实施(措施/计划等) [模型上下文协议](https://modelcontextprotocol.io/) 规范(或规格)
______________________________________________________________________
**快乐地进行渗透测试! 🔒🔓 翻译为中文是:上锁 开锁**