TheSourceAnalysis/unweave

GitHub: TheSourceAnalysis/unweave

UNWEAVE 是一款针对 NOISEWEAVE 混淆风格的 Batch 脚本静态反混淆工具,通过解析碎片化变量赋值和递归展开变量替换来还原恶意 .bat 文件的真实命令逻辑。

Stars: 0 | Forks: 0

# UNWEAVE **NOISEWEAVE batch 反混淆工具** ![Python](https://img.shields.io/badge/Python-3.14-3776AB?logo=python&logoColor=white) ![Batch](https://img.shields.io/badge/Type-Batch%20%2F%20CMD-2D2D2D?logo=windows&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green.svg) ![Stars](https://img.shields.io/github/stars/TheSourceAnalysis/unweave?style=social) ![Platform](https://img.shields.io/badge/Platform-Windows%20%2F%20Linux-blue) UNWEAVE 检测并还原 **NOISEWEAVE** 混淆模式——这是我们 *对*恶意软件(例如 `galaxy.bat`)中常见的一种自制的 batch 混淆风格的*命名*。它将隐藏在碎片化的 `set` 赋值和 `%VAR%` 替换背后的真实命令拼接起来,然后输出一个干净且易读的版本。 不执行目标文件。仅进行静态分析。 ![UNWEAVE logo](https://static.pigsec.cn/wp-content/uploads/repos/cas/52/52cbfb58f0eb27cdd996a678c112df13a8128e36356815d87a5bb43c3fdf1373.png) ## 什么是 NOISEWEAVE? NOISEWEAVE 是一种 batch 混淆技术,它会: - **通过插入噪音中缀来碎片化 `set` 关键字**,例如: s%X%e%Y%t VAR=value %A%se%B%t VAR=value se%C%t%D% VAR=value - **通过“构建器”行拼接真实命令**,这些行利用 `%VAR%` 替换机制,将之前定义的变量拼接起来,例如: %AtlyQrFwj%%FbYCUaup%%ijFcdwG%... -> setlocal enabledelayedexpansion - **用无用数据填充文件**(数千个随机的 Base64 单词),以此来掩盖 真实逻辑并挫败粗略的人工审查。 - 通常**将 payload 隐藏在图像像素中**(隐写术),而不是直接放在 文件本身中,然后通过 `Reflection.Assembly.Load` 在内存中加载它。 ## 工作原理 1. 解析每一个 `set VAR=value`(普通形式或噪音碎片化形式)。 2. 对构建器行上的每一个 `%VAR%` 进行展开,直到状态稳定。 3. 整理常见的片段冲突(`setlocalenabledelayedexpansion` -> `setlocal enabledelayedexpansion`,`powershell.exe-epbypass` -> `powershell.exe -epbypass` 等)。 4. 将清理后的 `.bat` 和/或解码出的 PowerShell payload(`.ps1`)输出到与输入文件 **相同的目录**中,命名为 `_clean.`。 ## 使用方法 ``` python UNWEAVE.py ``` 交互式提示: ``` ============================================================ UNWEAVE - NOISEWEAVE batch deobfuscator ============================================================ Path to the obfuscated .bat file: galaxy.bat What do you want to generate? [1] .bat [2] .ps1 [3] both > 3 [+] Wrote clean bat : galaxy_clean.bat [+] Wrote decoded ps1: galaxy_clean.ps1 ``` 非交互式(通过管道输入): ``` echo "galaxy.bat`n3" | python UNWEAVE.py ``` ![小型代码示例](https://static.pigsec.cn/wp-content/uploads/repos/cas/ed/edf8a0f23f81f3fce9bd0b4b6e685e46faca5b827b6a3bd4cbe24063d9a7c355.png) ## 输出 | 文件 | 描述 | |------|-------------| | `_clean.bat` | 仅包含反混淆后的 batch 命令 | | `_clean.ps1` | 提取出的 PowerShell payload(来自 `-c "..."`) | 输出始终写入与输入文件**相同的目录**中。 ## 示例 ![代码示例](https://static.pigsec.cn/wp-content/uploads/repos/cas/76/761a903bb830652b09b8392a8bef258c3ac4aa69b8ea28152079789d4cfdf2de.png) 输入文件 `galaxy.bat`(1670 行,约 600 KB 的噪音)反混淆后的结果为: ``` setlocal enabledelayedexpansion echo off start conhost.exe --headless powershell.exe -epbypass -w h -c "" exit /b ``` ## 警告 UNWEAVE 仅进行**读取和解码**。它绝不会运行目标文件或其 payload。 请检查生成的文件——不要盲目执行它们。
标签:DAST, DNS 反向解析, 云安全监控, 云资产清单, 去混淆, 恶意软件分析, 批处理, 逆向工具, 逆向工程, 静态分析