MCP技术:渗透测试从自动化到智能化

部署运行你感兴趣的模型镜像

在人工智能快速发展的今天,如何让AI更高效地与现实世界交互,成为许多开发者和研究者关注的焦点。MCP(Model Context Protocol)技术作为一种创新的工具集成方案,为AI提供了一种“双手”的能力,使其能够通过调用外部工具完成复杂任务。本文将展示在实际场景中的应用。

环境搭建

在开始构建MCP工具之前,我们需要先搭建一个稳定的工作环境。以下是详细的环境配置步骤:

初始化项目

首先,我们需要初始化一个项目目录,这将作为我们后续开发的基础。运行以下命令:

uv init dirsearch-mcp-server

这一步会创建一个名为dirsearch-mcp-server的目录,并初始化项目结构。

注:
uv 是一个挺全面的python依赖管理工具,但本人不用python做主力很久,略有生疏,按照大家的推荐也使用的uv。
这个项目名称原本是想用来连接dirsearch使用的,奈何环境问题一直搞不定,遂怒,决定使用 go run main.go 运行自编写的go程序,环境报错,亦怒, 直接 go build 编译执行。

创建Python虚拟环境

为了确保开发环境的隔离性和稳定性,我们使用Python虚拟环境。进入项目目录后,运行以下命令:

cd dirsearch-mcp-server
uv venv

这将创建一个名为.venv的虚拟环境,所有依赖包都将安装在这个环境中,避免与其他项目产生冲突。

激活虚拟环境

激活虚拟环境是使用MCP工具的前提。根据你的操作系统,运行以下命令:

.venv\Scripts\activate

激活后,你的命令行提示符会显示(venv),表示虚拟环境已成功激活。

安装依赖

接下来,我们需要安装MCP的依赖包。运行以下命令:

uv add mcp[cli]

这将安装MCP的核心库及其命令行接口(CLI),为后续开发提供支持。

创建MCP服务器:赋予AI执行能力

在环境配置完成后,我们可以开始创建一个MCP服务器。以下是具体的实现代码:

import subprocess  
import time  
from pathlib import Path  
  
from mcp.server.fastmcp import FastMCP  
  
# Initialize FastMCP server  
mcp = FastMCP("beian-query-server", log_level="ERROR")  
  
@mcp.tool()  
async def run_beian_query(domain: str, timeout: int = 300) -> dict:  
    """  
    执行备案信息查询工具  
  
    参数:  
        domain (str): 要查询的域名 (如 baidu.com)  
        timeout (int): 最大执行时间(秒)  
  
    返回:  
        dict: 包含执行结果的字典  
    """  
    start_time = time.time()  
    result = {  
        "status": "pending",  
        "command": "",  
        "returncode": None,  
        "stdout": "",  
        "stderr": "",  
        "duration": 0.0  
    }  
    try:  
        # 配置固定参数  
        target_dir = r"E:\Script\GoStore\RedTeam\tools\ToolsForBeian"  
        exe_path = str(Path(target_dir) / "beian.exe")    
        go_cmd = [exe_path, "info", "-i", domain]         
  
        # 验证环境  
        if not Path(exe_path).exists():  # 关键修改点3  
            raise FileNotFoundError(f"beian.exe not found in {target_dir}")  
  
        # 记录完整命令  
        result["command"] = " ".join(go_cmd)  
  
        # 执行命令  
        process = subprocess.run(  
            go_cmd,  
            cwd=target_dir,  
            stdout=subprocess.PIPE,  
            stderr=subprocess.PIPE,  
            timeout=timeout,  
            encoding='utf-8',  
            errors='replace'  
        )  
  
        # 记录结果  
        result.update({  
            "status": "success",  
            "returncode": process.returncode,  
            "stdout": process.stdout.strip(),  
            "stderr": process.stderr.strip(),  
            "duration": round(time.time() - start_time, 2)  
        })  
  
    except subprocess.TimeoutExpired as e:  
        result.update({  
            "status": "timeout",  
            "stderr": f"执行超时 ({timeout}s)",  
            "duration": timeout  
        })  
    except Exception as e:  
        result.update({  
            "status": "error",  
            "stderr": str(e),  
            "duration": round(time.time() - start_time, 2)  
        })  
  
    return result  
  
