渗透测试MCP服务器

一个生产就绪的模型上下文协议(MCP)服务器,使AI代理能够通过SSH在任何Linux发行版上执行自主渗透测试,具有持久会话管理、智能触发器和自动重连功能。

  • by LayeSec006
  • Python
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 LayeSec006/pentest-mcp-server

使用说明

渗透测试MCP服务器

A. 已准备好投入生产 模型上下文协议(MCP)服务器,使AI代理能够执行自主渗透测试 任何Linux发行版 通过SSH访问。构建于持久的tmux会话、智能触发器、自动重连和全面的资源管理之上。

🚀 关键区别点: 与其他独立运行命令的MCP服务器不同,这台服务器提供 持久会话管理 使用tmux,可以实现复杂的交互式工作流程和长时间运行的操作。

📋 目录

👤 连接

🎥(电影胶片或视频播放的符号,无具体文字含义,可理解为“电影”或“视频”) 视频教程: 在YouTube上观看完整教程

领英(LinkedIn): 阿卜杜拉·恩迪亚耶

🖼️ 截图

🎯(靶心) 核心能力

这个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@<TARGET_HOST>

# 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中:

  1. 点击 工具 在主界面
  2. 点击 本地 按钮
  3. 填写“编辑工具(本地服务器)”表单:
    • 工具键: 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
  4. 审查/回顾 配置预览 以确保它是正确的
  5. 点击 保存
  6. 启用该工具: 将鼠标悬停在 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:

```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"
      }
    }
  }
}
  1. 点击 保存
  2. 重启扭曲(或:重新开始扭曲)

🔧 快速设置

设置步骤

# 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)
  2. 网页应用扫描 (gobuster,nikto,dirb)
  3. 漏洞利用 (Metasploit,自定义漏洞利用程序)
  4. 实施漏洞利用 (Meterpreter,权限提升)
  5. 数据外泄 (文件操作,隧道技术)

🛡️ 会话持久性与恢复

会话能够抵御网络中断和崩溃:

{
  "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. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支(git checkout -b feature/amazing-feature)
  3. 运行测试(python -m pytest tests/)
  4. 提交更改(git commit -m 'Add amazing feature')
  5. 推送到分支(git push origin feature/amazing-feature)
  6. 提交一个拉取请求

开发环境设置

git clone <your-fork>
cd pentest_mcp_server
pip install -e .
pip install pytest pytest-asyncio pytest-mock

📝 许可证

这个项目采用MIT许可证授权——详见 许可证 文件中有详细信息。

⚠️ 法律免责声明

此工具仅供授权的安全测试和教育用途。用户有责任在使用此工具针对任何系统之前,确保已获得适当的授权。开发者对因使用此工具而造成的任何滥用或损害不承担责任。

🙏 致谢


快乐地进行渗透测试! 🔒🔓 翻译为中文是:上锁 开锁