Rami Kali MCP服务器
Rami Kali MCP(模型上下文协议)服务器,封装了Kali Linux渗透测试工具,用于授权的安全评估。设计由当地LLM通过LM Studio驱动。
仅适用于授权渗透测试、CTF竞赛和安全研究。
______________________________________________________________________
快速入门(Docker)
git clone rami-kali
cd rami-kali
docker compose up就是这样。不需要手动安装依赖项。
______________________________________________________________________
建筑
┌─────────────┐ JSON-RPC ┌──────────────────┐ exec ┌────────────┐
│ LM Studio │ ◄──── stdin/out ──►│ MCP Server │ ◄────────────► │ Kali Tools │
│ (local LLM)│ │ (Python 3) │ │ 60+ tools │
└─────────────┘ │ │ │ nmap, msf, │
│ knowledge/ │ │ bettercap..│
│ (tactical KB) │ └────────────┘
└───────┬──────────┘
│
┌──────▼──────┐
│ SQLite DB │
│ + Reports │
└─────────────┘______________________________________________________________________
Docker设置
先决条件
- Docker引擎20.10+
- Docker Compose v2+
- 最低8 GB RAM(仅Metasploit就需要约2 GB)
构建与运行
# Build and start
docker compose up
# Build and start in background
docker compose up -d
# Rebuild after code changes
docker compose build && docker compose up
# View logs
docker compose logs -f
# Open a shell inside the container (for debugging)
docker compose exec mcp-server zsh
# Stop
docker compose down环境变量
覆盖任何设置而不进行修改 config.yaml:
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_LOG_LEVEL | INFO | 日志记录级别(DEBUG, INFO, WARNING, ERROR) |
MCP_DATABASE | /opt/rami-kali/data/scan_results.db | SQLite数据库路径 |
MCP_AUDIT_LOG | /opt/rami-kali/data/audit.log | 审计跟踪文件路径 |
MCP_REPORT_DIR | /opt/rami-kali/reports | 生成报告的目录 |
MCP_CONFIG_PATH | /opt/rami-kali/config.yaml | YAML配置文件的路径 |
覆盖示例:
MCP_LOG_LEVEL=DEBUG docker compose up或添加到 .env 项目根目录中的文件:
MCP_LOG_LEVEL=DEBUG持久性数据
两个Docker卷在容器重启时保存数据:
| 体积 | 容器路径 | 内容 |
|---|---|---|
mcp-data | /opt/rami-kali/data/ | SQLite扫描数据库、审计日志 |
mcp-reports | /opt/rami-kali/reports/ | 生成降价报告 |
要备份您的数据,请执行以下操作:
# Copy database out of the container
docker compose cp mcp-server:/opt/rami-kali/data/scan_results.db ./backup.db
# Copy reports
docker compose cp mcp-server:/opt/rami-kali/reports/ ./reports-backup/要擦除所有数据并重新开始:
docker compose down -v配置
这 config.yaml 文件以只读方式绑定挂载到容器中。在主机上编辑它并重新启动:
# Edit config
vim config.yaml
# Restart to pick up changes
docker compose restart关键配置部分:
security:
allowed_scope: # CIDR ranges the server is allowed to scan
- "192.168.0.0/16"
- "10.0.0.0/8"
- "172.16.0.0/12"
require_scope_check: true
rate_limit:
global_max_concurrent: 3
per_tool_max_concurrent: 1网络
默认情况下,容器运行时 network_mode: host 因此,它可以扫描您的本地网络。如果您只扫描远程目标或希望隔离,请在中更改为网桥模式 docker-compose.yml:
services:
mcp-server:
# network_mode: host # comment out
ports:
- "8080:8080" # if you add an HTTP transport laterMetasploit数据库(可选)
Metasploit使用内置数据库即可开箱即用。对于专用的PostgreSQL实例,取消注释 msf-db 服务中 docker-compose.yml:
# Edit docker-compose.yml — uncomment the msf-db service and depends_on
vim docker-compose.yml
docker compose up______________________________________________________________________
已安装的工具(约80个可安装)
容器包括以下Kali工具(启动时自动检测):
| 类别 | 工具 |
|---|---|
| 侦察 | nmap、masscan、whatweb、whois、dig、the Harvester、mass、subinder、dnsx、searchsploit |
| CVE情报 | cve_lookup(NVD 2.0 API-确切的cve ID、关键字+exact_match、cpe_name、virtual_tatch_string、cvss_severity筛选器、发布和修改日期范围、no_rejected标志;返回cvss、SERVICE BINDING注释、cpe、引用) |
| 网络扫描 | gobuster、ffuf、nucleus、nikto、dirb、wfuzz、wpscan、joomscan、zap-cli、下垂扫描 |
| 剥削 | sqlmap,元绘图(msfconsole,msfvenom) |
| 凭证攻击 | 九头蛇、美杜莎、ncrack、patator、hashcat、john、crunch、cewl |
| SMB/AD | enum4linux、smbclient、smbmap、rpcclient、crackmapexec、邪恶winrm、寻血犬、impackt(psexec.py、wmiexec.py,smbexec.py和secretsdump.py) |
| MITM | bettcap、ettercap、应答者、mitmproxy、arpspoof、dnsspoof、sslstrip、耶尔森氏菌 |
| 无线 | aircrack ng、reaver、欺负者、wifite、kismet、mdk4、pixiewps、懦弱 |
| C2/社会工程 | 阿米蒂奇,面纱,牛肉xss,setoolkit |
| 代理路由 | proxychains4(Burp配置文件 /etc/proxychains4.conf +Tor配置文件 /etc/proxychains4-tor.conf) |
| 网络 | tshark、tcpdump、ngrep、hping3、碎片路由器、macchanger、netcat、socat |
| 单词列表 | rockyou.txt、安全列表、目录列表 |
未安装的工具会自动从MCP工具列表中隐藏。
Docker中没有可用的工具
注册表中的以下工具 无法运行 在Docker容器中,它们是自动隐藏的:
| 工具 | 原因 |
|---|---|
mimikatz | 仅限Windows二进制文件 |
cobaltstrike | 需要商业许可证 |
burpsuite | 在Windows主机上单独运行;其MCP服务器在RamiBot中作为独立服务器添加,而不是rami-kali的一部分 |
powersploit | PowerShell模块,不是Linux二进制文件 |
empire | 弃用/复杂安装 |
shellter | Windows PE注射器(取决于葡萄酒) |
xhydra | GTK GUI,无用的无头 |
pyrit, ewsa | 仓库中已弃用/不可用 |
wifiphisher, fluxion, airgeddon, wifi-honey, ghost-phisher, fern-wifi-cracker | 不在Kali存储库中或需要GUI |
外壳环境
集装箱运行 Z shell 默认shell为:
zsh-syntax-highlighting:命令有效时变为绿色,无效时变为红色--按Enter键前的实时反馈zsh-autosuggestions:建议历史命令;按Tab键或→ 接受
当RamiBot的Docker终端打开一个会话时,它会按顺序检测shell: zsh → bash → sh.
# Open an interactive zsh session
docker exec -it rami-kali zsh代理路由(proxychains4)
安装了两个现成的配置文件,用于路由工具流量,而无需修改工具配置:
| 配置文件 | 路径 | 目标 |
|---|---|---|
| 打嗝 | /etc/proxychains4.conf | 127.0.0.1:8080 (Windows主机Burp代理) |
| Tor | /etc/proxychains4-tor.conf | 127.0.0.1:9050 (集装箱中的Tor SOCKS) |
用途:
# Route through Burp for traffic analysis
proxychains nmap -sV 10.10.10.1
# Route through Tor for anonymity
proxychains -f /etc/proxychains4-tor.conf curl https://example.com
# Chain tool → Burp → Tor (configure Burp SOCKS upstream first)
# In Burp: Settings → Network → Connections → SOCKS proxy → 127.0.0.1:9050
proxychains nmap -sV 10.10.10.1这 gobuster_dir MCP工具接受 proxy 参数直接通过代理路由目录brutforce(例如。, http://127.0.0.1:8080 对于Burp或 socks5://127.0.0.1:9050 对于Tor)——该工具不需要代理链。
因为容器使用 network_mode: host, 127.0.0.1 容器内部解析为Windows/Linux主机,因此可以在以下位置访问在主机上运行的Burp 127.0.0.1:8080.
无线工具警告
无线工具(aircrack-ng、reaver、wifite等) 安装 但需要USB WiFi适配器直通才能工作。在以下内容中取消注释 docker-compose.yml:
privileged: true
devices:
- /dev/bus/usb:/dev/bus/usb如果没有通过物理适配器,无线工具将启动,但没有可供使用的接口。
______________________________________________________________________
知识库
这 knowledge/ 目录包含LLM的战术推理系统:
knowledge/
core_principles.md — Decision axioms
engagement_rules.md — Scope & risk rules
pivot_map.md — "If X found → do Y" decision trees
tools/*.md — Per-tool tactical memory
interpretation/*.md — Result parsing guides
tactics/*.md — Phase-by-phase methodology这 tools/cve_lookup.md 该文件为LLM提供了NVD 2.0查询策略、所有支持的参数及其示例、CVSS严重性带、CVE查询锁定决策序列(提取产品→ 提取版本→ 构建查询)、服务绑定规则(仅将CVE绑定到匹配的检测到的服务)、证据规则和链接工作流(nmap版本→ cve_lookup→ searchsploit)。
看 knowledge/README.md 完整的结构和集成指南。
______________________________________________________________________
LM工作室集成
- 启动LM Studio并加载模型(例如,Qwen 2.5 7B、Mistral 7B)
- 在LM Studio的工具设置中启用MCP服务器
- 将其指向MCP服务器的stdin/stdout接口
- LLM现在可以通过MCP协议调用渗透测试工具
______________________________________________________________________
项目结构
rami-kali/
├── Dockerfile ← Kali-based container image (60+ tools)
├── docker-compose.yml ← One-command startup + optional PostgreSQL
├── docker-entrypoint.sh ← Startup checks & tool verification
├── .dockerignore ← Build context exclusions
├── config.yaml ← Server configuration
├── requirements.txt ← Python dependencies
├── mcp_server.py ← MCP server (2900+ lines, 45 registered tools)
├── knowledge/ ← Tactical knowledge base (27 files)
│ ├── core_principles.md
│ ├── pivot_map.md
│ ├── tools/
│ ├── interpretation/
│ └── tactics/
└── README.md ← This file______________________________________________________________________
安全
- 范围执行:每次工具调用都会进行检查
allowed_scope在配置中 - 主机名解析:域在范围检查之前解析为IP(防止绕过)
- 输入净化:从所有输入中删除Shell元字符
- 速率限制:并发工具执行有上限(全局+每个工具)
- 审计日志:每次工具调用都会记录时间戳和参数
- 风险等级:高风险工具(hydra、sqlmap、metasploit、bettcap等)通过stderr发出警告
- 二进制可用性:只有实际安装在容器中的工具才会通过MCP暴露出来
