NtProtectVirtualMemory/yarforge

GitHub: NtProtectVirtualMemory/yarforge

一款从 PE 文件自动提取有意义的 ASCII 字符串并生成 YARA 检测规则的命令行工具。

Stars: 2 | Forks: 0

# yarforge 一款命令行工具,通过提取有意义的 ASCII 字符串并过滤噪声(未来将支持更多功能),从 PE (Portable Executable) 文件自动生成 [YARA](https://virustotal.github.io/yara/) 签名规则。 ## 工作原理 yarforge 解析 PE 二进制文件,提取候选 ASCII 字符串,过滤掉低价值字符串,并将即用型 `.yar` 规则文件写入 `signatures/` 目录。 ### 流水线 1. **加载 PE** — 通过 [`pe-lib`](https://github.com/NtProtectVirtualMemory/PE-Library) 加载目标二进制文件。 2. **提取字符串** — 从映像中提取长度 ≥ 6 的 ASCII 字符串。 3. **过滤** — 字符串经过多层过滤: - 基于前缀的排除(节名称、MSVC 修饰名称、常见运行时 DLL 名称) - 导入表交叉引用 — 任何匹配已知导入函数名称的字符串都将被丢弃 - 包含 MSVC 运行时错误消息、CRT/堆诊断信息、标准 C++ 异常字符串、errno 描述和常见运行时噪声的大型静态黑名单 4. **PDB 提示** — 如果找到 `.pdb` 路径字符串,将交互式询问用户是否包含它。 5. **序列化** — 收集到的字符串和元数据被写成 `.yar` 规则文件。 ### 输出格式 生成的规则遵循此结构: ``` rule target_binary { meta: description = "yarforge generated this!" author = "crim" reference = "https://github.com/NtProtectVirtualMemory/yarforge" date = "2025-01-01" hash = "" strings: $s0 = "SomeString" fullword ascii $s1 = "AnotherString" fullword ascii condition: true } ``` 规则名称源自输入文件名,并经过无害化处理以成为有效的 YARA 标识符(小写字母数字、下划线、无前导数字、无连续下划线)。 ## 当前限制 (WIP) yarforge 仍处于早期开发阶段。以下区域尚未完成或仅为占位符: - **`condition` 块始终为 `true`** — 尚未生成真正的条件逻辑。未来版本将构建有意义的条件(例如 `any of them`、PE 头检查、最小字符串匹配数)。 - **`hash` meta 字段为空** — 尚未自动计算并插入文件哈希。 - **仅限 Windows** — 路径处理和目录创建使用 Windows 风格的反斜杠(`signatures\`)。跨平台支持尚未实现。 - **无宽字符串支持** — 仅提取 ASCII 字符串;尚不支持 Unicode/wide 字符串。 - **无置信度评分或去重** — 所有留存字符串均同等包含,不进行排名或移除重复项。 - **无基于导入的条件提示** — 导入表数据仅用于过滤;它也可以用于指导条件生成(例如检测特定的 API 模式)。 - **所有字符串均硬编码为 `fullword ascii`** — 尚不存在针对单个字符串的修饰符。未来版本将根据上下文使用适当的修饰符(例如 `wide`、`nocase`、`ascii wide`),而不是统一应用 `fullword ascii`。 ## 依赖项 - [`pe-lib`](https://github.com/NtProtectVirtualMemory/PE-Library) — PE 解析(已捆绑) - C++17 或更高版本 - MSVC(推荐;使用了 `localtime_s` 和 `scanf_s`) ## 许可证 本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE.txt) 文件。 *生成的规则仅作为起点 — 在实际操作使用前请务必进行审查和优化。*
标签:DAST, PE文件分析, Python, URL发现, YARA, 二进制分析, 云安全监控, 云安全运维, 云资产可视化, 威胁情报, 字符串提取, 安全检测, 开发者工具, 恶意软件分析, 无后门, 特征码, 签名生成, 网络调试, 自动化, 规则生成, 静态分析