nuclide-research/VisorLog
GitHub: nuclide-research/VisorLog
VisorLog:AI基础设施OSINT的生命周期发现账本。
Stars: 1 | Forks: 0
# 视觉日志
NuClide OSINT 工具链的 ECS 标准化、生命周期跟踪、只读的发现账本。
VisorLog 将 aimap、VisorGoose、VisorRAG 和 ollama-recon 的 AI 基础设施发现存储在单个 SQLite 数据库中(默认为 `visorlog.db`)。每个发现都经过六个阶段的生命周期。`ingest` 命令标准化三种扫描格式;`query` 通过部门、严重性、状态、标签、国家、来源、TLD 或日期范围进行筛选;`alert` 在过时或高严重性的开放发现上触发四个内置规则;`serve` 在 `127.0.0.1:8765` 上启动网络仪表板。所有命令都接受 `--db ` 以指向非默认数据库文件。
## 安装
```
go install github.com/nuclide-research/VisorLog@latest
```
或者从源代码构建:
```
git clone https://github.com/nuclide-research/VisorLog
cd VisorLog
go build -o visorlog .
```
Go 1.22 或更高版本。
## 使用
```
visorlog [--db ]
```
| 命令 | 功能 |
|------|--------|
| `ingest` | 从 NDJSON 或 VisorGoose / ollama-recon 状态文件读取事件 |
| `query` | 过滤并打印发现 |
| `update` | 转变发现的生命周期状态 |
| `status` | 严重性直方图和部门分解 |
| `alert` | 运行内置警报规则 |
| `report` | 编写 Markdown 报告 |
| `add` | 手动插入发现 |
| `serve` | 启动网络仪表板 |
### 摄取
```
visorlog ingest # NDJSON from stdin
visorlog ingest --from findings.ndjson # NDJSON from file
visorlog ingest --from visorgoose-state.json --format visorgoose
visorlog ingest --from ollama-gov-state.json --format ollama-recon
visorlog ingest --from findings.ndjson --sector government --dedup
```
| 标志 | 默认 | 影响 |
|------|---------|--------|
| `--from ` | stdin | 从文件读取 |
| `--format ` | `ndjson` | `ndjson`, `visorgoose`, `ollama-recon` |
| `--sector ` | | 覆盖所有导入事件的部门 |
| `--dedup` | true | 跳过数据库中已存在的 IP(NDJSON:通过来源+笔记对跳过) |
### 查询
```
visorlog query --severity critical --status open
visorlog query --sector government --country ID --json
visorlog query --tags TAKEOVER,CLOUD --format csv
visorlog query --since 2026-05-19 --until 2026-05-19T23:59:59Z
```
| 标志 | 影响 |
|------|--------|
| `--sector ` | government, university, healthcare, commercial, isp, military |
| `--severity ` | critical / high / medium / low / info |
| `--status ` | 生命周期阶段 |
| `--tag ` | 单个标签子串 |
| `--tags X,Y,Z` | 多标签 OR(任意匹配) |
| `--country ` | ISO 3166 alpha-2 |
| `--source ` | 发现工具 |
| `--tld ` | 顶级域名 |
| `--since ` | 时间戳 >=(YYYY-MM-DD 或 RFC3339) |
| `--until ` | 时间戳 <=(YYYY-MM-DD 或 RFC3339) |
| `--limit ` | 最大结果(默认 100) |
| `--format ` | 表格 / json / csv / md |
| `--json` | `--format json` 的快捷方式 |
### 更新
```
visorlog update 4 --status disclosed --note "emailed cert@example.org"
visorlog update 4 --status acknowledged
visorlog update 4 --status remediated
```
### 添加
```
visorlog add --ip 203.0.113.10 \
--hostname ollama.example.gov \
--org "Example Agency" \
--country US --sector government --tld .gov \
--severity critical --tags TAKEOVER,CLOUD \
--source manual
```
### 服务
```
visorlog serve # dashboard at 127.0.0.1:8765
visorlog serve --addr 0.0.0.0:9000 # custom listen address
```
## 数据库模式
一个表,`events`,包含五个索引列:
| 列 | 类型 | 备注 |
|----|------|-------|
| `id` | INTEGER | 自增主键 |
| `timestamp` | TEXT | RFC3339,UTC |
| `event_category` | TEXT | `discovery`,`disclosure`,`remediation`,`regression`,`acknowledged` |
| `event_type` | TEXT | `created`,`updated`,`closed` |
| `event_severity` | TEXT | `critical`,`high`,`medium`,`low`,`info` |
| `host_ip` | TEXT | |
| `host_hostname` | TEXT | |
| `org_name` | TEXT | |
| `org_country` | TEXT | ISO 3166 alpha-2 |
| `sector` | TEXT | `government`,`university`,`healthcare`,`commercial`,`isp`,`military` |
| `tld` | TEXT | |
| `tags` | TEXT | JSON 数组 |
| `source` | TEXT | `visorgoose`,`aimap`,`ollama-recon`,`manual` 等 |
| `vuln_ids` | TEXT | CVE ID 的 JSON 数组 |
| `lifecycle_status` | TEXT | 当前阶段 |
| `notes` | TEXT | 只读状态转换日志 |
| `raw` | TEXT | 可选 JSON 有效负载 |
在 `host_ip`、`lifecycle_status`、`event_severity`、`sector`、`timestamp` 上建立索引。
## 生命周期
```
open -> disclosed -> acknowledged -> remediated -> verified -> archived
```
每个 `update` 调用都会将一个带时间戳的笔记追加到 `notes` 列。记录永远不会被修改或删除。
## 警报规则
`visorlog alert` 评估四个内置规则:
| 规则 | 触发条件 |
|------|-----------|
| `new-takeover` | 任何标记为 `TAKEOVER` 的开放发现 |
| `new-critical` | 任何开放的关键发现 |
| `stale-critical` | 老于 7 天的开放关键发现 |
| `stale-high` | 老于 14 天的开放高发现 |
## 示例
```
$ visorlog --db nuclide.db status
=== OPEN FINDINGS ===
critical ██ 2
medium ██ 2
=== BY SECTOR / SEVERITY / STATUS ===
SECTOR SEVERITY STATUS COUNT
government critical open 2
government medium open 1
```
```
$ visorlog --db nuclide.db alert
[new-takeover] TAKEOVER open: 203.0.113.10 (ollama.example.gov) [government]
[stale-critical] STALE critical: 192.0.2.5 open for >7 days — disclose?
```
## 相关工具
```
VisorGoose --+
aimap --+--> visorlog ingest --> visorlog.db --> query / alert / report / serve
ollama-recon--+
```
VisorLog 输出为 VisorScuba 提供合规评分。
## VisorLog 不是什么
VisorLog 是一个账本,不是一个扫描器。它不会探测目标或生成发现。它标准化其他工具产生的结果,跟踪生命周期状态,并触发警报。`raw` 列保留了原始扫描有效负载,但 VisorLog 不会对其进行解释。
## 许可证
MIT。NuClide 工具链的一部分。联系:[nuclide-research.com](https://nuclide-research.com)
标签:AI基础设施, ESC4, EVTX分析, Go语言, OSINT, SQLite数据库, Web仪表盘, 内核监控, 威胁情报, 开发者工具, 数据去重, 数据合规, 数据审计, 数据导入, 数据导出, 数据报告, 数据更新, 数据格式转换, 数据检索, 数据监控, 日志审计, 生命周期管理, 程序破解, 网络安全, 隐私保护