内容
# Ligolo-ng 中转服务器
Ligolo-ng 的模型上下文协议(MCP)中转服务器,用于管理 Ligolo-ng - 一种用于在渗透测试和红队演练期间建立反向 TCP/TLS 隧道的轻量级、快速的隧道工具。
## 概述
该MCP服务器使AI助手能够通过SSH控制远程Kali Linux机器上的Ligolo-ng操作。它提供了管理代理服务器、代理、隧道、路由和监听器所需的工具 - 所有网络枢转所需的功能。
## 功能
- **代理管理**:启动、停止和监视 Ligolo-ng 代理服务器
- **代理控制**:列出已连接的代理和管理会话
- **网络接口**:创建和管理用于隧道传输的TUN接口
- **隧道操作**:通过代理会话启动/停止隧道
- **路由管理**:添加和删除目标网络的路由
- **监听器配置**:通过代理设置端口转发
- **代理命令生成**:为目标生成代理连接命令
## 先决条件
- Node.js 18+
- SSH 访问已安装 Ligolo-ng 的 Kali Linux 机器
- 配置了 SSH 密钥认证(无密码 SSH)
## 安装
```bash
# 克隆仓库
git clone https://github.com/schwarztim/sec-ligolo-ng-mcp.git
cd sec-ligolo-ng-mcp
# 安装依赖
npm install
# 构建项目
npm run build
```
## 配置
### 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `KALI_HOST` | `kali` | Kali 机器的 SSH 主机名或别名 |
| `LIGOLO_PROXY_PORT` | `11601` | 代理连接端口 |
| `LIGOLO_API_PORT` | `8080` | Ligolo-ng Web API 端口 |
| `LIGOLO_INTERFACE` | `ligolo` | 默认 TUN 接口名称 |
### SSH 配置
确保您的 SSH 配置文件 (`~/.ssh/config`) 中有您的 Kali 机器的条目:
```
Host kali
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/id_rsa
```
### Claude 桌面集成
将以下内容添加到您的 `claude_desktop_config.json` 中:
```json
{
"mcpServers": {
"ligolo-ng": {
"command": "node",
"args": ["/path/to/sec-ligolo-ng-mcp/dist/index.js"],
"env": {
"KALI_HOST": "kali",
"LIGOLO_PROXY_PORT": "11601"
}
}
}
}
```
## 可用工具
### 代理管理
| 工具 | 描述 |
|------|-------------|
| `ligolo_proxy_start` | 启动 Ligolo-ng 代理服务器,可选自签名证书和 API |
| `ligolo_proxy_stop` | 停止运行的代理服务器 |
| `ligolo_proxy_status` | 检查代理状态并查看最近的日志 |
### 会话管理
| 工具 | 描述 |
|------|-------------|
| `ligolo_agents_list` | 列出所有已连接的代理 |
| `ligolo_session_select` | 选择一个代理会话进行操作 |
| `ligolo_agent_info` | 从选定的代理获取网络信息 |
### 网络配置
| 工具 | 描述 |
|------|-------------|
| `ligolo_interface_create` | 创建一个 TUN 接口用于隧道传输 |
| `ligolo_interface_list` | 列出所有 TUN 接口 |
| `ligolo_tunnel_start` | 通过选定的会话启动隧道 |
| `ligolo_tunnel_stop` | 停止活动隧道 |
### 路由
| 工具 | 描述 |
|------|-------------|
| `ligolo_route_add` | 添加路由以访问目标网络 |
| `ligolo_route_delete` | 删除路由 |
| `ligolo_route_list` | 列出所有 Ligolo 路由 |
### 端口转发
| 工具 | 描述 |
|------|-------------|
| `ligolo_listener_add` | 添加反向连接的监听器 |
| `ligolo_listener_list` | 列出活动监听器 |
| `ligolo_listener_delete` | 删除监听器 |
### 实用工具
| 工具 | 描述 |
|------|-------------|
| `ligolo_agent_command` | 为目标部署生成代理命令 |
| `ligolo_certificate_fingerprint` | 获取安全连接的证书指纹 |
| `ligolo_send_command` | 向代理控制台发送原始命令 |
## 使用示例
### 基本枢转工作流
1. **在 Kali 上启动代理**:
```
使用 ligolo_proxy_start 并启用 selfcert
```
2. **生成代理命令**:
```
使用 ligolo_agent_command 和您的 Kali IP
```
3. **创建 TUN 接口**:
```
使用 ligolo_interface_create
```
4. **代理连接后,添加路由**:
```
使用 ligolo_route_add 和网络 10.10.10.0/24
```
5. **启动隧道**:
```
使用 ligolo_tunnel_start
```
现在,您可以通过 Kali 机器访问 10.10.10.0/24 网络。
### 设置反向 Shell 回调
使用监听器通过枢纽接收反向 Shell:
```
使用 ligolo_listener_add:
localAddress: 0.0.0.0:4444
remoteAddress: 127.0.0.1:4444
```
这会将代理上的 4444 端口连接转发回您的 Kali 的 4444 端口。
## 安全考虑
- 本工具仅设计用于授权的安全测试
- 在生产环境中始终使用证书验证
- 代理运行具有提升的权限以管理网络接口
- SSH 密钥应正确保护,不得共享
## 开发
```bash
# 开发模式
npm run dev
# 构建
npm run build
# 启动服务器
npm start
```
## 许可证
MIT 许可证 - 参见 [LICENSE](LICENSE) 了解详情。
## 致谢
- [Ligolo-ng](https://github.com/nicocha30/ligolo-ng) 由 Nicolas Chatelain 贡献
- [模型上下文协议](https://modelcontextprotocol.io) 由 Anthropic 贡献
## 免责声明
本工具仅用于授权的安全测试和教育目的。用户在使用本工具针对任何系统之前,必须确保拥有适当的授权。作者不负责因使用本工具而造成的任何滥用或损害。