PEunion核心功能详解:双层架构如何实现完美规避检测
【免费下载链接】pe-unionCrypter, binder & downloader with native & .NET stub, evasive by design, user friendly UI项目地址: https://gitcode.com/gh_mirrors/pe/pe-union
PEunion是一款专业的加密器、绑定器和下载器工具,采用创新的双层架构设计,专门用于降低可执行文件被安全软件检测的概率。本文将深入解析PEunion的核心功能,特别是其独特的双层架构如何实现完美的规避检测效果,帮助新手用户快速掌握这一强大工具的使用方法。
🔍 PEunion是什么?为什么需要它?
PEunion是一款功能强大的加密工具,它能够加密可执行文件,并在运行时解密后在内存中执行。这种技术可以有效绕过传统杀毒软件的静态扫描,提高恶意软件(或安全测试工具)的隐蔽性。PEunion提供了两种不同的存根(Stub)选择:原生汇编版本和.NET版本,两者都采用相同的双层架构设计。
🏗️ 双层架构:PEunion的核心理念
第一层:轻量级存根
PEunion的第一层是一个极其精简的存根,其主要功能只有两个:
- 检测仿真器- 识别是否在沙箱或虚拟机环境中运行
- 解密并传递执行- 解密第二层shellcode并将控制权移交
这个设计的关键在于:第一层只包含最基础的代码,几乎不包含任何"可疑"行为。这意味着反病毒软件很难通过静态分析检测到第一层的恶意特征。
第二层:功能完整的shellcode
第二层包含所有实际的功能代码,如:
- 文件下载功能
- 进程注入(RunPE)
- 文件释放(Drop)
- 内存中执行.NET程序集
- 自删除功能(Melt)
第二层代码在磁盘上是加密的,只有在运行时才会被解密到内存中执行。这确保了扫描时无法检测到第二层的恶意特征。
🔐 加密与混淆技术
低熵打包方案
PEunion使用专有的4字节XOR流密码对shellcode进行加密。为了进一步降低熵值,加密后的shellcode会与随机偏移的空字节交错混合。这种设计使得加密数据没有重复模式,难以通过YARA规则进行特征匹配。
代码混淆技术
原生汇编存根:
- 使用nop-like指令与实际代码交错
- 字符串不在数据段存储,而是通过mov操作码在栈上构建
.NET存根:
- 使用难以区分的Unicode字符替换符号名
- 字符串和整数字面量在运行时解密
📁 项目结构与核心模块
PEunion的项目结构清晰,主要分为以下几个部分:
主应用程序:PEunion/ - 包含WPF用户界面和项目配置管理
编译器模块:PEunion.Compiler/ - 负责将项目编译为最终可执行文件
- Compiler/ProjectCompiler.cs - 编译器基类
- Compiler/Pe32Compiler.cs - 原生PE32编译器
- Compiler/DotNetCompiler.cs - .NET编译器
存根代码:SlnBin/Stub/ - 包含两种存根的源代码
- pe32/Stub.asm - 原生汇编存根主文件
- pe32/Stage2.asm - 第二层shellcode
- dotnet/Stub.cs - .NET存根主文件
🚀 执行流程详解
原生存根执行流程
- 检测仿真器- 检查是否在虚拟环境中运行
- 获取Kernel32句柄- 定位关键系统函数
- 修改内存保护- 将第二层区域设置为可读写
- 解密第二层- 使用XOR流密码解密shellcode
- 恢复内存保护- 将第二层区域恢复为可执行
- 创建线程执行- 在新线程中运行解密的shellcode
.NET存根执行流程
- 检测仿真器- 尝试识别沙箱环境
- 从资源读取- 获取加密的第二层程序集
- 解密数据- 使用相同的XOR算法解密
- 动态加载执行- 使用Assembly.Load加载并执行
🛠️ 主要功能特性
1. 绑定器(Binder)功能
PEunion可以将多个文件合并到一个可执行文件中。这些文件可以:
- 嵌入到编译后的可执行文件中
- 在运行时从网络下载
2. 下载器(Downloader)功能
支持从远程服务器下载文件并在内存中执行,无需将文件写入磁盘。
3. RunPE(进程镂空)
对于原生PE文件,PEunion使用进程镂空技术将目标进程注入到合法进程中执行。
4. 内存中执行.NET程序集
对于.NET可执行文件,PEunion使用反射技术在内存中直接加载和执行程序集。
5. 文件释放(Drop)
可以将合法文件(无已知签名)写入磁盘,用于释放必要的依赖文件。
6. 自删除(Melt)
存根执行后可以自我删除,减少在磁盘上留下的痕迹。
🔧 配置与定制
存根类型选择
- Native:使用汇编语言编写,体积小,性能高
- .NET:使用C#编写,跨平台兼容性更好
图标与版本信息
可以指定自定义图标、版本信息和清单文件,使生成的可执行文件看起来更加合法。
右到左覆盖工具
PEunion包含一个RTLO(Right-To-Left Override)工具,可以创建伪装文件扩展名的文件名,使可执行文件看起来像其他类型的文件(如JPEG图片)。
📊 规避检测的优势
最小化检测面
由于只有存根需要对抗反病毒检测,而第二层的所有"可疑"代码都在加密状态下,PEunion的检测面被最小化。当存根被检测到时,只需修改存根代码即可恢复FUD状态。
易于定制
PEunion的代码完全开源,用户可以:
- 修改存根代码以绕过特定杀毒软件
- 调整加密算法和混淆技术
- 添加新的规避技术
教育价值
作为一个开源项目,PEunion提供了完整的学习材料,帮助安全研究人员了解现代加密器和规避技术的实现原理。
🎯 使用建议与注意事项
目标用户
PEunion适合以下用户:
- 熟悉加密器基本概念的安全研究人员
- 了解内存执行和规避技术基础的安全测试人员
- 需要学习现代恶意软件技术的安全分析师
重要提醒
- 上传存根到VirusTotal会显著缩短其保持FUD状态的时间
- PEunion是一个教育项目,仅供合法安全研究使用
- 用户应对自己的行为负责,遵守当地法律法规
💡 总结
PEunion通过创新的双层架构设计,将检测面最小化到仅存根部分,大大提高了规避检测的效果。其开源特性使得安全研究人员可以深入学习和定制,而丰富的功能集满足了各种场景的需求。无论是用于安全测试、红队演练还是技术研究,PEunion都是一个值得深入学习和使用的强大工具。
通过理解PEunion的双层架构原理,用户可以更好地利用这一工具进行安全研究和测试,同时也能够更深入地理解现代恶意软件规避技术的发展趋势。
【免费下载链接】pe-unionCrypter, binder & downloader with native & .NET stub, evasive by design, user friendly UI项目地址: https://gitcode.com/gh_mirrors/pe/pe-union
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考