DevSecLawrence/yara-rules-collection

GitHub: DevSecLawrence/yara-rules-collection

一套原创的 YARA 恶意软件检测规则集合,涵盖可疑字符串、高熵值和 UPX 加壳三类检测场景。

Stars: 0 | Forks: 0

# YARA 规则集合 ![YARA](https://img.shields.io/badge/YARA-4.5.5-green?style=flat) ![Kali Linux](https://img.shields.io/badge/Kali_Linux-557C94?style=flat&logo=kalilinux&logoColor=white) ![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-red?style=flat) ![恶意软件检测](https://img.shields.io/badge/Malware-Detection-orange?style=flat) 这些是我作为 180 天 SOC 分析师学习路线(第 22 天)的一部分,在 Kali Linux 中编写并测试的原创 YARA 规则。每个规则都包含了检测逻辑、目标对象、测试方法以及已知的局限性。 YARA 是一款用于文件的 pattern-matching(模式匹配)工具——Sigma 用于检测日志中的可疑事件,而 YARA 用于检测文件中的可疑内容。这些规则均是从零开始编写的,并未从现有的代码库中复制。 ## 规则 ### 规则 1 — 可疑字符串 **文件:** `suspicious_strings.yar` **检测对象:** 包含对 cmd.exe 或 powershell.exe 引用的文件 **应用场景:** 标记引用了 Windows shell 的脚本和 dropper **测试基准:** 包含 "powershell.exe" 的纯文本文件(匹配)和干净的文本文件(不匹配) ``` rule suspicious_strings { meta: description = "Detects files referencing cmd.exe or powershell.exe" author = "Lawrence" date = "2026-06-05" strings: $a = "cmd.exe" nocase $b = "powershell.exe" nocase condition: any of them } ``` **已知局限:** 误报率较高——许多合法的安装程序和管理员脚本都会引用这些二进制文件。该规则最适合与其他条件结合使用,或用于初步分类筛查,而不适合作为最终的判定标准。 ### 规则 2 — 高熵值 **文件:** `high_entropy.yar` **检测对象:** 熵值超过 7.0 的文件——可能被加壳或加密 **应用场景:** 标记加壳的恶意软件、加密的 payload、混淆的脚本 **测试基准:** Zip 文件(匹配——压缩后 = 高熵值)和纯文本(不匹配) ``` import "math" rule high_entropy_file { meta: description = "Flags files with entropy above 7.0 — possible packing or encryption" author = "Lawrence" date = "2026-06-05" condition: math.entropy(0, filesize) > 7.0 } ``` **已知局限:** 合法的压缩文件(zip、jar、docx)也会触发此规则。在生产环境中部署之前,需要根据已知干净的二进制文件基线对 7.0 的阈值进行调整。 ### 规则 3 — UPX PE 节 **文件:** `unusual_pe_sections.yar` **检测对象:** 通过查找 .upx0 和 .upx1 节名称来识别使用 UPX 加壳的二进制文件 **应用场景:** 识别加壳的可执行文件——加壳工具常用于逃避 AV 查杀 **测试基准:** 经过 UPX 加壳的 /usr/bin/whoami 副本(匹配)和原始二进制文件(不匹配) ``` import "pe" rule unusual_pe_sections { meta: description = "Detects binaries packed with UPX by PE section name" author = "Lawrence" date = "2026-06-05" condition: pe.is_pe and for any i in (0 .. pe.number_of_sections - 1) : ( pe.sections[i].name == ".upx0" or pe.sections[i].name == ".upx1" or pe.sections[i].name == ".packed" ) } ``` **已知局限:** PE 模块针对的是 Windows PE 格式。在 Linux ELF 二进制文件上,pe.is_pe 条件将不会匹配。对于加壳的 ELF 二进制文件,请改用 `readelf -S binary | grep -i upx` 进行验证。 ## 测试环境 - **操作系统:** Kali Linux (VM) - **YARA 版本:** 4.5.5 - **安装方式:** `sudo apt install yara -y` # 关联内容 [SOC 分析师之旅 — 180 天路线图](https://github.com/DevSecLawrence/soc-analyst-journey)
标签:DNS信息、DNS暴力破解, DNS 反向解析, YARA规则, 威胁情报, 安全, 开发者工具, 蓝军, 超时处理