haKC-ai/panhandlr
GitHub: haKC-ai/panhandlr
该项目利用 AI 将 Google Dorks 自动转化为可操作的威胁情报并生成 STIX 2.1 结构化报告,解决了 OSINT 调查流程自动化的问题。
Stars: 1 | Forks: 1

`由 AI 驱动的 OSINT pipeline,可将 Google Dorks 自动转化为可操作的威胁情报和结构化的 STIX 2.1 报告。`
该工具主要分为两个阶段运行:
1. **Dorking**:使用 JSON 文件中的 Google Dorks(或使用 AI 生成新的 Dorks)来查找潜在的恶意或有趣的 URL。
2. **Analysis**:抓取所发现 URL 的内容,利用 AI 模型提取 IOC,并生成 CSV 和 STIX 2.1 格式的详细技术报告。
## 工作流程
```
graph TD
A[Start Panhandlr] --> B{Main Menu};
B --> C[Phase 1: Dorking];
B --> D[Phase 2: Analysis];
B --> E[Exit];
subgraph Phase 1
C --> C1{Select Dork File};
C1 --> C2[Use Existing JSON];
C1 --> C3[Create New via AI];
C2 --> C4[Run Google Dorks];
C3 --> C4;
C4 --> C5[Output: global_google_dorks_analysis.csv];
end
subgraph Phase 2
D --> D1[Input: global_google_dorks_analysis.csv];
D1 --> D2{For Each URL};
D2 --> D3[Scrape Web Page];
D2 --> D4[Clone Git Repo];
D3 --> D5[Extract Text];
D4 --> D5;
D5 --> D6[Analyze Text with OpenAI];
D6 --> D7[Extract and Aggregate IOCs];
D7 --> D8[Generate Reports];
end
subgraph Reports
D8 --> R1[Detailed IOCs CSV];
D8 --> R2[Technical Summary CSV];
D8 --> R3[STIX 2.1 Threat Report JSON];
end
```

## 功能特点
- **交互式菜单**:提供用户友好的终端界面,便于轻松导航。
- **AI 驱动的 Dork 创建**:使用 OpenAI 的 `gpt-4o` 自动生成关于任何主题的全面 dork 文件。
- **可扩展的 Dorking 引擎**:使用并创建您自己的基于 JSON 的 dork 文件,以便进行可重复的研究。
- **自动化 Google 搜索**:使用 Google Custom Search API 执行 dorks 以查找相关的 URL。
- **智能内容抓取**:从静态网站(`newspaper3k`)和重度依赖 JavaScript 的动态页面(`selenium`)中获取文本。
- **Git 仓库分析**:克隆公开的 Git 仓库,直接从源代码中提取 IOC。
- **AI 驱动的 IOC 提取**:利用 `gpt-4o` 分析抓取的文本并提取广泛的 artifacts:
- IP 地址、域名和 URL
- 文件哈希值(MD5、SHA1、SHA256)
- CVE 和 MITRE ATT&CK TTPs
- 恶意软件家族和威胁行为者名称
- 可操作的追踪叙述。
- **多格式报告**:生成三种不同的报告:
1. 针对所有发现的 IOC 提供详细的、按 URL 划分的细分。
2. 针对威胁态势提供由 AI 生成的高层次技术总结。
3. 生成机器可读的 STIX 2.1 报告,便于与安全工具集成。
- **自动无害化处理**:报告中的所有相关指标都会自动进行无害化处理(例如,`http://` -> `hxxp://`,`example.com` -> `example[.]com`)。

