distortionstack/Project-Vetala-Windows-Endpoint-Behavioral-Analysis

GitHub: distortionstack/Project-Vetala-Windows-Endpoint-Behavioral-Analysis

Vetala 是一套基于行为分析的 Windows 端点威胁检测系统,结合规则匹配与双 ML 模型实现实时异常检测和攻击链还原。

Stars: 0 | Forks: 0

# Vetala(Windows 端点行为分析)

image

结合了 Isolation Forest(无监督)和 LightGBM(有监督)ML,并包含 MITRE ATT&CK 映射、Sigma 规则关联和交互式仪表板的基于行为的 Windows 端点威胁检测 pipeline。 ## 方法论 该 pipeline 通过以下几个阶段处理 Windows 事件日志(Sysmon、Security、PowerShell 等): 1. **加载与标准化** — 加载原始的 JSON/CSV/XML 日志,将其展平并标准化为包含 `_process`、`_cmd`、`_parent`、`_user`、`_channel`、`EventID`、`@timestamp` 等列的标准 schema。 2. **行为特征提取** — 每个事件提取 19 个二进制行为信号: - PowerShell 使用、base64 编码命令、hack 工具、MSHTA/Rundll32/WMIC/Certutil 调用 - Office -> Shell 生成、可疑 port/IP/DNS、temp 写入、DLL side-loading - LSASS 访问、进程注入(CreateRemoteThread / 可疑的 Process Access) - 指示器移除、合法账户滥用 3. **MITRE ATT&CK 标记** — 每个行为信号映射到 1 个或多个 MITRE 技术 ID(例如 `is_lsass_access -> T1003.001`)。每个事件都会获得一个 `mitre_techniques` 列表列。 4. **时间窗口聚合** — 事件按 `_host` + 5 分钟窗口进行分组。汇总的信号计数为 ML 生成每个窗口的特征向量。 5. **异常检测**(无监督) — Isolation Forest 对每个窗口进行评分。得分位于尾部的窗口被标记为异常。 6. **有监督分类**(LightGBM) — 在带标签的 Mordor 数据集源上训练的多类分类器。预测每个窗口的技术家族及其置信度得分。 7. **Sigma 规则匹配** — 预加载的 Sigma 规则与事件进行匹配。将结果与 ML 标志进行比较以计算精确率/召回率。 8. **攻击链检测** — 每个 host 提取战术级序列(例如,Initial Access -> Execution -> Credential Access)。识别已知的 kill-chain 模式。 ## 安装 ``` pip install -r requirements.txt ``` 依赖项:`lightgbm`、`scikit-learn`、`pandas`、`numpy`、`polars`、`plotly`、`matplotlib`、`seaborn`、`joblib`、`requests`、`pyyaml`。 ## 配置 编辑 `config/config.json` 以调整: - 检测阈值、可疑 IP/port/域名 - ML 超参数(Isolation Forest、LightGBM) - 时间窗口大小(默认:5 分钟) - 模型持久化设置 ## 用法 ### 分析 Pipeline ``` python src/main/myapp/main.py ``` 这将在 Mordor LSASS dump 数据集上运行带有 Isolation Forest 的默认 pipeline。 ### 选项 | 参数 | 描述 | |------|-------------| | `-s ` | 输入源(可重复;本地文件、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, 威胁检测, 子域名变形, 安全运营, 恶意代码分类, 扫描框架, 机器学习, 知识库安全, 终端安全, 逆向工具