namenatename/log-parser-ioc-scanner
GitHub: namenatename/log-parser-ioc-scanner
一款自动化解析 Sysmon 日志并利用多源威胁情报 API 进行 IOC 扫描与 MITRE ATT&CK 映射的安全分析工具。
Stars: 0 | Forks: 0
# Log-Parser-IOC-Scanner
一款 IOC 扩充工具,用于解析 Sysmon JSON 日志,并针对 VirusTotal API 和 AbuseIPDB API 使用提取的 IOC 来识别带有 MITRE ATT&CK 框架映射的恶意指标
## 功能
- **Parser** - 用于在 .json 文件中查找总事件数的工具,可解析文件中的总事件数、网络事件(ID 3)和进程创建事件(EID 1)
- **Extractor** - 从 parser 中收集 IOC(失陷指标)数据,特别是来自网络事件的源/目标 IP,以及来自进程创建事件的 SHA256 哈希值
- **API 扩充** - 通过 VirusTotal API 分析 IP/哈希列表,并将 IP 数据与 AbuseIPDB API 进行交叉比对,以搜索每个来源的恶意指标
- **Reporter** - 为每个 IOC 生成 .csv 报告,并根据 VT/AIPDB API 交叉比对给出恶意状态的判定结论
## 数据集
使用由 OTRF Security Datasets 项目提供的原始日志数据:https://github.com/OTRF/Security-Datasets/
使用的数据集是 [Mimikatz 数据集](https://github.com/OTRF/Security-Datasets/blob/master/datasets/atomic/windows/credential_access/host/empire_mimikatz_extract_keys.zip)
*Mimikatz 是一款后渗透 Windows 工具,用于转储凭据及其任务,例如请求 Kerberos 票据;该工具通常会在 Windows 事件日志中生成源 IP 日志*
## 环境要求
- Python 3.8+
- VirusTotal 免费 API 密钥(限制:4 次请求/分钟 | https://virustotal.com)
- AbuseIPDB 免费 API 密钥(限制:1000 次请求/天 | https://abuseipdb.com)
## 设置
```
# 1. Clone repo
git clone https://github.com/namenatename/log-parser-ioc-scanner.git
cd log-parser-ioc-scanner
# 2. 激活 venv
python -m venv .venv
source .venv/bin/activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 添加 API keys,使用各个 key 填充 placeholders
cp .env.example .env
# 5. 运行工具
python main.py
```
## 使用方法
使用以下命令运行当前的 IOC 扫描工具集:
python main.py
注意:VirusTotal 免费版限制该脚本处理测试数据集中发现的 8 个 IP 大约需要 2 分钟,在测试完所有 IP 之前不会生成输出
## 输出
Reporter 工具将生成一个 .csv 文件,位于 output/report.csv:
**IP 查询**
```
Type,IOC,Malicious,Suspicious,Harmless,AbuseIPDB Score,Threat
IP,13.107.4.50,1,0,58,0,CLEAN
IP,52.167.249.196,0,0,56,0,CLEAN
IP,104.117.16.77,0,0,58,0,CLEAN
IP,50.16.16.211,6,1,53,18,FLAGGED BY VT
```
**哈希查询**
```
Type,IOC,Malicious,Suspicious,Harmless,Result
HASH,11781CF9A807BDF44BC0B0E2D31EBCCBEA16F7DBF87753D5E107E93FAD91F48D,0,0,0,CLEAN
HASH,d5d224ea6b0a9002e4637c25d41edff516335fe132e6dd53938ee0decaadedc1,29,0,0,FLAGGED
HASH,924405FD4DF46B0A1D955AA492F441B938F051CC830AB494E88398DEF701FC1F,0,0,0,CLEAN
HASH,DD191A5B23DF92E12A8852291F9FB5ED594B76A28A5A464418442584AFD1E048,0,0,0,CLEAN
HASH,A8A4C4719113B071BB50D67F6E12C188B92C70EEAFDFCD6F5DA69B6AAA99A7FD,0,0,0,CLEAN
HASH,BAF97B2A629723947539CFF84E896CD29565AB4BB68B0CEC515EB5C5D6637B69,0,0,0,CLEAN
HASH,A75C85F3B089993E9C042FB82ECB7757E8F460ED8065FC7991CAA38A6DE0F50C,0,0,0,CLEAN
```
## 合成 IOC 注入
为了测试数据集,使用了合成 IOC 注入技术将一个已知的恶意 IP 和恶意哈希注入到原始数据集中。使用的 IP 可在 [Feodo Tracker 拦截列表](https://feodotracker.abuse.ch/blocklist/#ip-blocklist) 中找到。Feodo 跟踪的 C2 僵尸网络 IP 拦截列表将提供在本仓库的 sample_logs/ 文件夹中。此外,还使用了 Malware Bazaar 数据库中的一个 [Mimikatz 恶意 SHA256 哈希样本](https://bazaar.abuse.ch/sample/d5d224ea6b0a9002e4637c25d41edff516335fe132e6dd53938ee0decaadedc1/) 来测试哈希检测工具的功能。来自 OTRF Mimikatz 数据集的原始 IOC,以及从指定的两个恶意软件数据库注入的 IOC 如下:
| 原始 IOC | 注入的 IOC | 数据库 |
|---|---|---|
| IP - 40.90.22.192| 50.16.16.211 | Feodo Tracker |
| SHA256 - 7567E455BA5F511680E68E38B416173A3D8744CBD172180A50EE2364BD3551F6 | d5d224ea6b0a9002e4637c25d41edff516335fe132e6dd53938ee0decaadedc1 | MalwareBazaar |
## MITRE ATT&CK 映射(基于 Mimikatz 日志)
测试数据集映射到 **T1003 - OS Credential Dumping**,这与 Mimikatz 的执行相关。
从 Sysmon Event ID 3 日志中提取的网络 IOC 检测到与后渗透活动相关的可疑出站连接。工具使用的结果验证了该数据集中发现的出站连接是在测试环境中运行的,因为 AbuseIPDB 分数显示置信度得分为 0,这最符合测试基础设施的特征,且 IP 标记极少。在进程创建中发现的哈希集也显示正常,未与任何恶意指标相关联。基于这些在真实场景中的测试结果,MITRE ATT&CK 映射如下:
| 类别 | ID | 描述 |
|---|---|---|
| 技术 | T1003 | 通过 Mimikatz 执行进行 OS 凭据转储 |
| 数据源 | DS0029 | 网络流量 — Sysmon Event ID 3 网络连接日志 |
| 检测策略 | DET0234 | 通过敏感内存和注册表访问关联进行凭据转储 — 记录 Sysmon Event ID 10 和 1 日志,以检测对敏感 OS 子系统的未授权访问 |
| 缓解措施 | M1040 | 终端行为预防 — 启用攻击面减少 (ASR) 规则以防止凭据窃取 |
## 未来功能
- 包含 AlienVault OTX 的 API 映射,用于获取多源 IOC 上下文
- 支持其他日志格式(Windows EVTX)
## 结构
```
log-parser-ioc-scanner/
output/ # Reports generated will be found here
.gitkeep
report.csv # Not included, sample report
sample_logs/
ipblocklist.json # Included FEODO botnet C2s from past 30 days
mimikatz_alerts.json # Dataset used found in Dataset section
src/ # Source code with tools
abuseipdb.py
extractor.py
parser.py
reporter.py
virustotal.py
.env # Instructions to add API keys found in Setup
.env.example # Copy from example to .env
.gitignore
main.py
README.md
requirements.txt
```
标签:IOC扫描, Python, Sysmon, 威胁情报, 开发者工具, 无后门, 逆向工具