文章总结: 文档分析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% 可绕过:检测规则鲁棒性的欠账与还法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。












评论