if __name__ == "__main__":  
    mcp.run(transport="stdio")

上述 exePath 中的beian.exe 就是编译后的程序名称

代码解析

  1. 初始化MCP服务器
    使用FastMCP类创建一个服务器实例,指定服务器名称为beian-query-server,并将日志级别设置为ERROR,以减少不必要的输出。

  2. 定义工具函数
    通过@mcp.tool()装饰器,我们将run_beian_query函数注册为一个MCP工具。这个函数接收两个参数:domain(域名)和timeout(超时时间),并返回一个包含执行结果的字典。

  3. 工具逻辑

    • 配置工具路径:指定beian.exe的路径,并验证其是否存在。
    • 执行命令:通过subprocess.run执行备案查询命令,并捕获输出和错误信息。
    • 结果处理:根据执行结果更新状态、返回码、输出内容和执行时间。

配置MCP Client

创建好 server 后,就需要对client进行配置了,由于 vscode 中 cline 插件很好的支持了 mcp server 功能,可以节省我们创建 mcp client 的步骤 ,但是使用时需要进行相关配置,以下是配置文件的内容:

{
  "mcpServers": {
    "beian-query-server": {
      "name": "调用golang工具的备案查询工具",
      "key": "dirsearch-mcp-server",
      "command": "uv",
      "args": [
        "--directory",
        "E:\\Script\\PyStore\\dirsearch-mcp-server\\",
        "run",
        "--with",
        "mcp",
        "mcp",
        "run",
        "main.py"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}

配置文件解析

  • name:工具的名称,用于描述工具的功能。
  • key:工具的唯一标识符。
  • command:运行工具的命令。
  • args:命令的参数列表,用于指定运行环境和脚本路径。
  • disabled:是否禁用该工具。
  • autoApprove:自动批准的工具列表。

这段配置相当于运行以下命令:

uv --directory E:\Script\PyStore\dirsearch-mcp-server\ run --with mcp mcp run main.py

运行

为了更方便地使用MCP工具,我们可以在VSCode中安装cline插件,并进行以下配置:

  1. 安装插件
    在VSCode的扩展市场中搜索并安装cline插件。

  2. 选择MCP服务器
    打开VSCode,选择MCP server作为目标服务器。

  3. 配置工具
    点击Config按钮,按照提示完成配置。

  4. 运行工具
    配置完成后,工具将自动运行,如下图所示:

  1. 查看结果
    工具运行后,你可以在VSCode的输出窗口中查看结果,如下图所示:

最终的查询结果如下:

总结

通过本文的介绍,我们成功搭建了一个基于MCP技术及ai技术的智能化备案信息查询工具,并实现了自动调用和结果展示。

MCP技术为AI提供了一种与外部工具交互的能力,在渗透测试中,如果将完整的渗透测试工具链通过MCP技术装备给ai调用,那么智能化的渗透测试工具将极大的提高工作的效率,就可以实现渗透测试从自动化到完全智能化的转变。

原创作者: D1TA 转载于: https://www.cnblogs.com/D1TA/p/18803169

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们已知用户需求是:通过Kali和Cursor实现自动化MCP开发渗透的详细步骤说明。 参考引用内容: [1] MCP协议用于调用Kali工具,实现AI驱动渗透测试 [2] 使用MCP协议和Python脚本搭建AI渗透测试系统 [3] MCP在Cursor中的应用及优势 [4] HexStrike 6.0框架整合AI代理和安全工具 因此,我们需要结合MCP协议、Kali Linux工具链和Cursor编辑器(内置AI助手)来实现自动化渗透测试。 步骤规划: 1. 环境准备:安装Kali Linux、Cursor和必要的Python库 2. 理解MCP协议:Model Context Protocol,允许AI助手通过API调用外部工具 3. 设置MCP服务器:用于连接Cursor AI和Kali工具 4. 编写MCP插件:定义如何调用Kali工具(如Nmap、Sqlmap等) 5. 在Cursor中配置MCP:连接MCP服务器,使AI助手能发送命令 6. 创建自动化脚本:利用Cursor的AI生成能力编写渗透测试流程 7. 执行与监控:通过AI指令触发自动化渗透测试 详细步骤如下: </think> ### Kali+Cursor自动化MCP开发渗透实战指南 结合MCP协议、Kali工具链和Cursor智能编辑器,实现AI驱动的自动化渗透测试,步骤如下: --- #### 环境准备(Kali基础配置) 1. **安装必需组件**: ```bash sudo apt update && sudo apt install python3.11-venv git docker.io pip install mcp-protocol hexstrike-sdk # 安装MCP核心库[^1][^4] ``` 2. **配置Kali工具库**: ```bash git clone https://github.com/hexstrike/hexstrike-core # 获取AI渗透框架[^4] cd hexstrike-core && python setup.py install ``` --- #### MCP服务器部署(关键桥梁) 1. **创建MCP服务脚本** (`mcp_server.py`): ```python from mcp import McpServer from hexstrike import KaliToolAdapter server = McpServer(port=9090) server.register_toolkit(KaliToolAdapter()) # 绑定Kali工具库[^1] if __name__ == "__main__": server.start() # 启动服务 ``` 2. **运行服务**: ```bash nohup python mcp_server.py > mcp.log & # 后台运行 ``` --- #### Cursor智能集成(AI驱动层) 1. **安装Cursor插件**: - 在Cursor插件市场搜索安装 `MCP Client for Kali` 2. **配置连接文件** (`~/.cursor/mcp_config.json`): ```json { "servers": [ { "name": "Kali_Pentest", "host": "localhost", "port": 9090, "auth_token": "kali_ai_2025" } ] } ``` --- #### 自动化渗透工作流(实战案例) **场景:AI自动扫描Web漏洞** 1. 在Cursor输入自然语言指令: ```markdown [MCP-CMD] TARGET: example.com SCAN_TYPE: web_vulnerability TOOLS: [nmap, sqlmap, wpscan] OUTPUT_FORMAT: json ``` 2. **AI自动化执行流程**: $$ \text{Cursor AI} \xrightarrow{\text{MCP指令}} \text{Kali服务器} \xrightarrow{\text{调用工具链}} \text{目标系统} $$ - 自动执行`nmap -sV example.com` - 根据开放端口动态调用`sqlmap`或`wpscan`[^4] - 结果通过MCP协议回传Cursor 3. **结果解析**: ```python # Cursor生成的报告分析代码 import json from hexstrike.analyzer import VulnReport report = VulnReport.load("scan_results.json") print(report.top_threats()) # 输出高危漏洞 ``` --- #### 调试与优化 ```mermaid graph TD A[自然语言指令] --> B{Cursor AI解析} B --> |MCP协议| C[Kali工具执行] C --> D[结果JSON] D --> |反馈| E[AI优化指令] E --> A ``` - **日志监控**:`tail -f mcp.log | grep "AI_CMD"` - **安全审计**:启用MCP的**操作确认模式**防止误操作[^3] ```python # 在mcp_server.py中启用审核 server.enable_approval(level="high_risk") ``` --- #### 典型应用场景 | 场景 | AI指令示例 | 调用工具 | |-----------------------|--------------------------------------|-----------------------------| | 端口扫描 | `全端口扫描 example.com` | Nmap + Masscan | | Web漏洞检测 | `检测example.com的SQL注入点` | Sqlmap + XSStrike | | 密码爆破 | `爆破ssh://example.com 用户名admin` | Hydra + Patator | | 漏洞利用 | `利用CVE-2024-1234攻击目标` | Metasploit + Searchsploit | --- #### 安全警告 1. **法律合规**: - 仅限授权目标使用,违反法律将导致严重后果 - 建议在隔离环境测试:`docker run --rm kalilinux/kali-rolling` 2. **协议局限性**: - MCP远程开发需保持Kali在线[^3] - 复杂场景需人工复核AI操作 [^1]: MCP协议标准化了AI与传统渗透工具的交互接口 [^2]: Cursor的AI驱动大幅降低安全测试门槛 [^3]: MCP操作审核机制可防止自动化误操作 [^4]: HexStrike框架集成200+工具实现智能决策链
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值