编程 METATRON 深度解析:当 AI 渗透测试在本地跑出「免费版 GPT-4 安全助手」

2026-04-09 07:55:23 +0800 CST views 25

METATRON 深度解析:当 AI 渗透测试在本地跑出「免费版 GPT-4 安全助手」

你有没有想过:让一个大模型完全跑在本地,不需要 API Key,不需要订阅费,不需要把目标域名发给任何第三方——然后让它帮你做一次完整的渗透测试?这就是 METATRON 做的事情。

一、背景:AI + 安全工具的十字路口

2026 年,安全工具领域正在经历一场静默的架构革命。

传统的渗透测试工具链是静态的:nmap 扫描、nikto 跑 Web 漏洞、metasploit 找 Exploit——每个工具只做一件事,输出是原始文本,安全工程师需要自己解读、自己关联、自己决策。这套流程在 2010 年代没有问题,但到了大模型时代,这种「人肉拼接」的模式突然变得荒谬起来——为什么不让一个 AI 来理解所有工具的输出、关联漏洞、提出建议?

两条路线随之出现:

路线 A:云端 AI + API 调用

典型如 PentestGPT、GPTFuzzer。把扫描结果扔给 GPT-4,AI 返回分析和建议。优点是能力强,致命缺点是——你必须把目标 IP 和扫描结果发给 OpenAI/Anthropic 的服务器。对于企业安全测试,这可能违反合规;对于红队演练,这可能暴露真实意图。

路线 B:本地 AI + 开源模型

典型如 METATRON。用 Ollama 在本地跑一个微调过的 Qwen 模型,所有数据不出本地,API 费用为零。这条路线的挑战是:模型能力够用吗?工具调用怎么实现?速度能接受吗?

METATRON 给出了自己的答案——4 月 2 日发布,4 天内斩获 1900+ GitHub Star,成为 2026 年增长最快的安全 AI 开源项目之一。


二、METATRON 是什么

METATRON 是一个基于命令行的 AI 渗透测试助手,核心架构极为简洁:

用户输入目标 → 本地 Recon 工具链 → Ollama (本地 LLM) → AI 分析 → MariaDB 存档 → PDF/HTML 报告

关键特征:

  • 100% 本地运行,无需任何 API Key
  • 模型:基于 Qwen 3.5 微调的 metatron-qwen(9B 参数)
  • 数据库:MariaDB,存储扫描历史、漏洞、修复建议、Exploit 尝试记录
  • 工具链:nmap、whois、whatweb、curl、dig、nikto
  • 报告导出:PDF(通过 reportlab)和 HTML

一句话总结:一个跑在你自己的机器上的 AI 渗透测试分析师,不需要联网,不需要付费,只需要你在 Parrot OS 上给它一个目标。


三、架构拆解:从入口到报告的完整闭环

3.1 整体流程

METATRON 的工作流程分为六个阶段:

┌──────────────────────────────────────────────────────┐
│  1. 目标输入                                         │
│     用户输入 IP 或域名                                │
└──────────────────────┬─────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────┐
│  2. 交互式 Recon 选择                                │
│     用户选择要运行的工具组合                          │
│     nmap / whois / whatweb / curl / dig / nikto       │
└──────────────────────┬─────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────┐
│  3. 工具执行 + 格式化输出                             │
│     所有工具输出汇集成结构化字符串                     │
│     → 传给 LLM                                        │
└──────────────────────┬─────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────┐
│  4. Ollama 本地推理                                   │
│     metatron-qwen 分析扫描结果                         │
│     AI 可主动调用 [TOOL:] / [SEARCH:] 继续探测          │
│     最多循环 9 次工具调用(防止无限循环)               │
└──────────────────────┬─────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────┐
│  5. 结果存档到 MariaDB                                │
│     vulnerabilities / fixes / exploits / summary       │
└──────────────────────┬─────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────┐
│  6. 报告导出                                          │
│     PDF(专业漏洞报告)/ HTML(浏览器查看)             │
└──────────────────────────────────────────────────────┘

这个流程最值得注意的设计是第四步的 Agentic Loop——AI 不只是做一次分析,而是可以自己决定要不要继续调用工具。

3.2 LLM 层:metatron-qwen 的微调策略

METATRON 使用的模型 metatron-qwen 是基于 huihui_ai/qwen3.5-abliterated:9b 微调而来的安全专用模型。微调配置通过 Ollama 的 Modelfile 实现:

FROM huihui_ai/qwen3.5-abliterated:9b
PARAMETER num_ctx 16384
PARAMETER temperature 0.7
PARAMETER top_k 10
PARAMETER top_p 0.9

三个关键参数的选择很有讲究:

  • num_ctx 16384:16K 上下文窗口,能一次性容纳完整的 nmap 扫描结果 + whois 信息 + nikto 输出。这是 9B 模型能承载的最大扫描报告规模。
  • temperature 0.7:中等随机性,够稳定但不会过于保守。对于安全分析,temperature 太低会让 AI 只输出「教科书式」回答,太高会让它胡编 CVE 编号。
  • top_k 10:限制采样范围,平衡创意和安全分析的精确性。

3.3 工具层:六把刀的组合

# tools.py - 核心工具执行函数

def run_nmap(target: str) -> str:
    """nmap -sV -sC -T4 --open"""
    return run_tool(["nmap", "-sV", "-sC", "-T4", "--open", target], timeout=180)

def run_whois(target: str) -> str:
    """whois — 域名注册信息"""
    return run_tool(["whois", target], timeout=30)

def run_whatweb(target: str) -> str:
    """whatweb -a 3 — Web 技术指纹"""
    return run_tool(["whatweb", "-a", "3", target], timeout=60)

run_tool 函数封装了所有命令行工具的统一接口:超时处理、错误捕获、stdout/stderr 合并返回。这套设计很干净——任何新工具只要实现类似的封装就能无缝接入。

3.4 Agentic Loop:AI 自己决定下一步

这是 METATRON 最有趣的部分。llm.py 中实现了完整的工具调用循环:

# llm.py - 简化版 Agentic Loop

OLLAMA_URL  = "http://localhost:11434/api/generate"
MODEL_NAME  = "metatron-qwen"
MAX_TOOL_LOOPS = 9   # 最多循环 9 次,防止无限调用

def analyse_target(target: str, raw_scan_data: str) -> dict:
    """
    主分析函数:LLM 生成 → 解析工具调用 → 执行 → 反馈 → 重复
    """
    messages = []
    tool_call_count = 0

    # 第一轮:把扫描结果直接发给 LLM
    first_prompt = f"""Target: {target}

Scan Results:
{raw_scan_data}

Analyze these results. Identify vulnerabilities, suggest fixes.
If you need more data, use [TOOL:] or [SEARCH:] tags."""
    
    response = ask_ollama(first_prompt, context=messages)
    messages.append({"role": "assistant", "content": response})
    
    # 解析 AI 的响应,查找工具调用标记
    while "[TOOL:" in response or "[SEARCH:" in response:
        if tool_call_count >= MAX_TOOL_LOOPS:
            print("[!] Max tool loops reached.")
            break
        
        # 提取并执行工具调用
        for match in re.finditer(r'\[TOOL:\s*(.+?)\]', response):
            cmd = match.group(1)
            result = run_tool_by_command(cmd.split())
            response += f"\n\n[TOOL RESULT]\n{result}"
        
        for match in re.finditer(r'\[SEARCH:\s*(.+?)\]', response):
            query = match.group(1)
            result = web_search(query)
            response += f"\n\n[SEARCH RESULT]\n{result}"
        
        tool_call_count += 1
        # 把工具结果发回给 LLM 继续分析
        response = ask_ollama(response, context=messages)

这个实现非常接近标准 Agent 的 ReAct 模式:Thought → Action → Observation → Thought。LLM 输出包含工具调用指令,执行结果被附加到上下文中,下一轮 LLM 基于新信息继续分析,直到没有新的工具调用。

3.5 数据层:MariaDB 五表设计

-- history: 每次扫描的元信息
CREATE TABLE history (
  sl_no     INT AUTO_INCREMENT PRIMARY KEY,
  target    VARCHAR(255) NOT NULL,
  scan_date DATETIME NOT NULL,
  status    VARCHAR(50) DEFAULT 'active'
);

-- vulnerabilities: 发现的漏洞
CREATE TABLE vulnerabilities (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  sl_no       INT,
  vuln_name   TEXT,
  severity    VARCHAR(50),
  port        VARCHAR(20),
  service     VARCHAR(100),
  description TEXT
);

-- fixes: AI 给出的修复建议
-- exploits_attempted: 尝试过的 Exploit
-- summary: 风险评级 + AI 整体评估

这套数据库设计的好处是:所有扫描历史可查询、可对比、可导出。每次对同一个目标的扫描都可以看到历史记录,方便追踪漏洞修复进度。

3.6 报告导出:reportlab 生成 PDF

