reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
---
name: re-managed
type: gateway
description: >
托管代码逆向网关。编排:识别运行时 → 反编译 → 去混淆 → 恶意场景转 [[re-malware]]。
子技能:[[re-dotnet]] [[re-java]] [[re-script-deob]] [[re-wasm]] [[re-ai-triage]] → [[re-ai-model]] [[re-blockchain]] [[re-python]]、[[re-browser-ext]]、[[re-electron]]、[[re-javacard]]。
触发词:.NET、dnSpy、ILSpy、Java、jar、字节码、PowerShell混淆、VBA宏、JS去混淆、托管代码、managed code。
capabilities: [bytecode-parser, deobfuscation]
---
# 托管代码逆向(.NET / Java / 脚本)
## 完整工作流
1. 识别运行时(不先判型就反编译是最大浪费):
- **PE 文件**:`file` 输出含 "Mono/.Net assembly"、PE 可选头数据目录第 15 项(COM Descriptor / CLI header)非零、导入 `mscoree.dll` → .NET 程序集 → [[re-dotnet]](能力:`bytecode-parser`)
- **jar/war/class**:`unzip -p app.jar META-INF/MANIFEST.MF` 见 `Main-Class`、class 文件魔数 `CAFEBABE` → Java 字节码 → [[re-java]](能力:`bytecode-parser`)
- **脚本/宏**:shebang(`#!/usr/bin/pwsh`)、`-EncodedCommand` / `IEX`(PowerShell)、OLE 文档(`file` 显示 "Composite Document")内嵌 VBA、`eval(` / `fromCharCode`(JavaScript)→ [[re-script-deob]](能力:`deobfuscation`)
- 拿不准先 [[re-triage]](能力:`triage`) 初勘(file/hash/熵/strings),不要凭扩展名猜
2. 反编译:按识别结果走 [[re-dotnet]](能力:`bytecode-parser`) / [[re-java]](能力:`bytecode-parser`) / [[re-script-deob]](能力:`deobfuscation`),先把目标逻辑还原成可读代码
3. 去混淆:各原子技能内含对应方案——de4dot(ConfuserEx/SmartAssembly)、混淆识别 + 字符串解密(ProGuard/Allatori)、逐层解码(脚本/宏);混杂原生组件(native stub / JNI)的反混淆转 [[re-deobfuscate]](能力:`deobfuscation`)
4. 恶意场景(钓鱼宏、下载器脚本、恶意 .NET/Java 样本):转 [[re-malware]](能力:`malware-behavior`、`document-malware`、`evasion-analysis`、`key-extraction`、`threat-intel`) 网关——默认沙箱 → 行为分析 → C2/协议 → IOC/报告;反编译还原结果作为静态证据回传给 [[re-malware]](能力:`malware-behavior`、`document-malware`、`evasion-analysis`、`key-extraction`、`threat-intel`) 使用
## 何时用哪个原子技能(选择树)
按运行时分支:
- **PE 且确认 .NET 元数据(CLI header / mscoree)** → [[re-dotnet]](能力:`bytecode-parser`;dnSpy/ILSpy 反编译、de4dot 去混淆)
- **jar / war / class(Java 字节码)** → [[re-java]](能力:`bytecode-parser`;CFR/JD-GUI、javap、加固脱壳)
- **.ps1 / .docm / .xlsm / .js / .jse / .hta(脚本或宏)** → [[re-script-deob]](能力:`deobfuscation`;逐层解码,动态执行默认沙箱)
- **Python 打包样本(.exe 含 PyInstaller/PyArmor 特征 / .pyc / python 打包)** → [[re-python]](能力:`bytecode-parser`;pyinstxtractor 解包、PyArmor-Unpacker、pyc 反编译;纯脚本混淆转 [[re-script-deob]](能力:`deobfuscation`))
- **.wasm / WebAssembly 模块(网页/Node 侧载荷)** → [[re-wasm]](能力:`web-assembly`;WABT 解析 section、wasm-decompile 反编译、DevTools/wasmtime 动态)
- **AI 模型相关** → [[re-ai-triage]](能力:`triage`) 分流:模型文件(.onnx/.safetensors/.pt)→ [[re-ai-model]](能力:`ai-model-analysis`;格式识别、权重提取、文件级水印;未知 pkl 默认隔离);仅 API → [[re-ai-attack]](能力:`ai-model-analysis`;行为层评估,guard 授权前置)
- **EVM 合约字节码(.bin / hex)** → [[re-blockchain]](能力:`blockchain-analysis`;ABI 恢复、panoramix 反编译、漏洞分析)
- **浏览器扩展(crx/xpi/zip 扩展文件)** → [[re-browser-ext]](能力:`browser-extension`;权限审计/恶意行为/混淆还原)
- **Electron 打包应用(resources/app.asar)** → [[re-electron]](能力:`electron-analysis`;asar 解包、V8 字节码边界、CDP 动态调试)
- **Java Card / SIM(CAP 文件)** → [[re-javacard]](能力:`bytecode-parser`;12 组件解析、process(APDU) 分派还原)
- **Android DEX** → 不是本网关——转 [[re-mobile]](能力:`dex-parser`、`jni-analysis`、`frida-instrumentation`、`mobile-forensics`;[[re-apk]](能力:`dex-parser`)),其中含 Java 原生逻辑再回 [[re-java]](能力:`bytecode-parser`)
- **仅脚本调用 native 下载的 PE** → 动态侧跟 [[re-malware]](能力:`malware-behavior`、`document-malware`、`evasion-analysis`、`key-extraction`、`threat-intel`),静态侧回 [[re-binary-core]](能力:`decompilation`、`debugging`、`memory-dump`、`elf-parser`、`pe-parser`、`macho-parser`)
## 跨域联合
- .NET/Java 恶意样本:[[re-malware]] → 本网关(dotnet / java 反编译还原)→ 回 [[re-malware]](行为验证 + IOC)
- 恶意脚本/宏:[[re-malware]] → [[re-sandbox]](动态)→ [[re-script-deob]](静态还原载荷)
- 底座 [[re-binary-core]]:初勘([[re-triage]])、混合程序原生部分(格式解析 / [[re-ghidra]] 反编译)、混淆深层还原([[re-deobfuscate]])
- 本网关被 [[re-analyze]] 的 triage「.NET/Java/脚本样本」路径调用
- "代码在数据里"分支:AI 模型([[re-ai-triage]] → [[re-ai-model]] 文件层 / [[re-ai-attack]] 行为层;内嵌代码转 [[re-binary-core]])、EVM 合约字节码([[re-blockchain]],漏洞侧衔接 [[re-vuln]])
## 常见坑与陷阱
- **凭扩展名/导入猜运行时**:PE 导入 `mscoree.dll` 未必是纯托管(混合模式 / 混淆器伪装),Jar 可能内嵌 native 库——先按工作流第 1 步确认(CLI header / manifest / 魔数)再选技能
- **.NET 自包含单文件 / Java fat jar 不解包直接分析**:单文件把 IL + 运行库捆进 native host,fat jar 的类在 `BOOT-INF/lib`——先解包([[re-dotnet]] / [[re-java]] 有对应步骤),否则反编译产物空/乱
- **混淆层数估计不足**:还原一层发现还有一层是常态——逐层验证,每层存档,别试图一步到位
- **动态执行不上沙箱**:脚本/宏/VBA 可能下载器、可能持久化——一切动态执行默认沙箱([[re-analyze/platform-tips]] 最高原则),静态解码可免
- **加固与混淆混淆**:Java 加固(Virbox 等)是"壳",de4dot 管不了——先判"壳还是混淆",壳走 [[re-anti-analysis]] 思路(先脱后反)
- **Bytenode 字节码绑定 ABI**:现象——宿主 Node 加载 JSC 失败;原因——Bytenode 字节码绑定特定 V8/Node ABI;对策——用样本自带 Electron 的 RunAsNode 模式(`ELECTRON_RUN_AS_NODE=1`)执行,不启动业务 GUI
- **注册面 ≠ 执行面**:现象——枚举 handler 无法证明数据流;原因——注册存在不等于路径执行;对策——先枚举 IPC/preload 注册面,再对高风险 handler 用 mock fixture 调用并捕获副作用(URL 接收/下载/解压/spawn 参数),形成证据闭环
- **更新链五元组取证**:现象——更新流程证据不全;原因——链路节点分散;对策——按 `source URL → downloader → archive path → extractor → executable` 每个节点保存哈希与时间戳
- **签名状态分四态**:现象——双签名 DLL 判断含糊;原因——各签名状态可能不同;对策——`signtool verify /pa /all /v` 逐签名检查(存在性/有效期/时间戳/信任验证分开报告)
- **静态能力 ≠ 已执行**:现象——native 字符串/导入显示高权限能力;原因——导入是线索不是证据;对策——能力描述结合 xref/调用链,报告分栏「条件性能力」与「已观察行为」
(来源:reverse-skill field-journal,MIT)