一个仓库,用于以易于使用的方式共享公开可用的批量 Velociraptor 检测内容。
只需获取发布版 VQL zip 并将其导入 Velociraptor。
通过 Velociraptor 工件交换可以轻松实现:Server.Import.DetectRaptor

这将导入“Import DetectRaptor”工件。

当前包含的工件:
服务器工件:
部分贡献仓库:
从仓库根目录运行 Eventlogs、PSReadLine 和 MFT 回归测试:
python -m unittest discover -s tests -v
直接验证 MFT 检测 CSV:
python scripts/sync_mft_lolrmm.py
python scripts/normalize_mft_metadata.py
python scripts/assign_mft_metadata.py --check
python scripts/validate_mft.py
python scripts/validate_mft_whitelist.py
python scripts/build_mft_replay_coverage.py
python scripts/replay_mft.py --check
python scripts/benchmark_mft_replay.py --iterations 3
添加 MFT 规则时,将生成的元数据字段留空并运行:
python scripts/assign_mft_metadata.py
这将分配一个不可变的 DR-MFT-<CATEGORY>-NNN RuleID 以及基线
类别、置信度、来源和 ATT&CK 元数据。现有的 RuleID 会被保留。
sync_mft_lolrmm.py 从 csv/lolrmm.csv 重新生成基于 LOLRMM 的 MFT 规则,
通过 csv/MFT_RMM_IDs.csv 保留 ID,并应用
csv/MFT_RMM_Overrides.csv。本质上不适合仅按文件名进行 MFT 检测的来源
记录在 csv/MFT_RMM_Exclusions.csv 中。
normalize_mft_metadata.py 随后应用审核后的置信度、严重性、
范围和 ATT&CK 策略。生成的 DLL 指标仅在
其基名包含特定于产品的 LOLRMM 名称标记时才保留;被过滤的 DLL
和明确的排除项记录在 csv/MFT_RMM_Coverage.csv 中。已知
有歧义的可执行文件基名也会从仅文件名
生成中过滤掉。经过整理的拆分覆盖规则仅在稳定的上游产品路径下保留通用文件名。
build_mft_replay_coverage.py 为
每条 MFT 规则创建一个确定性的合成阳性样本,并将重叠的规则匹配记录在
csv/MFT_Replay_Coverage.csv 中。replay_mft.py --check 评估 tests/fixtures/ 下的
经过净化的阳性和阴性测试夹具。它还可以使用 --baseline-rules
将候选规则文件与基线进行比较,并将详细的匹配、比较和摘要输出写入显式选择的路径。
csv/MFT_Whitelist.csv 包含内置的路径感知抑制策略。
策略要求精确的 RuleID 和工件,以及匹配的文件名和路径
正则表达式。SuppressWhitelisted 在 MFT 和 Amcache 中默认启用;
禁用它以审计被抑制的行及其 WhitelistID 元数据。本地或
客户特定的 RMM 批准仍然是运行时参数,不会
提交到仓库。
benchmark_mft_replay.py 将净化的夹具与每条规则一个生成的
阳性样本合并。它报告原始匹配、保留匹配和抑制匹配;唯一
文件和路径字符串;多匹配扩展;估计的规则评估次数;以及
运行时间。额外的回放格式 CSV 输入可以通过 --input 提供。
基准 JSON 仅在显式提供 --output 时写入。
从 scripts/ 重新生成受影响的工件:
cd scripts
python evtx.py
python psreadline.py
python iseautosave.py
python mft.py
python amcache.py
使用 Velociraptor 验证生成的工件:
./velociraptor artifacts verify \
vql/Evtx.yaml \
vql/PSReadline.yaml \
vql/ISEAutoSave.yaml \
vql/MFT.yaml
docs/eventlogs-detection-review.mddocs/mft-detection-uplift.md