zhaolei
9834930299
fix: PDF/Office/压缩包关键词误报 — 两层修复
【regex 层收紧】policy.yaml keyword_rules
1) ReverseShellNetcat: \\bnc\\b → \\bnc\\s+-[elpvs]\\w*
nc 后必须跟参数 (-e/-l/-p/-v/-s), 单独 nc 在二进制里必然误报
ncat 同理: \\bncat\\b → \\bncat\\s+-\\w+
保留 \\bnetcat\\b (8 字母, 碰撞概率极低)
2) CredentialStealer: 全部关键词加 \\b 词边界
wce 单独加后续约束: wce(\\.exe\\b|\\s|\\/)
要求 wce 后跟 .exe / 空格 / / (二进制随机字节里 WCE 不再触发)
【引擎层架构修复】keywords.py
新增 BINARY_SKIP_EXTS (48 个扩展名):
- PDF / Office (.pdf/.docx/.xlsx/.pptx/...)
- 压缩包 (.rar/.zip/.7z/.tar/.gz/...)
- 图片 (.png/.jpg/.gif/.svg/...)
- 视频 (.mp4/.avi/.mkv/...)
- 音频 (.mp3/.wav/.flac/...)
KeywordEngine.scan() 开头检查:
如果 declared_ext / path ext 在 BINARY_SKIP_EXTS → 直接返回空
根因:
PDF/DOCX/ZIP 等文件是 DEFLATE 压缩流 (伪随机字节)
短关键词 (nc=2w/wce=3w) 在压缩流里必然出现
误报导致: 云启智能体平台生成效果.pdf 被拦截
ReverseShellNetcat: 'g%ew;V6Z?)Nc{>72z}*&96'
CredentialStealer: '2>>~:pa}w*WCE|2MVB85t/$'
验证:
✅ 新 regex: 真实 nc -e / wce.exe 命中, PDF 压缩流字节不命中
✅ BINARY_SKIP_EXTS: .pdf/.docx/.zip 跳过, .sh/.ps1/.txt 扫描
✅ scan() 方法已含跳过逻辑