nuclide-research/VisorGoose

GitHub: nuclide-research/VisorGoose

VisorGoose是一款用于政府顶级域AI基础设施发现和漏洞扫描的工具。

Stars: 1 | Forks: 0

# VisorGoose 政府顶级域的多源AI基础设施发现。 VisorGoose并行查询三个输入源(crt.sh证书透明度日志、Shodan和DNS A记录解析),通过IP去重候选者,然后对每个候选者进行端口11434上的Ollama探测。探测获取版本、模型列表和系统提示;检测CVE-2025-63389(未认证的`/api/create`);检测云代理模型并在存在时提取实时Ollama Connect声明URL。每个状态节点都携带一个`source`字段(`ctlogs`、`shodan`或`direct`)和零个或多个标签(`TAKEOVER`、`CVE-2025-63389`、`CLOUD`、`RAG`、`DISTILLED`)。状态以JSON格式持久化,包含首次和最后查看时间戳以进行纵向跟踪。默认启用Mullvad VPN,具有按TLD退出固定和可选的探测批次之间中继轮换。 ## 安装 ``` go install github.com/nuclide-research/VisorGoose@latest ``` 或者从源代码构建: ``` git clone https://github.com/nuclide-research/VisorGoose cd VisorGoose go build -o visorgoose . ``` Go 1.22或更高版本。 ## 使用 ### 密度 在运行完整扫描之前,计算每个政府顶级域的Shodan命中数: ``` export SHODAN_API_KEY=your_key visorgoose density ``` ### 扫描 在政府顶级域中发现AI服务: ``` visorgoose scan --shodan-key $SHODAN_API_KEY --report report.md # 关注一个顶级域名 visorgoose scan --tld .go.id --rotate-every 5 # 跳过一个源 visorgoose scan --no-ctlogs visorgoose scan --no-shodan visorgoose scan --no-dns # 断开连接时自动连接 Mullvad visorgoose scan --auto-vpn # 绕过 VPN 检查(不推荐) visorgoose scan --no-vpn ``` ### 探测 直接指纹特定IP: ``` visorgoose probe 103.107.245.11 103.156.110.80 visorgoose probe 16.64.116.67 --json ``` ### 差异 显示自上次扫描以来新、更改和消失的节点: ``` visorgoose diff --prev visorgoose-state-2026-04-01.json visorgoose diff --prev old.json --report diff.md visorgoose diff --json ``` ### 报告 从当前状态文件生成Markdown报告: ``` visorgoose report --out findings.md ``` ### 持久标志(所有子命令) | 标志 | 默认 | 描述 | |---|---|---| | `--state ` | `visorgoose-state.json` | 状态文件路径。 | | `--shodan-key ` | `SHODAN_API_KEY` env | Shodan API密钥。 | | `--workers ` | `20` | 并发探测工作者。 | | `--no-vpn` | `false` | 跳过Mullvad VPN检查。 | | `--rotate-every ` | `0` | 每 N 个探测轮换 VPN 退出(0 = 禁用)。 | ### 扫描标志 | 标志 | 默认 | 描述 | |---|---|---| | `--tld ` | all 25 TLDs | 限制到一个顶级域(例如 `.go.id`)。 | | `--no-ctlogs` | `false` | 跳过CT日志查询。 | | `--no-shodan` | `false` | 跳过Shodan查询。 | | `--no-dns` | `false` | 跳过CT主机名的DNS A记录解析。 | | `--report ` | | 扫描后写入Markdown报告。 | | `--auto-vpn` | `false` | 如果断开连接,自动连接Mullvad。 | ### 探测标志 | 标志 | 默认 | 描述 | |---|---|---| | `--json` | `false` | 以JSON格式输出。 | ### 差异标志 | 标志 | 默认 | 描述 | |---|---|---| | `--prev ` | | 与之前状态文件进行差异比较。 | | `--json` | `false` | 以JSON格式输出差异。 | | `--report ` | | 写入Markdown差异报告。 | ### 报告标志 | 标志 | 默认 | 描述 | |---|---|---| | `--out ` | `visorgoose-report.md` | 输出Markdown文件。 | ## 政府顶级域(25) ``` .gov .mil .go.id .gov.br .gov.tw .gouv.fr .gob.mx .go.jp .gov.in .gov.au .gov.uk .gc.ca .gob.es .gov.cn .gov.za .go.kr .gov.sg .go.th .gob.ar .gov.my .gov.ph .gov.pk .gov.vn .gov.ng .gov.eg ``` 每个顶级域条目都携带一个首选的Mullvad退出国家,用于归因断路路由(例如,美国通过NL/阿姆斯特丹,中国通过SE/斯德哥尔摩等)。 ## 状态模式 ``` { "version": "1.0.0", "timestamp": "2026-06-03T12:00:00Z", "nodes": { "103.107.245.11": { "ip": "103.107.245.11", "hostname": "ai.example.go.id", "source": "ctlogs", "tld": ".go.id", "country": "ID", "org": "Ministry of Finance", "first_seen": "2026-06-03T12:00:00Z", "last_seen": "2026-06-03T12:00:00Z", "tags": ["CVE-2025-63389", "RAG"], "services": [ { "port": 11434, "type": "ollama", "version": "0.3.12", "vulnerable": true, "cloud_proxy": false, "takeover": false, "models": [ { "name": "llama3.2:latest", "system_prompt": "You are a helpful assistant..." } ] } ] } } } ``` ## 探测逻辑 对于每个候选IP,VisorGoose调用`/api/version`以确认可达性,然后调用`/api/tags`以获取模型列表,然后对每个模型调用`/api/show`以获取系统提示。CVE-2025-63389通过向`/api/create`发送canary `FROM scratch`模型文件进行测试;200响应确认了未经认证的模型创建。 云代理检测寻找以`:cloud`结尾的模型名称,并在401错误体中探测`signin_url`,这是实时Ollama Connect声明URL。 ## 示例 ``` $ visorgoose probe 103.107.245.11 --json { "IP": "103.107.245.11", "Reachable": true, "Version": "0.3.12", "Vulnerable": true, "CloudProxy": false, "Takeover": false, "Models": [ { "name": "llama3.2:latest", "system_prompt": "You are a helpful government assistant." }, { "name": "nomic-embed-text:latest" } ] } ``` 示例是从源代码结构标签构建的。该工具在其探测输出中不发出破折号。`diff`文本命令打印空主机名字段中的破折号(直接从源代码);那些只出现在`diff`终端输出中,不在JSON或Markdown报告中。 ## VisorGoose不是什么 VisorGoose发现并描述了公开可达的Ollama实例。它不利用CVE-2025-63389(对其进行测试,但不滥用它),不执行账户接管(识别声明URL,但不提交它),也不探测端口11434上除Ollama以外的服务。使用VisorBishop进行更广泛的可观察性平台扫描。 ## 许可证 MIT。属于NuClide工具链的一部分。联系:[nuclide-research.com](https://nuclide-research.com)
标签:AI基础设施, API攻击, CVE-2025-63389, DNS 反向解析, DNS解析, EVTX分析, Go语言, RAG模型, VPN连接, 云代理接管, 差异比较, 开源项目, 政府域名, 数据去重, 数据统计, 日志审计, 状态持久化, 程序破解, 端口扫描, 系统指纹, 纵向追踪, 蒸馏模型, 证书透明度