shawal-shamraiz/ArzensIntern_SHAWAL_Threat_Intelligence_Tool
GitHub: shawal-shamraiz/ArzensIntern_SHAWAL_Threat_Intelligence_Tool
一个初级 Python 威胁情报查询工具,通过调用多个主流情报 API 对 IP、域名和文件哈希等指标进行批量检查并输出综合判定结论。
Stars: 0 | Forks: 0
# THE ARZENS 威胁情报增强器
一个初级 Python 工具,用于通过威胁情报 API(VirusTotal 和 AbuseIPDB,并可选支持 AlienVault OTX)检查 IP 地址、域名、文件哈希和 URL,并输出易于阅读的判定结果。
专为 THE ARZENS 实习计划的作业 4(初级方向)而开发。
## 项目结构
```
threat_intel_tool.py - main script
config.yaml - API keys and settings (edit this before running)
sample_indicators.txt - example list of indicators to test with
sample_output.json - example JSON output
sample_output.csv - example CSV output
sample_report.txt - example text report
README.md - this file
```
当你运行该工具时,它还会创建:
- `cache.json` - 存储过往结果,避免重复检查同一个指标
- 你选择的输出文件(JSON、CSV 和文本报告)
## 1. 安装
你需要 Python 3.8 或更高版本。
克隆或下载本项目,然后安装所需的库:
```
pip install requests pyyaml colorama
```
`argparse`、`json` 和 `csv` 是 Python 的内置库,因此你无需单独安装它们。
## 2. 必需的库
| 库 | 用途 |
|------------|-------------------------------------------|
| requests | 向 API 发起 HTTP 调用 |
| pyyaml | 读取 config.yaml 文件 |
| colorama | 为控制台输出着色(红/黄/绿) |
| argparse | 读取命令行参数(内置) |
| json | 读取/写入 JSON 文件(内置) |
| csv | 写入 CSV 文件(内置) |
## 3. 获取 API 密钥
你需要至少获取这三个密钥中的两个,该工具才能发挥作用。
**VirusTotal**
1. 访问 https://www.virustotal.com/gui/join-us
2. 创建一个免费账户。
3. 点击你的个人资料图标,然后点击 "API Key" 查找你的密钥。
4. 免费层级限制:每天 500 次请求,每分钟 4 次请求。
**AbuseIPDB**
1. 访问 https://www.abuseipdb.com/register
2. 创建一个免费账户。
3. 进入账户页面,然后点击 "API" 标签页查找你的密钥。
4. 免费层级限制:每天 1,000 次检查。
**AlienVault OTX**(在此工具中为可选)
1. 访问 https://otx.alienvault.com
2. 创建一个免费账户。
3. 点击你的个人资料,然后点击 "API Integration" 查找你的密钥。
获取密钥后,打开 `config.yaml` 并将它们粘贴进去:
```
api_keys:
virustotal: "PASTE_YOUR_KEY_HERE"
abuseipdb: "PASTE_YOUR_KEY_HERE"
otx: "PASTE_YOUR_KEY_HERE"
```
**切勿将你的 API 密钥硬编码在 threat_intel_tool.py 中。** 始终使用 config.yaml,并且切勿将带有真实密钥的 config.yaml 上传到 GitHub。如果你计划将此项目公开,请将其添加到 `.gitignore` 文件中。
## 4. 示例命令
检查单个 IP 地址:
```
python threat_intel_tool.py --ip 185.220.101.42
```
检查域名:
```
python threat_intel_tool.py --domain example.com
```
检查文件哈希:
```
python threat_intel_tool.py --hash 44d88612fea8a8f36de82e1278abb02f
```
同时检查多种类型的指标:
```
python threat_intel_tool.py --ip 8.8.8.8 --domain example.com
```
从文件中检查整个指标列表:
```
python threat_intel_tool.py --input-file sample_indicators.txt
```
逐个输入指标:
```
python threat_intel_tool.py --interactive
```
为你的输出文件选择一个自定义名称:
```
python threat_intel_tool.py --ip 8.8.8.8 --output my_results
```
这会创建 `my_results.json`、`my_results.csv` 和 `my_results_report.txt`。
## 5. 工具工作原理(简述)
1. 从 `config.yaml` 读取你的 API 密钥和设置。
2. 从命令行、文件或交互式输入中收集指标。
3. 检查每个指标的格式(例如,它看起来真的像一个 IP 吗?)。
4. 首先检查本地缓存,确保同一个指标不会被查找两次。
5. 调用 VirusTotal 和/或 AbuseIPDB(如果启用,则调用 OTX),在调用之间等待几秒钟,以遵守 API 速率限制。
6. 如果请求失败,它会进行最多 3 次带指数退避的重试(分别等待 2 秒、4 秒和 8 秒)。
7. 将结果合并为一个总体判定结论:CLEAN(干净)、SUSPICIOUS(可疑)或 MALICIOUS(恶意)。
8. 在控制台打印彩色报告,并保存 JSON、CSV 和文本报告文件。
## 6. 注意事项
- AbuseIPDB 仅支持 IP 地址,因此对于域名、哈希和 URL 会自动跳过。
- 该工具尚不支持在 VirusTotal/OTX 上进行 URL 查找(这需要使用文件/URL 提交 endpoint,这是后续添加的一个好方向)。
- config.yaml 中的 `use_otx` 设置默认关闭。当你拥有 OTX 密钥后,将其更改为 `true`。
标签:API集成, Python, 可观测性, 威胁情报, 开发者工具, 无后门, 聊天机器人, 逆向工具