# export.py - PDF 导出核心逻辑

def export_pdf(data: dict, output_dir: str) -> str:
    """使用 reportlab 生成专业漏洞报告 PDF"""
    doc = SimpleDocTemplate(
        filename,
        pagesize=A4,
        topMargin=15*mm, bottomMargin=15*mm,
        leftMargin=15*mm, rightMargin=15*mm
    )
    
    # 按严重性着色:critical=红色, high=橙色, medium=黄色, low=绿色
    SEVERITY_COLORS = {
        "critical": "#c0392b",
        "high":     "#e67e22",
        "medium":   "#f1c40f",
        "low":      "#27ae60",
    }

四、安全视角:本地 AI 做渗透测试,能力边界在哪里

这是最需要认真讨论的部分。METATRON 确实是一个有价值的工具,但它不是万能的。理解它的能力边界,比盲目吹捧更重要。

4.1 真正擅长的事情

已知漏洞模式识别。 当 nmap 识别出 Apache 2.4.49,metatron-qwen 能快速关联到 CVE-2021-41773(路径穿越漏洞)。这种模式匹配类任务,9B 本地模型完全能胜任,甚至比 GPT-4 更快(因为不需要网络请求)。

多工具输出的综合分析。 传统流程中,安全工程师需要自己看 nmap 的端口列表 + nikto 的告警 + whatweb 的指纹,然后手动关联。METATRON 让 AI 做这件事——它可以发现「whatweb 检测到这个 CMS 版本已知漏洞,但 nmap 显示该端口被防火墙阻断了」,这类关联推理正是 LLM 的强项。

报告自动化。 写渗透测试报告是安全工程师最讨厌的工作。METATRON 直接把分析结果结构化存库、生成 PDF,节省大量人力。

4.2 当前的明显短板

Exploit 生成的准确性存疑。 metatron-qwen 是一个微调过的 Qwen 3.5,擅长分析和建议,但生成可用的 Exploit Payload 并不是它的专长。AI 生成的 Exploit 需要人工验证,否则可能产生误判(虚假自信)。

Agentic Loop 的风险。 最多 9 次工具循环是硬限制,但这只是数量限制,没有质量门控。如果 AI 在循环中做出错误决策(比如对目标发起了有破坏性的操作),系统没有熔断机制。

模型能力的上限。 9B 参数的 Qwen 在复杂漏洞利用链的推理上,与 GPT-4 仍有明显差距。真正的深度渗透测试(需要 multi-hop 推理、复杂提权路径规划),METATRON 目前还做不了。

4.3 隐私 vs. 能力的权衡

METATRON 最大的价值主张是隐私:所有数据在本地,扫描结果不离开你的机器。这在以下场景极具意义:

  • 企业内网渗透测试(合规要求数据不外传)
  • 红队演练(不想暴露攻击意图)
  • 个人学习(在真实目标上练手而不担心隐私泄露)

但代价是能力上限由你的硬件决定。RTX 4090 + 24GB 显存跑 9B 模型很流畅,但在老旧笔记本上可能需要换成 4B 变体,能力随之下降。


五、与同类项目的横向对比

维度METATRONPentestGPTGPTFuzzer
运行方式100% 本地API 调用API 调用
模型Qwen 3.5 微调GPT-4GPT-4
数据库MariaDB
报告导出PDF + HTML
工具链nmap/whois/whatweb/nikto无内置无内置
Agentic Loop有,9次上限
费用零(仅本地算力)OpenAI API 费用OpenAI API 费用
目标用户有 Parrot OS 的安全工程师有 GPT-4 访问权的人有 GPT-4 访问权的人

这张表揭示了一个不对称:METATRON 在工具链完整性和成本上完胜,但 PentestGPT 在模型能力上领先。它们不是竞争关系,而是互补的——本地快速扫描用 METATRON,深度分析用云端大模型。


六、安装与实测:从零到第一次扫描

6.1 环境要求

  • OS: Parrot OS(Debian 系均可)
  • RAM: 至少 8.4GB(9B 模型)或 4GB(4B 变体)
  • Python 3.x
  • Ollama 已安装并运行
  • MariaDB 已安装并配置

6.2 完整安装流程

# 1. 克隆仓库
git clone https://github.com/sooryathejas/METATRON.git
cd METATRON

# 2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 3. 安装 Python 依赖
pip install -r requirements.txt
# requirements.txt 核心依赖:
# mysql-connector-python / reportlab / beautifulsoup4 / duckduckgo-search

# 4. 安装系统工具
sudo apt install nmap whois whatweb curl dnsutils nikto

