Kzhong-sec/Emotet-unflattener

GitHub: Kzhong-sec/Emotet-unflattener

基于Angr符号执行引擎的Python工具,专门用于还原被控制流平坦化混淆的Emotet恶意软件原始控制流,辅助安全研究人员进行逆向分析。

Stars: 0 | Forks: 0

# Emotet 控制流还原器 一个 Python 工具,通过 Angr 利用符号执行技术,还原被控制流平坦化混淆的 Emotet 恶意软件的原始控制流。 ## 注意事项 - 支持所有 32 位和 64 位的 Windows PE 二进制文件 - 已针对 2024 年首次提交至 VirusTotal 的 Emotet 二进制样本进行过测试 - 去混淆过程可能需要相当长的时间(每个二进制文件最长约 1 小时),具体取决于样本的复杂程度 ## 前置条件 - Python 3.10 或更高版本 ## 安装说明 1. 克隆代码库: ``` git clone https://github.com/Kzhong-sec/Emotet-unflattener.git cd Emotet-unflattener ``` 2. 安装 Python 依赖项: ``` pip install -r requirements.txt ``` ## 用法 该工具通过 `src/unflatten.py` 入口文件执行。 ### 参数 ``` python unflatten.py --binary [--function ] [--output ] ``` - `--binary`, `-b` **必填。** 目标 Windows PE 二进制文件的路径。 - `--function`, `-f` 可选的待还原函数地址(十六进制或十进制)。 若省略,则处理所有函数。 - `--output`, `-o` 可选的输出二进制文件路径。 默认值为 `.unflattened`。 ## 输出 请参阅下方的工具运行结果。 **图 1:去混淆前的基本块** ![去混淆前的基本块](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0d6a55143e124405.png) **图 2:去混淆后的基本块** ![去混淆后的基本块](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6c67a307d5124406.png) **图 3:去混淆前的反编译结果** ![去混淆前的反编译结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/3aebba1db7124408.png) **图 4:去混淆后的反编译结果** ![去混淆后的反编译结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0abfe360e5124409.png) ## 性能 该工具已针对以下 9 个 Emotet 样本进行了评估: ``` C688E079A16B3345C83A285AC2AE8DD48680298085421C225680F26CEAE73EB7 9D5AF9E1EBE5E391B33B7A362E1125CE2842BA84E75E1AB1B043EEA695EA3995 3822FFA36B251A65AB4042D3C6F7457684ABB452366EF248868176B3D22C2AB2 E5C488C73F34F4DF7B85A0B6FA8F667FED7364DBCEEC8E18F426D53989AF9045 9BB1B20AB4A3355F2C62DD0E08159AB6392E9490961295DDB16984B573AF2775 3B6E3B851F5195C9D831D0958967B96C0A699B1CF8DE71218AC66F48CD009FEF 1C9D11817A98EC7E35B5177982B38DB5371E1806293F621E40D103053E886BCB 951DB530C6DCB5C56B376D3A2E2EFE3AC938B487CF7B7F29E6CE06FDEA46406C 5700694D1D78C952A81690CF0DFAD2B13F25B65D8C196481DC256B47550E33F1 ``` 在这些样本中,大约 98% 的被混淆函数被成功去混淆。工具处理失败的函数主要是那些极为庞大的函数,其符号执行过程会超时或导致内存消耗过高。 经过重写和修补的二进制文件在去混淆后成功执行,并且按预期运行,未发生崩溃。
标签:Angr, DAST, DNS 反向解析, Emotet, PE文件分析, Python, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 去混淆, 反混淆, 反病毒, 威胁情报, 安全脚本, 开发者工具, 恶意软件分析, 控制流平坦化, 控制流恢复, 无后门, 样本分析, 漏洞分析, 符号执行, 路径探测, 逆向工具, 逆向工程, 静态分析