Gaia - 攻击面发现与AI辅助分类
Gaia 是一个以 CLI 为主的攻击面分析工具,用于发现端点与参数、降低噪声,并利用静态启发式规则和可选的 AI 推理来突出安全相关风险。它编排了 Katana、gau、arjun、linkfinder 和 uro,将原始 URL 集合转化为规范化、风险感知的视图,适用于漏洞赏金、应用安全和安全工程工作流。
Gaia 不是一个自动化的漏洞扫描器。它映射攻击面、应用确定性启发式规则,并可以借助 LLM 生成测试提示。所发现的结果是指导性信息,而非确认的漏洞。需要手动验证。AI 输出仅作为建议而非权威结论,用于帮助决定关注重点和测试方法。

Gaia 能做什么
Gaia 关注信号而非噪声。它能够:
- 爬取活跃的应用
- 收集历史 URL
- 提取参数
- 规范化并去重端点
- 分析 JavaScript 以发现端点、URL、密钥、电子邮件和文件
- 应用确定性的安全启发式规则
- 可选地通过 LLM 推理(受限制且优化过)增强发现结果
最终得到一份快速、清晰的应用攻击面地图。
适用人群
- 进行快速侦察与分类的漏洞赏金猎人
- 绘制攻击面的应用安全工程师
- 自动化早期分析的安全工程师
- 希望了解暴露端点与参数的开发者
主要特性
- 通过 Katana 进行实时爬取
- 通过 gau 发现历史 URL
- 通过 arjun + 查询解析发现参数
- 使用 uro 进行 URL 规范化和去重
- JS 分析器用于低噪声的 JS 提取
- 静态风险启发式规则(IDOR、SSRF、认证、遍历、注入等)
- 可选的 LLM 辅助分析(上限、精简、快速)
- 噪声降低:静态资产过滤、跟踪/垃圾参数过滤
- 面向性能的设计:受限的 AI 调用、紧凑的载荷、简洁的响应快照
工作原理(流水线)
- 解析外部工具
- 爬取目标(Katana)
- 收集历史 URL(gau)
- JS 分析
- 提取参数(arjun + 解析)
- 规范化与去重 URL(uro)
- 分析(静态 + 可选 AI)
- 生成报告
每个阶段会报告发现了多少 URL 或参数。
使用方法
基本扫描
gaia -u https://example.com
禁用特定阶段
gaia -u https://example.com --no-gau --no-ai
从标准输入读取 URL
cat urls.txt | gaia --stdin
示例 CLI 运行
Gaia CLI 演示 – 爬取、规范化和 AI 辅助分析
安装
要求
- Python 3.10+
- (可选)virtualenv
- Go 工具链(用于 katana / gau 自动安装)
设置
python3 -m venv venv
source venv/bin/activate
pip install -e .
若启用自动安装,外部工具(katana、gau、arjun、linkfinder、uro)可自动安装。
CLI 标志
- -u, --url 目标 URL
- --stdin 从标准输入读取 URL
- --no-gau 禁用历史 URL 收集
- --no-arjun 禁用 arjun 参数发现
- --no-linkfinder 禁用 linkfinder JS 发现
- --no-uro 禁用 URL 规范化
- --no-js-analyzer 禁用 JS 分析器阶段
- --js-max-fetches N 进行分析时最多抓取的 JS 文件数
- --no-ai 禁用 AI 推理
- --show-assets 在输出中显示静态资产
- --only-params 仅显示带参数的端点
- --auto-install 自动安装缺失的工具
- --max-urls N 限制收集的 URL 数量
- --format console|md|json 输出格式
- --output PATH 将报告写入文件
- -h, --help 显示帮助信息
环境变量
AI / LLM
- GAIA_LLM_MODEL LiteLLM 模型名称(启用 AI 必需)
- GAIA_LLM_MAX_ENDPOINTS 发送给 LLM 的最大端点数量(默认:15)
- GAIA_LLM_INCLUDE_RESPONSES 包含 HTTP 响应快照(默认:true)
- GAIA_LLM_MAX_RESPONSES 最多抓取的快照数(默认:50)
- GAIA_LLM_MAX_BODY_CHARS 响应体最大字符数(默认:4000)
功能开关
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
调试
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
说明与模式:
- 快速模式:禁用 AI 和历史工具(--no-ai --no-gau),用于快速侦察。
- 深度模式:启用所有工具和 AI,设置 GAIA_LLM_MODEL;如需更广的 AI 覆盖,可增大 GAIA_LLM_MAX_ENDPOINTS。
- 分类模式:保持 AI 开启但使用默认设置(上限端点、精简载荷),达到速度与覆盖的平衡。
LiteLLM / AI 配置
AI 是可选的。Gaia 在无 AI 时也能完全正常工作。
使用 OpenAI:
- GAIA_LLM_MODEL(示例:gpt-4o-mini 或 gpt-4.1)
- OPENAI_API_KEY:LiteLLM 根据这些变量将请求路由到 OpenAI。
使用 Google Gemini
- GAIA_LLM_MODEL(示例:gemini/gemini-1.5-pro)
- GOOGLE_API_KEY:LiteLLM 根据这些变量将请求路由到 Gemini。
使用本地模型(Ollama / LM Studio)
- GAIA_LLM_MODEL(示例:ollama/llama3 或 ollama/qwen2.5)
- LiteLLM 连接到本地端点;本地模型无需 API 密钥。
输出
控制台输出
- 端点表格(已筛选、可读)
- 每个参数的风险标签
- 汇总统计
- AI 进度指示器(单行)
参数说明
在报告末尾,Gaia 会输出聚合的参数说明:
- 该参数为何看起来有风险
- 在何处看到
- 实用的测试思路
其他格式
- JSON(机器可读)
- Markdown(可直接用作报告)
性能说明
- AI 调用严格限制上限
- 载荷经精简且键名缩短
- 静态资产和垃圾参数被跳过
- 2xx 响应仅发送 content-type + 简短片段
- 设计目标是在大型攻击面上保持快速
贡献
欢迎贡献。请保持 PR 专注且可读。鼓励改进启发式规则、性能、过滤、AI 提示和文档。若进行较大的更改,请先开启 Issue 进行讨论。
许可
MIT
免责声明
Gaia 是一个侦察与分析工具。请务必负责任地测试,并且仅针对你有权评估的系统进行测试。