# 5. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 6. 下载基础模型
ollama pull huihui_ai/qwen3.5-abliterated:9b

# 7. 构建 metatron-qwen
ollama create metatron-qwen -f Modelfile

# 8. 配置 MariaDB
sudo systemctl start mariadb
mysql -u root -e "CREATE DATABASE metatron; CREATE USER 'metatron'@'localhost' IDENTIFIED BY '123'; GRANT ALL ON metatron.* TO 'metatron'@'localhost';"

# 9. 运行
python metatron.py

6.3 使用界面预览

METATRON 是一个交互式 CLI 工具,启动后显示 ASCII Art 横幅菜单。主菜单包含:新建扫描 / 查看历史 / 导出报告 / 退出。对于重复扫描同一目标,系统会警告并要求确认。


七、局限性与未来方向

METATRON 目前有几个明显的发展空间:

1. 模型微调数据集未公开。 metatron-qwen 的微调用的是哪些数据?质量如何?是否有安全数据污染?如果能公开训练数据,项目的可信度会大幅提升。

2. 仅支持 Parrot OS。 虽然代码本身是 Python,理论上可以在任意 Linux 发行版运行,但项目文档明确指向 Parrot OS(安全专用 Linux)。对 Kali 用户来说,需要手动调整依赖安装命令。

3. 数据库密码硬编码。 db.py 中 password="123" 是硬编码的。虽然是本地数据库,但这个做法显然不符合生产安全规范。

4. 缺乏 Web UI。 所有交互都是 CLI,对于非 Linux 重度用户不太友好。一个简单的 Web 界面可以大幅降低上手门槛。

5. Exploit 执行自动化。 目前 AI 只能「建议」Exploit,不能自动执行。如果要做自动化渗透,这一步迟早要补上。


八、总结:本地 AI 安全工具的正确打开方式

METATRON 是一个极具启发性的项目,它验证了一个核心命题:在安全这个对隐私和准确性要求极高的领域,本地 AI 模型完全有生存空间。不需要 GPT-4,不需要 API Key,不需要把数据发给任何人——一台 8GB+ RAM 的 Linux 机器,加一个 9B 的微调模型,就能跑出一个可以独立完成 reconnaissance + 分析 + 报告的渗透测试助手。

它的价值不在于替代专业安全工程师,而在于降低渗透测试的初始门槛:把 reconnaissance 阶段的重复劳动自动化,让安全工程师把精力集中在真正需要创造力的漏洞利用和报告撰写上。

更值得注意的是它的架构示范意义:Ollama + MariaDB + CLI 工具链 + Agentic Loop 这套组合拳,可以复用到几乎任何需要本地 AI + 工具调用的场景——代码审计、数据分析、威胁情报分析……本地大模型 + 结构化工具调用,正在成为 2026 年 AI 应用的一个主流范式。

如果你有 Parrot OS 或任何 Debian 系 Linux 系统,值得花 30 分钟装起来跑一次真实的扫描。工具的真正价值,只有用过才知道。


本文发布于 2026 年 4 月 9 日,选题来源:GitHub Trending 安全类新项目 | 关联项目:Ollama / Qwen / MariaDB

推荐文章

PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
阿里云免sdk发送短信代码
2025-01-01 12:22:14 +0800 CST
18个实用的 JavaScript 函数
2024-11-17 18:10:35 +0800 CST
如何优化网页的 SEO 架构
2024-11-18 14:32:08 +0800 CST
推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
Vue3中如何进行异步组件的加载?
2024-11-17 04:29:53 +0800 CST
快速提升Vue3开发者的效率和界面
2025-05-11 23:37:03 +0800 CST
api远程把word文件转换为pdf
2024-11-19 03:48:33 +0800 CST
gin整合go-assets进行打包模版文件
2024-11-18 09:48:51 +0800 CST
虚拟DOM渲染器的内部机制
2024-11-19 06:49:23 +0800 CST
Mysql允许外网访问详细流程
2024-11-17 05:03:26 +0800 CST
liunx宝塔php7.3安装mongodb扩展
2024-11-17 11:56:14 +0800 CST
Vue中的样式绑定是如何实现的?
2024-11-18 10:52:14 +0800 CST
Vue3 中提供了哪些新的指令
2024-11-19 01:48:20 +0800 CST
在Rust项目中使用SQLite数据库
2024-11-19 08:48:00 +0800 CST
pip安装到指定目录上
2024-11-17 16:17:25 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
程序员茄子在线接单