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





UNWEAVE 检测并还原 **NOISEWEAVE** 混淆模式——这是我们
*对*恶意软件(例如
`galaxy.bat`)中常见的一种自制的 batch 混淆风格的*命名*。它将隐藏在碎片化的
`set` 赋值和 `%VAR%` 替换背后的真实命令拼接起来,然后输出一个干净且易读的版本。
不执行目标文件。仅进行静态分析。

## 什么是 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
```

## 输出
| 文件 | 描述 |
|------|-------------|
| `_clean.bat` | 仅包含反混淆后的 batch 命令 |
| `_clean.ps1` | 提取出的 PowerShell payload(来自 `-c "..."`) |
输出始终写入与输入文件**相同的目录**中。
## 示例

输入文件 `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 反向解析, 云安全监控, 云资产清单, 去混淆, 恶意软件分析, 批处理, 逆向工具, 逆向工程, 静态分析