## 设置与安装
### 前置条件
- Python 3.7+
- Git
### 1. 克隆仓库
```
git clone https://github.com/your-username/panhandlr.git
cd panhandlr
```
### 2. 安装依赖项
使用 `requirements.txt` 文件安装所有必需的 Python 库。
```
pip install -r requirements.txt
```
这还将安装 `chromedriver-manager`,它会自动处理 Selenium WebDriver。
### 3. 配置环境变量
Panhandlr 需要 Google Custom Search 和 OpenAI 的 API 密钥。
1. 在项目的根目录中创建一个 `.env` 文件:
touch .env
2. 将以下密钥添加到 `.env` 文件中:
# 从 Google Cloud Console 获取密钥:https://developers.google.com/custom-search/v1/overview
GOOGLE_SEARCH_API_KEY="YOUR_GOOGLE_API_KEY"
# 创建一个 Programmable Search Engine 并获取其 ID:https://programmablesearchengine.google.com/
GOOGLE_CSE_ID="YOUR_CUSTOM_SEARCH_ENGINE_ID"
# 从 OpenAI Platform 获取密钥:https://platform.openai.com/api-keys
OPENAI_API_KEY="sk-YOUR_OPENAI_API_KEY"
## 使用方法
在根目录下运行主脚本:
```
python panhandlr.py
```
您也可以使用提供的 shell 脚本:
```
./start_main.sh
```
### 主菜单
脚本将为您提供三个选项:
1. **Dorking 阶段**:从这里开始收集 URL。
2. **Analysis 阶段**:在 Dorking 阶段之后运行此步骤以处理结果。
3. **退出**:关闭应用程序。
#### 阶段 1:Dorking 阶段
当您选择此选项时,您可以:
- **选择现有的 dorks 文件**:脚本将列出 `analyzers/` 目录中的所有 `.json` 文件。其中包含 `sharepoint.json` 文件作为示例。
- **创建新的 Dorks 文件**:此选项会提示您输入一个主题。然后它使用 GPT-4o 生成一个新的 dork 文件,并将其保存在 `analyzers/` 目录中以便立即或将来使用。
选择您的 dorks 后,脚本将执行它们,并将发现的所有唯一 URL 保存到 `analysis/global_google_dorks_analysis.csv`。
#### 阶段 2:Analysis 阶段
此阶段会自动读取 `global_google_dorks_analysis.csv` 文件。它会遍历每个 URL,抓取其内容,提取 IOC,并生成最终报告。
输出将保存在 `analysis/` 目录中:
- `detailed_ioc_report_defanged.csv`:针对每个源 URL 找到的 IOC 逐行进行细分。
- `technical_summary_report_defanged.csv`:包含 AI 生成的总结和所有唯一指标列表的合并报告。
- `stix_threat_report.json`:一个结构化的 STIX 2.1 bundle,包含所有相关指标、威胁行为者和恶意软件家族。
## 项目结构
```
.
├── analyzers/ # Contains JSON dork files
│ └── sharepoint.json
├── analysis/ # Directory for all output reports
├── modules/ # Core logic scripts
│ ├── google_dorks_standalone.py # Handles the dorking phase
│ └── url2ioc.py # Handles the analysis and reporting phase
├── panhandlr.py # Main entry point with the user interface
├── requirements.txt # Python dependencies
├── banner.txt # ASCII art banner
└── start_main.sh # Helper script to run the application
```
### Dork 文件结构 (`analyzers/*.json`)
Dork 文件是简单的 JSON 对象。您可以针对不同的研究主题创建自己的文件。脚本支持使用占位符 `{domain}` 和 `{domain_no_tld}` 进行特定域名的搜索,尽管主处理程序目前在全局范围内运行它们。
**来自 `sharepoint.json` 的示例:**
```
{
"google_dorks": [
{
"name": "SharePoint CVE-2025-53770 or 53771 Mentions",
"dork": "(\"CVE-2025-53770\" OR \"CVE-2025-53771\") site:{domain}"
},
{
"name": "SharePoint Webshell Artifacts",
"dork": "site:{domain} (inurl:spinstall0 OR inurl:ghost) inurl:.aspx"
}
],
"social_media_dorks": [
{
"name": "CVE Mentions on Twitter",
"dork": "site:twitter.com (\"CVE-2025-53770\" OR \"CVE-2025-53771\") sharepoint"
}
]
}
```
标签:AI, ESC4, Google Dorks, OSINT, Python, STIX, 威胁情报, 开发者工具, 数据泄露, 无后门, 自动化代码审查, 逆向工具