diff --git a/skills/reverse-engineering/references/nonpe-format-cookbook.md b/skills/reverse-engineering/references/nonpe-format-cookbook.md index 3d4f18a..f200491 100644 --- a/skills/reverse-engineering/references/nonpe-format-cookbook.md +++ b/skills/reverse-engineering/references/nonpe-format-cookbook.md @@ -1,25 +1,37 @@ -# 非 PE / 多格式 Agent 响应菜谱 U–AV(Issue #65) +# 非 PE / 多格式 Agent 响应菜谱 U–AV + AW–DN > 与 PE 反调试菜谱 A–T(../anti-analysis.md)并列:按**文件类型**给出「触发 → 动作一行 → Evidence」。 > **不是**第二套主流程。Triage 识别类型后跳转到对应 skill + 本表。 > 默认 **授权隔离 lab / 已授权样本与设备**。格机、BYOVD、反射注入等写**检测与取证**,不写未授权破坏/利用教程。 > 绕过或还原失败也 MUST 记 Evidence;禁止静默当「无害」。 +> +> §1–§8 / U–AV = 原始规则(Issue #65)。§9–§23 / AW–DN = 扩展规则(Issue #87,去重后 + 语义增强 + edge-case 补丁)。 ## 0. 路由速查 | 类型线索 | 主 skill | 本表章节 | |----------|----------|----------| -| .bat / .cmd / 批处理 | malware-analysis | §1 | -| .ps1 / PowerShell | malware-analysis | §2 | -| Office 宏 / VBA / .docm/.xlsm | malware-analysis | §3 | -| Web/前端 JS 混淆、JSVMP | js-reverse | §4 | -| .sys / 内核驱动 | -everse-engineering/kernel-driver-reverse.md + cre | §5 | -| .dll 侧重点 | malware-analysis / -e-agent-workflow | §6(与 A–T 去重) | -| APK / Magisk / 隐藏图标 | pk-reverse | §7–§8 | - -Triage 文件类型为脚本/宏/JS/APK/DLL/SYS 时:完成本类型 **P0 锚点 Evidence** 后再深挖;PE 反调试仍走 A–T。 +| .bat / .cmd / 批处理 | malware-analysis | §1, §19 | +| .ps1 / PowerShell | malware-analysis | §2, §20 | +| Office 宏 / VBA / XLM / .docm/.xlsm | malware-analysis | §3 (含 DD OLE 提取, DJ XLM 宏) | +| .docx/.xlsx/.pptx OOXML 外链 / DDE / .rtf OLE | malware-analysis | §10 (含 DK RTF) | +| Web/前端 JS 混淆、JSVMP | js-reverse | §4, §21 (含 DE/DF) | +| .sys / 内核驱动 | reverse-engineering/kernel-driver-reverse.md + cre | §5 | +| .dll 侧重点 | malware-analysis / re-agent-workflow | §6(与 A–T 去重) | +| APK / Magisk / 隐藏图标 | apk-reverse | §7–§8, §23 | +| .pdf / PDF 文档 | malware-analysis | §9 | +| .wasm / WebAssembly | reverse-engineering | §11 | +| .jar/.class / Java 字节码 | reverse-engineering | §12 | +| .exe(AutoIt) / .au3 | malware-analysis | §13 | +| .hta / HTML Application | malware-analysis | §14 | +| .wsf/.jse/.vbe | malware-analysis | §15 | +| .msi / Windows Installer | malware-analysis | §16 | +| .reg / 注册表脚本 | malware-analysis | §17 | +| .vbs / VBScript | malware-analysis | §18 | +| Xposed/LSPosed 模块 | apk-reverse | §22 | +| ELF / Linux 二进制 | reverse-engineering | → elf-analysis.md, anti-analysis.md | +| Mach-O / macOS/iOS | reverse-engineering | → platforms.md | +| Python 字节码 | reverse-engineering | → languages.md | ## 1. BAT/CMD(U V W) @@ -38,13 +50,15 @@ Triage 文件类型为脚本/宏/JS/APK/DLL/SYS 时:完成本类型 **P0 锚 | **X** | 多层 FromBase64String / Gzip / Compress / 嵌套 -replace | **逐层**解码;每层结果单独记;工具可选(PowerDecode 等),无工具则手工/脚本 | E-ps-decode-layer-N | P0 | | **Z** | 字符串倒序、碎片 + 拼接后 Invoke-Expression/IEX | 还原完整串;对 IEX 下断或脚本块日志;明文命令入 Evidence | E-ps-string-restore | P1 | -## 3. VBA 宏(AA AB AC) +## 3. VBA 宏 / XLM(AA AB AC DD DJ) | ID | 触发 | 动作(摘要) | Evidence | 优先 | |----|------|--------------|----------|------| | **AA** | olevba/OLEDump 仅见 P-Code、源码流空(VBA Stomping) | P-Code 反编译工具;不全则 Word/Excel 宏调试观察;写清限制 | E-vba-pcode | P0 | | **AB** | 大量 Chr() 拼接或 Base64 串,疑 shellcode/嵌套脚本 | 立即窗口/脚本还原串;解码后判类型;动态盯 CreateObject/Shell | E-vba-str-decode | P1 | | **AC** | 无意义 If 1=2、或 InsertLines/DeleteLines 自修改 | 静跟真分支;动态 bp 自修改 API 并 dump 改后宏 | E-vba-selfmod | P2 | +| **DD** | olevba/oledump 检出 VBA 宏项目(vbaProject.bin);扩展名 .docm/.xlsm/.pptm | oledump.py 检查 OLE 流结构;olevba 提取 VBA 源码检测可疑 API;检查 AutoOpen/Workbook_Open 等自动执行宏 | E-office-vba | P0 | +| **DJ** | .xls/.xlsm 含 Excel 4.0/XLM 宏(隐藏在单元格公式中,非 VBA 流);olevba 检出 XLM 宏标记 | olevba --xlm 提取 XLM 宏公式;检查隐藏工作表中的 EXEC/CALL/REGISTER 函数;XLMMacroDeobfuscator 动态仿真还原 | E-office-xlm | P0 | ## 4. JavaScript(AD AE AF)→ 主路径 js-reverse @@ -77,10 +91,9 @@ Triage 文件类型为脚本/宏/JS/APK/DLL/SYS 时:完成本类型 **P0 锚 | **AP** | 无文件映射/反射加载线索 | 内存特征、加载器行为、无路径模块;授权环境取证 | E-dll-reflective | P1 | | **AQ** | 仅因导出名「不像恶意」降风险 | **禁止**只凭导出名判安全;结合段权限、入口、字符串、动态行为 | E-dll-export-priority | P1 | -DLL/SYS 硬门仍:E-imports + E-exports(见 -e-agent-workflow)。 +DLL/SYS 硬门仍:E-imports + E-exports(见 re-agent-workflow)。 -## 7. Android 格机 / 持久化(AR AS AT)→ pk-reverse +## 7. Android 格机 / 持久化(AR AS AT)→ apk-reverse > **仅授权样本、镜像或测试设备。** 动作是检测、提取 IOC 与持久化路径,不是实施破坏。 @@ -90,30 +103,196 @@ e-agent-workflow)。 | **AS** | 循环 curl|sh / 远程拉脚本、非常规 C2 URL | 提 URL;分析下载体是否含格机命令;记临时路径 | E-android-wiper-backdoor | P0 | | **AT** | /data/adb/service.d、post-fs-data.d、可疑 /system/priv-app 等 | 列持久化脚本/APK;内容摘要入证 | E-android-persistence | P1 | -## 8. Android 透明/隐藏图标(AU AV)→ pk-reverse +## 8. Android 透明/隐藏图标(AU AV)→ apk-reverse | ID | 触发 | 动作(摘要) | Evidence | 优先 | |----|------|--------------|----------|------| -| **AU** | LAUNCHER 图标全透明/空 label、Theme.NoDisplay、无 LAUNCHER category、组件 disabled | apt dump badging + manifest;反编译查图标像素;异常项入证 | E-android-hidden-icon-manifest | P0 | +| **AU** | LAUNCHER 图标全透明/空 label、Theme.NoDisplay、无 LAUNCHER category、组件 disabled | aapt dump badging + manifest;反编译查图标像素;异常项入证 | E-android-hidden-icon-manifest | P0 | | **AV** | 已装但桌面无图标,后台流量/自启/高危权限/动态恢复图标 | pm list vs 桌面;dumpsys package;广播与 device_admin;行为入证 | E-android-hidden-icon-behavior | P1 | -## 9. 约束(全局) +--- -1. **不平行主流程**:阶段门闩仍以 -e-agent-workflow / 各 skill 为准。 +> **以下 §9–§23 为 Issue #87 扩展规则(AW–DC)。** +> 已去除与现有文件重复的 ELF(→ elf-analysis.md)、Mach-O(→ platforms.md)、Python(→ languages.md)章节。 + +## 9. PDF 恶意文档(AW AX AY AZ) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **AW** | pdfid 检出 /JS、/JavaScript、/OpenAction、/AA、/Launch 计数 >0(含 hex 编码名称如 /4A#61#76#61... 的混淆计数) | pdfid -e 统计(对比 plain vs obfuscated 计数);pdf-parser 提取可疑对象;peepdf 交互分析 + JS 仿真 | E-pdf-autoaction | P0 | +| **AX** | pdfid 检出 /EmbeddedFile >0;对象流含 FlateDecode/ASCIIHexDecode 级联过滤器链;或 /Annot 对象中隐藏编码载荷 | pdf-parser 提取流数据;peepdf 解码多层级联过滤器(含 AES 加密流 security handler r5/r6);检查 Annotation 对象;file 识别解码结果类型 | E-pdf-embedded | P0 | +| **AY** | 提取的 PDF JS 含大量 eval、unescape、String.fromCharCode、atob | peepdf JS 仿真环境执行跟踪;逐层解码 Base64/Hex/ROT13;CyberChef 辅助 | E-pdf-js-deobf | P1 | +| **AZ** | PDF 结构异常:/JBIG2Decode、XREF 表被操纵、对象编号跳跃 | pdfid -d 重命名可疑关键字;检查已知 CVE 利用模式;提取 exploit 触发条件 | E-pdf-exploit | P1 | + +## 10. Office OOXML / DDE / RTF(BA BB DK)→ 与 §3 VBA 互补 + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BA** | docx/xlsx/pptx ZIP 解压后 word/_rels/ 或 xl/_rels/ 中含可疑外部关系(含 remote template injection) | 检查 *.rels 外部链接;检查 vbaData.xml;提取嵌入 OLE 对象;检查协议处理器滥用(ms-msdt: / search-ms: / ms-officecmd:) | E-office-ooxml | P0 | +| **BB** | 文档含 DDEAUTO 或 DDEEXEC 域代码,通过域执行外部命令 | olevba --dde 扫描;提取 DDE 命令参数;检查是否指向 PowerShell/外部 exe | E-office-dde | P0 | +| **DK** | .rtf 文件含嵌入 OLE 对象(非 OOXML、非经典 OLE 复合文档) | rtfobj 提取嵌入 OLE 对象;oleobj 分析对象类型;检查 Equation Editor 漏洞利用(CVE-2017-11882 等);file 识别提取物类型 | E-rtf-ole | P0 | + +## 11. WebAssembly(BC BD BE) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BC** | 文件以 \x00asm 魔术字节开头;或 JS 代码含 WebAssembly 实例化逻辑 | wasm2wat 转文本;检查 import 段识别宿主环境导入函数;wasm-decompile 生成伪代码;检查 Emscripten 胶水签名(__wasm_call_ctors)判断是否由 JS 编译而来 | E-wasm-struct | P0 | +| **BD** | WASM 函数数量多但逻辑简单、函数体被拆分为微小函数;或存在无意义 block/loop 嵌套 | diswasm 评估函数最小化级别;JEB Pro / IDA WASM 插件深度分析;动态追踪执行日志 | E-wasm-obfuscation | P1 | +| **BE** | WASM 模块通过 JS 导入/导出函数与浏览器交互,存在 WebSocket、fetch、WebGL 调用 | 同时分析 JS 胶水代码和 WASM 模块;浏览器 DevTools 追踪数据交换;提取网络通信 URL/域名 | E-wasm-c2 | P1 | + +## 12. Java JAR/Class(BF BG BH BI) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BF** | JD-GUI/jadx 打开 JAR 时类名/方法名为无意义短字符(a.a.a / _0x 前缀 / 数字类名);或大量 while/switch 控制流混淆 | 识别混淆器类型(ProGuard / Allatori / ZKM);Java Deobfuscator 静态反混淆;高强度时动态调试追踪关键逻辑 | E-java-obfuscation | P0 | +| **BG** | 大量 Class.forName()、Method.invoke()、Constructor.newInstance();或自定义 ClassLoader + defineClass() 从字节数组内存加载类;导入表无害但运行时动态加载恶意类 | javap -c -v 查看反射调用细节;追踪 Class.forName 参数字符串;检查 defineClass() 字节数组来源;动态对 Method.invoke 下断 | E-java-reflection | P0 | +| **BH** | JAR 含 .so(Linux/Android)或 .dll(Windows);或 System.loadLibrary() 调用 | 提取原生库文件;file 识别格式;转入 ELF/PE 独立分析流程 | E-java-native | P1 | +| **BI** | JAR/ZIP 解压后含嵌套 JAR/WAR/EAR;/resources、/assets 中存在高熵 .dat/.bin/.img 文件 | 递归解压所有嵌套归档;熵值分析判断加密/压缩;检查 META-INF/MANIFEST.MF 和 pom.xml | E-java-nested | P1 | + +## 13. AutoIt(BJ BK BL DM) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BJ** | PE 字符串含 AutoIt / AU3 / EA05 / EA06 签名;或资源节含 AutoIt 脚本资源(注意与 AutoHotKey 区分,MITRE T1059.010 两者共用) | autoit-ripper 提取编译脚本;识别编码家族(EA05 = AutoIt3.00 / EA06 = AutoIt3.26);EA06 头部后提取 8 字节解密密钥用于解密载荷;还原源码 | E-autoit-extract | P0 | +| **BK** | 提取脚本含大量 StringEncrypt/_StringEncrypt;或 Execute 动态执行 + 无意义变量名 | myAutToExe 静态反编译;识别反调试技术;分析混淆后控制流 | E-autoit-deobf | P1 | +| **BL** | 脚本含 RegWrite(注册表持久化)、FileInstall(文件释放)、InetGet(网络下载)、Run/RunWait | 标记敏感 API 调用序列;分析 InetGet URL;追踪 FileInstall 释放路径 | E-autoit-malicious | P0 | +| **DM** | AutoIt 作为 loader 执行进程空洞注入(process hollowing):CallWindowProc/EnumWindows 回调 + shellcode + 注入合法进程(regsvcs.exe 等),释放 .NET 载荷(DarkGate / Snake Keylogger / ArechClient2 模式) | 检查 DllCall/DllCallbackRegister 对 kernel32 注入 API 的调用链;提取 shellcode 数据;识别被注入目标进程;提取 .NET 载荷独立分析 | E-autoit-hollowing | P0 | + +## 14. HTA / HTML Application(BM BN BO) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BM** | HTML 含 HTA:APPLICATION 标签、window.execScript 或 CreateObject 调用 | 检查 HTA:APPLICATION 属性(Application、WindowState);提取 script 标签中的 VBS/JS | E-hta-bypass | P0 | +| **BN** | HTA 通过 mshta.exe 启动后 XMLHttpRequest / ActiveXObject 远程拉 Payload 执行 | 提取网络请求 URL;跟踪 ActiveXObject 创建(ADODB.Stream 等);还原完整下载执行链 | E-hta-download-chain | P0 | +| **BO** | HTA 仅含单行极长混淆字符串,经 eval / execScript 执行 | 提取 Base64/Hex 编码载荷解码;CyberChef 递归检测编码类型;还原载荷 | E-hta-oneline | P1 | + +## 15. WSF / JSE / VBE(BP BQ BR BS) + +| ID | 触发 | 动作(摘要) | Evidence | 优先 | +|----|------|--------------|----------|------| +| **BP** | .wsf 含 \ + \