nuclide-research/JAXEN
GitHub: nuclide-research/JAXEN
JAXEN是一款用于Shodan数据汇总和AI/ML驱动的资产发现的平台。
Stars: 1 | Forks: 0
# JAXEN
将 Shodan 查询汇总到状态化的 SQLite 资产数据库中,并大规模驱动 AI/ML 基础设施发现。
JAXEN 在汇总阶段为 NuClide 评估链提供数据。它发出 Shodan API 查询,分页显示全部人口,将每个发现的宿主持久化到 `empire.db` 中,包括 IP、端口、组织、ISP、主机名、产品、版本和 Shodan 的索引计算出的 favicon 哈希。预构建的 AI/ML dork 工作流程覆盖六个暴露类别。`import` 子命令可以摄取外部工具输出,包括可选的 Shodan 丰富化,包括 `--no-lookup` 用于手动 Shodan 网页导出。取证子命令深入检查来自实时 IP、PEM 文件或提取的固件目录树的 TLS 证书。
## 安装
```
git clone https://github.com/nuclide-research/JAXEN
cd JAXEN
go build -o jaxen .
```
Go 1.25+。SQLite 通过 `modernc.org/sqlite` 内嵌(纯 Go,无 CGo,无需 C 编译器)。
配置 Shodan API 密钥:
```
export SHODAN_API_KEY="your_key"
# 或将其写入 ~/.config/shodan/api_key(Shodan CLI 位置)
# 环境变量优先;两者都会被检查
```
## 使用
```
jaxen hunt [--clean] [--export] [--passive ] [--web] [--pages N]
[--max N] [--delay N] ""
jaxen ai-hunt [category]
jaxen menlo-hunt [--org name]
jaxen buckets [--workers N] [--timeout N]
jaxen profile [--org name] []
jaxen cert-parse
jaxen pivot
jaxen aimap [hostname]
jaxen analyze [--fast]
jaxen graph
jaxen diff [--webhook ] [old.json] [new.json]
jaxen list [--org ]
jaxen import [--no-lookup] [--delay N] [--source name]
jaxen run [args...]
jaxen nuke [ip...]
jaxen cheatsheet
jaxen --version
```
### 搜索标志
| 标志 | 默认 | 影响 |
|------|---------|--------|
| `--clean` | 关闭 | 剔除 CDN/云噪声(Google、Amazon、Microsoft、Cloudflare、Akamai、Fastly) |
| `--export` | 关闭 | 写入 `summary.csv` |
| `--passive ` | | 通过 crt.sh CT 日志扩展查询 |
| `--web` | 关闭 | 使用浏览器会话而不是 API 密钥;无密钥时自动启用 |
| `--pages N` | `1` | `--web` 模式下要获取的页面数(每页 10 个 IP) |
| `--max N` | `50` | 分页时最大宿主数(每页 100 个;增加查询信用成本) |
| `--delay N` | `1.0` | 分页时页面之间的秒数 |
### 导入标志
| 标志 | 影响 |
|------|--------|
| `--no-lookup` | 在端口 0 存储条目而不进行 Shodan 丰富化(用于手动导出) |
| `--delay N` | Shodan API 调用之间的秒数 |
| `--source name` | 使用源工具名称标记注释字段 |
## empire.db 架构
`empire.db` 中的两个表:
```
assets (
id INTEGER PRIMARY KEY,
ip TEXT NOT NULL,
port INTEGER NOT NULL,
org TEXT,
isp TEXT,
hostname TEXT,
product TEXT,
version TEXT,
favicon_hash TEXT,
first_seen TEXT,
last_seen TEXT,
status TEXT DEFAULT 'active',
notes TEXT,
UNIQUE(ip, port)
)
cloud_assets (
id INTEGER PRIMARY KEY,
org TEXT,
provider TEXT,
bucket_name TEXT,
url TEXT,
status_code INTEGER,
public INTEGER DEFAULT 0,
first_seen TEXT,
UNIQUE(url)
)
```
`favicon_hash` 被动存储 Shodan 的索引计算的 `http.favicon.hash`(无额外请求)。当哈希与已知产品默认值匹配时,JAXEN 将 `FAVICON-PRESENT DEFAULT-FAVICON:` 添加到注释中。
## 搜索输出
`hunt` 写入 `recon_dump.json`:
```
{
"query": string,
"timestamp": string,
"total_results_available": int,
"returned": int,
"hosts": [{ ...Shodan HostData fields... }]
}
```
之前的运行将自动旋转到 `recon_dump.old.json`,为 `diff` 提供基线,无需手动管理。
## ai-hunt 类别
六个预构建的 Shodan dork 工作流程覆盖 AI/ML 暴露面:
| 类别 | 目标 |
|----------|---------|
| `vector-db` | ChromaDB、Qdrant、Weaviate、Milvus |
| `inference` | Ollama、vLLM、LocalAI、LM Studio |
| `orchestration` | Flowise、Langflow、Dify、Open WebUI、AnythingLLM |
| `gpu` | NVIDIA DCGM、Triton 推理 |
| `mlops` | MLflow、Kubeflow、Label Studio |
| `gateway` | LiteLLM 代理、OpenRouter、PromptLayer |
`jaxen ai-hunt all` 依次运行每个类别。
## 示例
```
$ jaxen hunt --max 200 --clean 'product:"Ollama" port:11434'
[*] querying Shodan: product:"Ollama" port:11434
[+] page 1: cum= 100 / total=16473
[+] page 2: cum= 200 / total=16473
[*] truncated to --max 200 of 16473 available; raise --max to capture more
[*] --clean: dropped 12 CDN/cloud, 188 remain
[*] total available: 16473 | returning: 188
[+] saved 48291 bytes -> recon_dump.json
[+] empire.db: 188 assets upserted (141 with index favicon, 3 product-default matches)
```
## 设计笔记
JAXEN 是 NuClide 链的汇总阶段。其输出流向:
- `jaxen aimap ` 将主动指纹识别委托给 `aimap` 二进制文件
- `jaxen diff` 检测新资产并触发 Slack/Discord webhook 警报
- `jaxen run ` 执行针对 `empire.db` 的自定义 Go 代码,无需编写单独的工具
`run` 子命令编译并执行一个具有直接数据库访问的 Go 文件。
这允许将每项调查分析保留在版本控制的脚本中,而不是重复手动查询。
## JAXEN 不是什么
JAXEN 是一个汇总和关联工具。它不在 HTTP 响应级别上指纹服务;使用 `aimap` 进行此操作。它不运行攻击链;使用更广泛的武器库。`hunt` 子命令消耗 Shodan 查询信用;使用 `--max` 和 `--clean` 来限制信用消耗。
## 许可证
MIT。NuClide 工具链的一部分。联系:[nuclide-research.com](https://nuclide-research.com)
标签:AI/ML, API查询, BSD, CIDR, EVTX分析, Go语言, SQLite, TLS证书分析, Webhook, 代码示例, 力导向图, 数据分析, 数据导入, 数据导出, 数据库, 数据持久化, 数据挖掘, 数据比对, 数据清洗, 数据监控, 日志审计, 程序破解, 网络安全, 脚本语言, 隐私保护