distortionstack/Project-Vetala-Windows-Endpoint-Behavioral-Analysis
GitHub: distortionstack/Project-Vetala-Windows-Endpoint-Behavioral-Analysis
Vetala 是一套基于行为分析的 Windows 端点威胁检测系统,结合规则匹配与双 ML 模型实现实时异常检测和攻击链还原。
Stars: 0 | Forks: 0
# Vetala(Windows 端点行为分析)
` | 输入源(可重复;本地文件、URL、ZIP、JSON、CSV) |
| `--force-update` | 绕过缓存并重新下载源 |
| `--no-browser` | 不自动打开仪表板 |
| `--model-type {isolation_forest,lightgbm}` | ML 模型类型(默认:isolation_forest) |
| `--train` | 在推理之前基于加载的源训练 LightGBM |
### 有监督训练
```
python src/main/myapp/main.py --model-type lightgbm --train
```
加载源并从其 URL 路径中提取技术标签(例如,包含 `credential_access` 的路径映射到 T1003)。该 pipeline 将:
1. 加载并标准化每个源
2. 运行特征提取和聚合
3. 训练多类 LightGBM 分类器
4. 评估每种技术的精确率/召回率/F1
5. 将模型 + 标签编码器 + 缩放器保存到 `models/`
### 有监督推理
```
python src/main/myapp/main.py --model-type lightgbm
```
使用预训练的模型(必须先运行 `--train`)。预测每个窗口的技术类别及其置信度。置信度 > 0.5 的窗口被标记为可疑。
## 输出
### 仪表板(`output/dashboard.html`)
交互式 SOC 仪表板包含:
- KPI 行(事件总数、host数、channel数、异常窗口数、威胁事件数)
- **MITRE ATT&CK 矩阵** — 热力图:战术与技术对比,按检测计数着色
- 数据来源饼图 + 事件类型条形图
- **攻击链桑基图** — 战术转换流程图
- 已知攻击链模式发生次数条形图
- 威胁时间线(5 分钟窗口)、最可疑的 host、严重程度分布
- Event ID、行为信号和特征偏差分布
- 异常得分直方图、最可疑的可执行文件
- **评估指标** — 精确率/召回率/F1 条形图、Sigma 与 ML 混淆矩阵、指标表
- 最可疑的行为窗口表
- 带有 MITRE 技术标签的顶级事件表
### JSON 导出(`output/`)
| 文件 | 内容 |
|------|----------|
| `alerts_full.json` | 可疑窗口中的威胁事件 |
| `aggregated_windows.json` | 包含特征向量的所有 5 分钟窗口 |
| `evaluation_metrics.json` | Sigma 对比、有监督指标(如果已训练)、攻击链分析 |
| `supervised_metrics.json` | 按技术划分的精确率/召回率/F1、混淆矩阵、ROC/PR 曲线 |
## 评估指标
### Sigma 与 ML 对比
加载 Sigma 规则时,`compare_ml_vs_sigma()` 会计算:
- **窗口级别**:TP/FP/FN/TN、精确率、召回率、F1(将 ML 视为预测器,将 Sigma 视为真实值)
- **事件级别**:总事件数、sigma 匹配的事件数、匹配率
### 有监督分类指标
使用 `--train` 时,`evaluate_model()` 会计算:
- 每种技术的精确率、召回率、F1、支持度
- 宏平均 / 加权平均
- 混淆矩阵(图像 + Plotly JSON)
- ROC 曲线(one-vs-rest,图像 + JSON)
- PR 曲线(one-vs-rest,图像 + JSON)
### 攻击链分析
`detect_sequences()` 从 `mitre_techniques` 列中提取每个 host 的战术链,并与 6 种已知的 kill-chain 模式进行匹配。统计信息将导出到 `evaluation_metrics.json`。
## MITRE ATT&CK 覆盖范围
| 技术 | 名称 | 检测 |
|-----------|------|-----------|
| T1059.001 | PowerShell | has_powershell, has_base64, long_ps_cmd |
| T1027 | Obfuscated Files | has_base64, long_ps_cmd |
| T1003.001 | LSASS Memory | is_lsass_access, has_attack_sig |
| T1059 | Command & Scripting | office_spawned_shell |
| T1566.001 | Spearphishing Attachment | office_spawned_shell |
| T1588.002 | Obtain Tools | has_hack_tool |
| T1105 | Remote File Copy / Temp Write | has_certutil, is_temp_write |
| T1140 | Deobfuscate/Decode | has_certutil |
| T1047 | WMI | has_wmic |
| T1218.005 | Mshta | has_mshta |
| T1218.011 | Rundll32 | has_rundll32 |
| T1021 | Remote Services | susp_port |
| T1071 / T1071.004 | C2 / DNS | susp_ip, susp_dns |
| T1574.002 | DLL Side-Loading | susp_dll_path |
| T1055 / T1055.001 | Process Injection | is_process_injection |
| T1070 | Indicator Removal | has_indicator_removal |
| T1078 | Valid Accounts | has_valid_account |
## 项目结构
```
src/main/myapp/
config/ — Constants, MITRE mappings, regex, settings
loader/ — Data loading, caching, normalization
features/ — Feature extraction (process, command, network, file, sequence)
ml/ — ML pipeline (train, predict, preprocessing, evaluation, metrics, supervised)
sigma/ — Sigma rule loading, matching, comparison
dashboard/ — Plotly SOC dashboard, theme, attack matrix, chain timeline
export/ — JSON export utilities
schemas/ — Data schema definitions
detection/ — Severity scoring, threat mapping
main.py — Pipeline orchestrator
```
标签:AMSI绕过, Apex, OpenCanary, 威胁检测, 子域名变形, 安全运营, 恶意代码分类, 扫描框架, 机器学习, 知识库安全, 终端安全, 逆向工具