SMB安全评估服务器

一个基于Model Context Protocol的服务器,通过SMBMap为AI助手提供SMB共享枚举和交互能力,用于安全评估和渗透测试。

  • by schwarztim
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 schwarztim/sec-smbmap-mcp

使用说明

SMBMap MCP服务器

A. 模型上下文协议(MCP) 通过以下方式为AI助手提供SMB共享枚举和交互功能的服务器 SMBMap.

概述

此MCP服务器使Claude等AI助手能够执行基于SMB的安全评估和渗透测试任务。它通过SSH在远程Kali Linux机器上执行命令,提供安全和隔离的执行环境。

[AI Assistant] <-> [MCP Server] <-> [SSH] <-> [Kali Linux] <-> [SMBMap] <-> [Target]

特性

工具 说明
smbmap_enum 枚举目标主机上的SMB共享
smbmap_permissions 检查共享权限(读取、写入、禁止访问)
smbmap_list 列出共享中的文件和目录(支持递归)
smbmap_download 从SMB共享下载文件
smbmap_upload 将文件上传到SMB共享
smbmap_exec 通过SMB执行命令(需要管理员)
smbmap_search 按名称模式搜索文件(支持正则表达式)
smbmap_content_search 搜索文件内容(需要管理员+PowerShell)
smbmap_drives 列出目标系统上的所有驱动器
smbmap_delete 从SMB共享中删除文件
smbmap_host_file 从文件中扫描多个主机

先决条件

  • Node.js 18+
  • SSH访问 到Kali Linux机器(建议使用无密码SSH)
  • SMBMap 安装在Kali上(apt install smbmap)

安装

# Clone the repository
git clone https://github.com/schwarztim/sec-smbmap-mcp.git
cd sec-smbmap-mcp

# Install dependencies
npm install

# Build the project
npm run build

配置

环境变量

变量 默认值 描述
KALI_HOST kali Kali Linux机器的SSH主机名或IP
SSH_OPTIONS -o StrictHostKeyChecking=no -o ConnectTimeout=10 SSH连接选项

Claude桌面配置

添加到您的Claude Desktop配置文件(~/.config/claude/claude_desktop_config.json 在Linux或 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "smbmap": {
      "command": "node",
      "args": ["/path/to/sec-smbmap-mcp/dist/index.js"],
      "env": {
        "KALI_HOST": "your-kali-host"
      }
    }
  }
}

SSH设置

确保对Kali计算机的无密码SSH访问:

# Generate SSH key if needed
ssh-keygen -t ed25519

# Copy key to Kali machine
ssh-copy-id kali

# Test connection
ssh kali "smbmap --help"

使用示例

基本共享枚举(空会话)

{
  "tool": "smbmap_enum",
  "arguments": {
    "host": "192.168.1.100"
  }
}

经过身份验证的枚举

{
  "tool": "smbmap_enum",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "password123",
    "domain": "CORP"
  }
}

通过哈希身份验证

{
  "tool": "smbmap_enum",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "aad3b435b51404eeaad3b435b51404ee:da76f2c4c96028b7a6111aef4a50a94d"
  }
}

递归目录列表

{
  "tool": "smbmap_list",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "password123",
    "path": "C$\\Users",
    "recursive": true,
    "depth": 2
  }
}

搜索敏感文件

{
  "tool": "smbmap_search",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "password123",
    "pattern": ".*password.*",
    "search_path": "C$\\Users"
  }
}

执行远程命令

{
  "tool": "smbmap_exec",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "password123",
    "command": "ipconfig /all"
  }
}

下载文件

{
  "tool": "smbmap_download",
  "arguments": {
    "host": "192.168.1.100",
    "username": "admin",
    "password": "password123",
    "remote_path": "C$\\Users\\admin\\Desktop\\passwords.txt"
  }
}

多主机扫描

{
  "tool": "smbmap_host_file",
  "arguments": {
    "host_file": "/tmp/targets.txt",
    "username": "admin",
    "password": "password123",
    "domain": "CORP"
  }
}

安全通知

此工具仅用于授权的渗透测试和安全评估。

  • 在扫描任何系统之前,始终获得适当的书面授权
  • 遵循负责任的披露做法
  • 遵守所有适用的法律法规
  • 切勿对您不拥有或没有明确测试权限的系统使用此工具

未经授权访问计算机系统是非法和不道德的。

发展

# Watch mode for development
npm run dev

# Build for production
npm run build

# Start the server
npm start

参考文献

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请随时提交拉取请求。

  1. 克隆该仓库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求