292条Sigma规则里44%可绕过:检测规则鲁棒性的欠账与还法

admin 2026-09-17 04:26:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档分析292条公开sigma规则中44%可被绕过,指出字符串层和语义层两类绕过手法,并提出规则侧改进建议:锚点从字符串挪到结构、写冗余覆盖、规则进CI做对抗测试。建议优先修复process_creation类规则,用变异测试工具跑规则集并补强,将对抗测试纳入规则变更流程。 综合评分: 85 文章分类: 漏洞分析,安全工具,红队,安全建设


292 条 Sigma 规则里 44% 可绕过:检测规则鲁棒性的欠账与还法

cwbird cwbird

bird网络安全

2026年9月7日 09:57 四川

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

SigmaHQ 的规则仓库在 GitHub 上公开维护,不少团队的 SIEM 检测规则直接从这份仓库转换而来。公开规则的另一面很少被摆上台面:攻击者同样能把整套规则拉到本地,先跑一遍自己的命令行,确认不命中再上线。这件事的严重程度在 USENIX Security 2023 的论文 You Cannot Escape Me 里有量化结论:研究者抽取 292 条公开 Windows 进程创建规则逐条分析,110 条可被完全绕过,19 条可被部分绕过,合计占比 44%。直接转换公开规则上线的团队,接近一半的进程创建检测在对抗场景下撑不住。

字符串层绕过:一个连字符就能过关

这 44% 里最常见的一类失效,源于规则把命令行写成了字面量匹配。PowerShell 的 -EncodedCommand 参数合法缩写是 -enc,规则里只写了前者,攻击者用后者就整条绕过。SigmaHQ 后来在规范里加入 windash 修饰符,把 -、–、— 一类横杠变体(Windows 下还包括斜杠 /)归一后再匹配,背景就是大量存量规则反复栽在这里。

同类手法有一个完整清单。Windows 侧:插入脱字符 ^(cer^tutil 照样能跑)、省略 .exe 后缀、8.3 短路径 C:\PROGRA~1 代替 Program Files、cmd 的 token 分隔符变体、%VAR:~0% 环境变量截断展开。Linux 和 macOS 侧:${IFS} 代替空格、ANSI-C 引用 $’…’、反斜杠续行、花括号展开 {a,b}。macOS 还有自己的方言,/private/tmp 与 /tmp 互写、base64 解码参数 -D 与 -d 并存。这些变换不改变命令语义,却足以让 contains 或 re 修饰符写出的规则全部失配。

语义层绕过:换一个程序做同一件事

字符串层之上还有更难防的一层。后续研究 SPECTRA 把绕过从字符串变换升级为命令重构:certutil.exe -encode file.bin out.txt 的效果序列是读取、base64 编码、写文件,具备同样效果组合的 LOLBAS 程序不止一个,换一个二进制加一套参数结构,原规则里的字面量一个都撞不上。

两组数据能说明这层绕过的分量。用现成的反混淆工具回放两种绕过样本:AMIDES(USENIX 论文中的字符串层方法)生成的 512 条绕过命令,78.1%(400 条)被还原回可检测形态;SPECTRA 生成的 804 条,只有 4.5%(36 条)被还原。在检测端零误报的工作点上,AMIDES 绕过有 69.9% 会被后续检测器拦下,SPECTRA 绕过只有 22.7% 被拦。字符串层绕过靠日志规范化还能救回大半,换了工具和参数结构的绕过基本救不回来。

规则侧的三个改动

第一处,把锚点从字符串挪到结构。「powershell.exe 执行了」这类单字段宽匹配没有检出价值,值得写的是父子进程加上下文:Office 进程拉起 PowerShell 且带编码参数,对应 ATT&CK T1059.001 的宏投放链路。参考写法:

logsource:   product: windows   category: process_creation selection:   Image|endswith: '\powershell.exe'   ParentImage|endswith:     - '\winword.exe'     - '\excel.exe'     - '\outlook.exe'   CommandLine|windash|contains|all:     - 'enc' filter_admin:   User|startswith: 'SVC_' condition: selection and not filter_admin

windash 处理横杠变体,contains|all 要求多个关键词同时在场,filter_admin 把 SVC_ 开头的自动化账号显式排除。误报来源直接写进规则本体,研判的时候不用靠人脑记。

第二处,给同一行为写冗余覆盖。certutil 的编码外传行为,至少同时覆盖 bitsadmin、mshta、rundll32 这几个替代执行体,按效果组合(编码加网络外传)写覆盖,别锚死单一二进制名。规则数量换检出稳定性,这笔账在对抗场景下划算。

第三处,规则进 CI 做对抗测试。开源工具 ordeal 专门干这件事:对每条规则先用正样本确认能命中,再自动施加 41 种保持语义不变的变换,覆盖 Windows、Linux、macOS 三平台,并按规则的 logsource.product 做平台门控,Windows 的脱字符变换不会打到 Linux 规则头上。报告会列出哪些变体漏过,每个漏点附带修复建议。输出支持 JUnit 格式,退出码 0、1、2 区分干净、被绕过、用法错误,接 GitHub Actions 或内部流水线都是现成模式。

从哪开始还账

存量规则的欠账按暴露面排优先级:process_creation 类规则是公开研究的主要分析对象,攻击者的绕过知识库也最厚,先修;网络类和文件类次之。操作上,把在用的规则集克隆下来,用变异测试工具跑一遍,拿到被绕过清单后逐条补 windash、contains|all、父子进程锚点和显式白名单。新规则合入流程里加一道对抗测试门禁,规则文件当代码管,每次变更跑完测试再上线。44% 这个数字测的是 2023 年的规则集,规则在更新,绕过手法也在更新,一次性修复的有效期有限,把对抗测试做成常态才有持续检出可言。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:bird网络安全 cwbird cwbird《292 条 Sigma 规则里 44% 可绕过:检测规则鲁棒性的欠账与还法》

评论:0   参与:  0