103 lines
7.0 KiB
Markdown
103 lines
7.0 KiB
Markdown
|
|
# YARA 检测范围说明(L2B 层)
|
|||
|
|
|
|||
|
|
> 本文档只界定 L2B 层 YARA 引擎的检测范围:要覆盖哪些威胁、靠什么特征锚定、哪里容易误报。不含其它防御层与实现代码,可直接作为规则设计依据与验收清单。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、YARA 定位与边界
|
|||
|
|
|
|||
|
|
YARA 是基于字节 / 字符串 / 结构特征的模式匹配,强项是已知家族的变体、可疑特征组合、静态可提取的载荷。
|
|||
|
|
|
|||
|
|
- **擅长**:已知家族变体、可疑 API / 字符串组合、文档与脚本类静态载荷。
|
|||
|
|
- **不擅长**:纯多态加壳、纯运行时行为、加密封装(这些交给 L1 杀毒库与 L3 沙箱)。
|
|||
|
|
- **设计目标**:补齐 ClamAV 特征库更新慢的盲区,并覆盖文档 / 脚本这类杀毒库不敏感的载体。
|
|||
|
|
|
|||
|
|
核心原则:单一 API 或字符串命中不阻断,要求"特征组合"才判高危,否则误报率失控。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、检测范围总览(9 大类)
|
|||
|
|
|
|||
|
|
| 编号 | 覆盖大类 | 检查对象 | YARA 主力程度 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| C1 | Windows PE 恶意程序 | .exe / .dll / .sys、DLL 劫持 | 是 |
|
|||
|
|
| C2 | 脚本木马 | .ps1 / .vbs / .js / .bat / .hta / .lnk | 是 |
|
|||
|
|
| C3 | Webshell / 内存马 | .jsp/.jspx/.php/.asp/.aspx、反序列化 payload | 是 |
|
|||
|
|
| C4 | Office 文档载荷 | .doc/.xls/.ppt(宏 / DDE) | 是 |
|
|||
|
|
| C5 | PDF 载荷 | .pdf | 是 |
|
|||
|
|
| C6 | 压缩包 / 嵌套展开 | .zip/.rar/.7z/.cab/.iso | 辅助 |
|
|||
|
|
| C7 | Linux / 跨平台后门 | ELF / Shell / Python / 计划任务 | 是 |
|
|||
|
|
| C8 | 勒索 / 挖矿专项 | 通用载体 | 是 |
|
|||
|
|
| C9 | 壳 / 签名 / 结构异常 | PE 结构元数据 | 是 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、逐类详细范围
|
|||
|
|
|
|||
|
|
### C1 Windows PE 恶意程序
|
|||
|
|
- **防**:下载器、远控(RAT)、注入器、Loader、服务后门。
|
|||
|
|
- **锚点方向**:危险导入 API 组合(`URLDownloadToFile` / `InternetOpen` / `WinHttp*` + `CreateRemoteThread` / `WriteProcessMemory` / `VirtualAllocEx` + `RegSetValueEx` / `schtasks` / 服务 API);可疑字符串(C2 URL/IP、互斥体 Mutex 名、隐藏进程标志 `CREATE_NO_WINDOW`)。
|
|||
|
|
- **关键原则**:必须"网络 + 注入 / 持久化"特征组合命中才报高危。
|
|||
|
|
- **范围须含**:DLL 侧加载、白利用二进制(LOLBins)调用特征。
|
|||
|
|
|
|||
|
|
### C2 脚本木马
|
|||
|
|
- **防**:无文件落地、PowerShell 下载执行、混淆脚本。
|
|||
|
|
- **锚点方向**:`-enc` / `-e`(Base64 编码命令)、`FromBase64String`、`IEX` / `Invoke-Expression`、`DownloadString`、`New-Object Net.WebClient`、`-w hidden` / `-nop`;`mshta` / `rundll32` / `regsvr32` / `certutil -decode` 等 LOLBin 组合;VBS 的 `CreateObject("Wscript.Shell")` + `Run`;HTA 里的 `<script>` + ActiveX。
|
|||
|
|
- **专项**:编码 / 混淆还原特征(超长 Base64 串、字符串拼接、`char[]` 逐字符构造)。
|
|||
|
|
|
|||
|
|
### C3 Webshell / 内存马(重点范围)
|
|||
|
|
- **JSP/JSpx**:`Runtime.getRuntime().exec`、`ProcessBuilder`、`InputStreamReader` + 请求参数取值、`javax.crypto` 解密后执行、反射 `forName` + `getMethod`、冰蝎 / 哥斯拉 / antsword 加密通道特征。
|
|||
|
|
- **PHP**:`eval` / `assert` / `create_function` / `preg_replace(/e)`、`$_GET/POST/REQUEST` 直接进执行函数、`base64_decode` + `eval`、变量变形、`str_rot13` / `gzinflate` 多层解码。
|
|||
|
|
- **ASP / .NET**:`Execute` / `Eval` / `Server.CreateObject("Wscript.Shell")`、`Process.Start`、反射 `Activator.CreateInstance`。
|
|||
|
|
- **内存马**:注入 Filter / Listener / Interceptor / Valve 的关键类名与包名(`javax.servlet.Filter`、`StandardContext`、`addFilterDef`、`ApplicationFilterConfig`)、Agent / Instrumentation 注入痕迹。
|
|||
|
|
- **反序列化载荷**:CommonsCollections / Gadgets 类链关键字、`ysoserial` 相关类名。
|
|||
|
|
|
|||
|
|
### C4 Office 文档载荷
|
|||
|
|
- **VBA 宏**:`AutoOpen` / `AutoExec` / `Document_Open` 自动执行、`Shell` / `CreateObject` / `Wscript.Shell` / `MSXML2.XMLHTTP`、`Environ` + `cmd`。
|
|||
|
|
- **其他载荷**:DDE / DDEAUTO、`FieldCode`、`INCLUDEPICTURE` 外链、OLE 嵌入、ActiveX `ObjectPool`、公式注入 `=cmd|` / `|MSDSNC` / `=WEBSERVICE`。
|
|||
|
|
- **范围须含**:`.docm` / `.xlsm` / `.dotm` 等带宏标记文件强制深检。
|
|||
|
|
|
|||
|
|
### C5 PDF 载荷
|
|||
|
|
- **自动执行结构**:`/OpenAction` / `/AA` / `/JS` / `/JavaScript` + `app.launchURL` / `eval` / `util`;嵌入附件 `/EmbeddedFile` / `/Launch`。
|
|||
|
|
- **漏洞利用特征**:超长 `/Length`、异常 `/Filter` 链、`/ObjStm` 混淆、`collab` / `getAnnots` 触发。
|
|||
|
|
|
|||
|
|
### C6 压缩包 / 嵌套展开(在解压产物上跑)
|
|||
|
|
- **范围**:递归解包后对内部每个文件套用 C1–C5 规则;对压缩包本身检测嵌套层数过深、同名伪装(`photo.jpg.exe` 解包后二次校验)。
|
|||
|
|
- **交接面**:YARA 负责解出来的内容,L0 extractor 负责包结构炸弹。
|
|||
|
|
|
|||
|
|
### C7 Linux / 跨平台后门
|
|||
|
|
- **反弹 Shell**:`/dev/tcp/`、`bash -i`、`nc -e`、`socat`、`python pty`、`perl -e 'exec'`。
|
|||
|
|
- **持久化**:`crontab` / `/etc/cron`、`.bashrc` / `.ssh/authorized_keys` 写入、`systemd` unit。
|
|||
|
|
- **挖矿 / Rootkit**:`xmrig` / `stratum+tcp`、`/tmp/.X11-unix` 隐藏目录、`LD_PRELOAD`、内核模块加载特征。
|
|||
|
|
|
|||
|
|
### C8 勒索 / 挖矿专项
|
|||
|
|
- **勒索**:加密 API 组合(`CryptEncrypt` / `CryptDeriveKey` / `BCrypt*`)+ 大量文件遍历 / 删除卷影(`vssadmin delete` / `wmic shadowcopy`)+ 勒索信文件名变体(`HOW_TO_RECOVER` / `RESTORE_FILES` 等)。
|
|||
|
|
- **挖矿**:矿池域名 / 端口、`-o stratum`、`--donate-level`、高 CPU 循环特征字符串。
|
|||
|
|
|
|||
|
|
### C9 壳 / 签名 / 结构异常(元数据型规则)
|
|||
|
|
- **范围**:PE 段名异常(乱码段名、`.pdata` 缺失)、入口点落在非代码段、高熵 `.text` 段、无签名却调用大量网络 API、证书链断裂 / 自签名、时间戳伪造。
|
|||
|
|
- **价值**:作为"送沙箱的触发器",命中即升级为 L3 动态分析。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、范围之外(明确划走,YARA 不硬扛)
|
|||
|
|
|
|||
|
|
- 加密 / 加壳后无明文特征 → 靠沙箱或 CDR。
|
|||
|
|
- 已知病毒的精确家族匹配 → 优先 ClamAV 库,YARA 只做补充。
|
|||
|
|
- 纯行为(如"程序遍历全盘加密")→ 靠沙箱 / EDR,YARA 只抓静态可锚的命令与字符串。
|
|||
|
|
- 敏感信息泄露 → 属 DLP(如 Presidio),不属于 YARA 安全检测范围。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、规则工程化范围(让范围可维护)
|
|||
|
|
|
|||
|
|
- **元数据强制字段**:`risk_level`、`category`(对应 C1–C9)、`false_positive_rate`(低 / 中 / 高,决定是否阻断还是仅告警)、`reference`。
|
|||
|
|
- **分级放行策略**:`high` / `critical` 可阻断;`medium` 告警 + 进沙箱;`low` 仅记录。避免范围铺得越全、误杀越多。
|
|||
|
|
- **命名空间分组**:按 C1–C9 分文件(`pe.yar` / `script.yar` / `webshell.yar` / `doc.yar` / `pdf.yar` / `linux.yar` / `ransom.yar` 等),便于灰度和单独更新。
|
|||
|
|
- **性能约束纳入范围**:正则 / 通配规则限制扫描文件大小与超时,大文件只在头部 + 样本区匹配,防止 YARA 成为 L2B 的时延瓶颈。
|
|||
|
|
- **持续更新机制**:新家族 / 新工具(新 Webshell 工具、新 LOLBin)→ 补规则,与 ClamAV 库一样纳入库运维节奏。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
内容由 AI 生成
|