恶意软件解混淆与内存取证技术解析
恶意软件作者常使用混淆技术来隐藏数据和信息,以逃避安全分析。本文将介绍恶意软件手动和自动解包的方法,以及内存取证的相关技术,帮助安全人员更好地分析和应对恶意软件。
1. 手动解包恶意软件
手动解包一个被打包的二进制文件,通常需要执行以下步骤:
1.识别原始入口点(OEP):当一个打包的二进制文件被执行时,它会提取原始二进制文件,并在某个时刻将控制权转移到OEP。OEP是恶意软件在打包之前的第一条指令的地址。
2.执行程序直到到达OEP:让恶意软件存根在内存中自行解包,并在OEP处暂停(在执行恶意代码之前)。
3.将解包后的进程从内存转储到磁盘。
4.修复转储文件的导入地址表(IAT)。
1.1 识别OEP
以一个使用UPX打包器打包的恶意软件为例,我们可以通过以下方法识别OEP:
-使用pestudio检查:检查打包的二进制文件,发现它包含三个部分:UPX0、UPX1和.rsrc。入口点在UPX1部分,该部分包含解压缩存根,会在运行时解包原始可执行文件。
-分析UPX0部分:UPX0部分的原始大小为0,但虚拟大小为0x1f000,这表明它在磁盘上不占用空间,但在内存中占用0x1f000字节的空间。此外,UPX0部分具有读、写、执行权限,这意味着解包后的恶意代码可能会在该部分执行。
-使用