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连接, 云代理接管, 差异比较, 开源项目, 政府域名, 数据去重, 数据统计, 日志审计, 状态持久化, 程序破解, 端口扫描, 系统指纹, 纵向追踪, 蒸馏模型, 证书透明度