nuclide-research/aimap

GitHub: nuclide-research/aimap

aimap是一款AI/ML基础设施扫描工具,用于发现潜在的安全风险。

Stars: 3 | Forks: 0

![aimap](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5a818e3ff1083248.png) 在人口规模上指纹 AI/ML 基础设施,并列出内部暴露的内容。 aimap 是一个单一的 Go 可执行文件,通过 TCP 连接到目标机的开放端口,将每个响应与 AI 和 ML 服务的 218 个指纹数据库进行匹配,然后运行多达 62 个专门的深度枚举器,从任何响应服务的服务中提取集合、模型列表、实验数据、HTTP 响应中的凭据、可声明的管理员状态和 PII 字段。三个阶段:端口发现、指纹匹配、深度枚举。深度枚举器并发(有界)地获取每个集合/每个类/每个索引的数据,因此枚举密集型主机(未经身份验证的拥有数百个集合的 Qdrant)可以在几秒钟内完成,而不是几分钟(见性能)。结果是形状适合直接输入 `visorlog ingest`、`winnow` 和 SIEM 管道的 JSON 报告。 我们构建 aimap 是因为通用扫描器(nmap、nuclei)看到开放端口就停止。它们不知道端口 11434 上的 Ollama 暴露了它持有的每个模型,也不知道端口 3000 上的 Flowise 在其凭据面板中存储了 OpenAI 密钥,或者端口 8888 上的 Jupyter 没有令牌。aimap 知道所有这些事情,并在单次遍历中呈现它们。 ## 截图 **第二阶段 — AI 服务指纹** ![第二阶段指纹](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7c165221ac083249.png) **第三阶段 — 深度枚举** ![第三阶段深度枚举](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7e8d5c2911083249.png) **服务卡** ![服务卡](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f72467f6b0083250.png) **Ollama —未经身份验证的推理(CRIT**) ![Ollama 服务卡](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/80e9eabadd083251.png) **One API —默认凭据激活(CRIT**) ![One API 默认凭据](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2f4f84ebc9083252.png) **完整摘要 — 11 个主机,14 个服务,ML 相关基础设施** ![完整摘要](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/83f048c1de083253.png) ## 安装 ``` go install github.com/nuclide-research/aimap@latest ``` 或者从源代码构建: ``` git clone https://github.com/nuclide-research/aimap cd aimap go build -o aimap . ``` 预构建的 Linux amd64 和 arm64 二进制文件在发布页面。 Go 1.21+,零外部依赖。 ## 使用 ``` aimap -target 192.0.2.10 aimap -target 10.0.0.0/24 -threads 50 -o audit.json aimap -list ips.txt -ports-class llm-gateway -threads 30 -o out.json aimap -version ``` | 标志 | 默认 | 影响 | |------|---------|--------| | `-target` | (必需) | 单个 IP、主机名或 CIDR | | `-list` | | 目标文件,每行一个目标;支持 `#` 注释 | | `-ports` | 42 端口默认集 | 以逗号分隔的端口列表 | | `-ports-class` | | 命名的端口配置文件(见下文);覆盖 `-ports` | | `-timeout` | `5s` | 每个连接的超时时间 | | `-threads` | `20` | 并发扫描线程数 | | `-o` | | JSON 报告输出文件 | | `-v` | 关闭 | 详细输出 | | `-scan-all-fingerprints` | 关闭 | 在每个开放端口上探测每个指纹,绕过 DefaultPorts 过滤器 | | `-exclude-compromised` | 关闭 | 从报告中删除勒索擦除的主机(Meow 类) | | `-version` | | 打印版本并退出 | 默认 42 端口列表:`80,443,1984,2379,3000,3001,4000,4040,4200,5000,5001,5678,6333,7575,7576,7860,8000,8001,8080,8081,8088,8123,8233,8265,8443,8501,8787,8888,8889,9000,9090,9091,9200,10000,11434,15500,18080,18789,19530,30000,51000,55000` ## 端口配置文件 `-ports-class ` 将端口列表缩小到为特定服务类手动编写的集合。在典型的人口调查中,这比 42 端口默认值减少了 5-10 倍的墙时。 | 配置文件 | 端口 | 最佳用途 | |---------|-------|----------| | `llm-gateway` | 12 端口 | Ollama、vLLM、TGI、Open WebUI、LiteLLM、sub2api | | `vector-db` | 11 端口 | Qdrant、Weaviate、ChromaDB、Milvus | | `observability` | 10 端口 | Langfuse、Helicone、MLflow、Phoenix、Prometheus | | `registry` | 11 端口 | Docker、Harbor、Quay | | `network-mesh` | 19 端口 | Envoy admin、Istio、Linkerd、Kiali、Cilium | | `workflow-orch` | 10 端口 | Prefect、Dagster、Temporal、Argo | | `browser-control` | 9 端口 | CDP、Selenium Grid、Playwright MCP | | `sub2api` | 6 端口 | sub2api-class 池化账户代理 | | `jetson` | 11 端口 | Jetson 边缘 AI、Triton、Frigate | | `healthcare` | 10 端口 | DICOM / PACS / dcm4chee / Orthanc | | `finance` | 10 端口 | QuantConnect、OpenBB、JESSE | | `mcp` | 9 端口 | Model Context Protocol 服务器 | | `wide` | 42 端口 | 默认的通用,显式选择 | | `minimal` | 4 端口 | 快速主机存活 HTTP 探测 | 在 `port_classes.go` 中定义新配置文件:一个映射条目,不触及其他文件。 ## aimap 指纹(218 个服务,62 个深度枚举器) | 类别 | 服务 | |----------|----------| | 向量数据库 | Weaviate、ChromaDB、Qdrant、Milvus、Marqo、Manticore、SurrealDB、Infinity (InfiniFlow)、Databend、GreptimeDB、Epsilla、OceanBase、Neo4j、Couchbase、Apache Solr、Meilisearch、Typesense、Vespa | | LLM 运行时 | Ollama、llama.cpp 服务器、vLLM、SGLang、LocalAI、text-generation-webui | | RAG 框架 | AnythingLLM、LightRAG、PrivateGPT、txtai、Cognita、R2R、Kotaemon、Quivr、Danswer/Onyx、Verba、DocsGPT、Ragapp、Perplexica、RAGFlow | | 图像生成 | ComfyUI、AUTOMATIC1111 / SD WebUI、InvokeAI、Fooocus、SwarmUI | | 嵌入式服务器 | HuggingFace TEI、infinity-embedding、Embedding API | | 模型服务 | TensorFlow Serving、Triton Inference Server、NVIDIA NIM | | ML 平台 | MLflow、Weights & Biases、WandB Service、ClearML、Aim | | 编排 / UI | LangServe、Flowise、Dify、Open WebUI、SillyTavern、LiteLLM、One API、NewAPI、BentoML、sub2api | | AI 代理平台 | OpenHands、AutoGen Studio、Anti-detect CDP 服务器、Mem0、Coolify、OpenClaw | | MCP 服务器 | MCP 服务器 | | 代码助手 | Sourcegraph、Sourcebot、Sweep AI、Tabnine Context Engine、Dyad、bolt.diy、Refact | | 代理内存 | Mem0、Argilla、Zep、Letta | | 数据标注 | Label Studio、CVAT、Doccano、Prodigy | | 计算编排 | Ray Serve、Ray Dashboard、Kubeflow、Apache Spark UI、Apache Airflow、Dask Dashboard、Prefect、Temporal Web | | 容器 / 基础设施 | etcd、Vault、Docker 守护进程、Kubernetes API、Consul、Portainer、Kubelet | | 服务网格 | Kiali、Hubble UI、Linkerd Viz、Linkerd 代理管理员、Cilium 指标、Istio Envoy Admin、Istiod Debug、Pomerium | | 身份验证 / 策略 | Open Policy Agent | | BI / 仪表板 | Metabase、Apache Superset、Redash、Grafana | | 可观察性 | Langfuse、Arize Phoenix、Helicone Self-Hosted、Lunary、OpenLIT、Pezzo、Prometheus | | 工作流自动化 | n8n | | 对象存储 | MinIO | | 分析数据存储 | ClickHouse、Elasticsearch、Apache Pinot、ScyllaDB REST | | AI 安全 / 评估 | Promptfoo、NeMo Guardrails、DeepEval、LangSmith Self-Hosted、Inspect AI、Garak REST、Lakera Guard Self-Hosted、LLM Guard API | | 语音 / 音频 AI | Whisper ASR、Coqui XTTS、Piper TTS、RVC Voice Cloning、OpenVoice、ChatTTS、F5-TTS、Pipecat、Vocode、LiveKit Agents、AI TTS 服务器 | | 医疗 AI / PACS | MONAI 标签服务器、Orthanc DICOM 服务器、dcm4che / dcm4chee-arc、DICOMweb (QIDO-RS) | | 笔记本 / 开发 | Jupyter Notebook、Open Directory、Docker Registry | | 跨切面 | 暴露的 API 凭据(Langfuse、Helicone、Stripe、Anthropic、LangSmith、OpenRouter、Slack) | 218 个服务中有 62 个有专门的深度枚举器。它们呈现: - 向量数据库集合中的 PII 字段 - 未经身份验证的模型执行表面 - HTTP 响应中暴露的凭据 - 可声明的管理员状态(未配置的 Metabase、Flowise 凭据面板) - 数据计数、模式名称和实验元数据 ## 性能 深度枚举阶段是耗时的地方:拥有数百个集合的向量存储意味着数百个每个集合的元数据读取。aimap 以并发(有界)的方式运行这些每个项目的读取,枚举密集型供应商(Qdrant、ChromaDB、Weaviate、Elasticsearch、ClickHouse)将它们的每个集合/每个类/每个索引的探测分散开来)。在一个 157 个主机的未经身份验证的 Qdrant 人口中进行测量:**4:02 → 0:24,约 10 倍**,发现结果相同。 我们测量了但没有找到作为杠杆的是: - 提高 `-threads`(主机级别并发):枚举绑定运行没有变化 - 每次运行的 GET 响应缓存(`AIMAP_FETCH_CACHE=1`,可选):正确,约 8% 的请求减少,其本身没有墙时变化 - 每个主机的无阶段屏障管道(`AIMAP_PIPELINE=1`,可选):其本身没有变化 瓶颈是枚举器内部的串行每个项目循环,而不是编排。并行化该循环是加速;两个可选标志默认关闭,并与它一起组成。 ## JSON 输出形状 `-o` 标志写入 `ScanReport`: ``` tool string version string target string timestamp string ports_scanned int open_ports []{host, port, open, tls, status_code, server, content_type} services []{host, port, service, version, severity, base_url, match_path} adjacencies []{...} enum_results []{service, host, port, base_url, version, auth_status, risk_level, details, findings[]{category, title, detail, severity, data}, raw_data} summary {total_targets, open_ports, services_found, unauthenticated, total_findings, critical, high, medium, low, info, scan_duration} ``` 风险级别:`critical`、`high`、`medium`、`low`、`info`。升级规则: `auth == none` + `high` 发现 = `critical`。 ## 示例 ``` █████╗ ██╗███╗ ███╗ █████╗ ██████╗ ██╔══██╗██║████╗ ████║██╔══██╗██╔══██╗ ███████║██║██╔████╔██║███████║██████╔╝ ██╔══██║██║██║╚██╔╝██║██╔══██║██╔═══╝ ██║ ██║██║██║ ╚═╝ ██║██║ ██║██║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ AI Infrastructure Mapper v1.9.50 by NuClide PHASE 1: PORT DISCOVERY ────────────────────────────────────────────────────────── Scanning 192.0.2.0/24 (256 hosts) Ports: 80,443,3000,... Threads: 20 PHASE 2: AI SERVICE FINGERPRINTING PHASE 3: DEEP ENUMERATION ``` 终端输出是彩色的。JSON 在版本之间是稳定的。 ## 添加指纹 1. 在 `fingerprints.go` 中添加 `Fingerprint` 结构。每个探测至少必须携带 `status_code` + `json_field` 或 `body_contains` 联合。单独的裸单词 `body_contains` 在人口规模上是不稳定的:在提及产品名称的博客文章和营销页面上引发假阳性。 2. 可选地添加 `enum` 函数到 `enumerators.go` 并将其连接到 `runEnumerators`。 ## 伴随工具:aimap-profile `aimap-profile/` 是一个单文件 Python 工具。aimap 指纹服务时,aimap-profile 配置目标:身份、WHOIS、ASN、TLS、类别(个人/机构/商业/研究/蜜罐)、道德标志(HIPAA?CFAA 暴露?安全港?)、PTR 邻居和披露渠道(security.txt、赏金计划、滥用联系人)。输出结构化 JSON 以供管道或 LLM 消费。 有关详细信息,请参阅 `aimap-profile/README.md`。 ## aimap 不是什么 aimap 不对服务进行身份验证、提交表单、POST 数据、执行漏洞或修改目标上的任何内容。所有探测都是只读的 HTTP GET 和 TCP 连接。它是活动的:它建立真实的连接。仅扫描您拥有或明确书面授权测试的系统。 ## 许可证 MIT。属于 NuClide 工具链的一部分。联系方式:[nuclide-research.com](https://nuclide-research.com)
标签:AI/ML 基础设施, Apex, C2日志可视化, EVTX分析, Go 语言, GPT, JSON 报告, Qt框架, 人工智能, 反取证, 威胁情报, 安全评估, 开发者工具, 性能优化, 指纹识别, 数据统计, 日志审计, 服务识别, 未授权访问, 机器学习, 检测绕过, 深度枚举, 漏洞管理, 用户模式Hook绕过, 端口扫描, 网络安全, 认证信息, 逆向工具, 隐私保护, 隐私信息, 默认凭证