[原创]恶意代码分析实战第13章Lab13-02.exe分析
结合恶意代码分析实战实验课后题,分析样本Lab13-02.exe
1.样本信息
病毒名称:Lab13-02.exe
MD5: B65C4D7CBC4069DDBFF665370201E588
SHA1: 0184ACEB64037DCDADDE0A5975041304C92119A8
CRC32: 45409D1C
2.测试环境及工具
2.1 测试环境
Windows 7 32位操作系统
2.2 测试工具
查壳工具:PEID
监测工具:火绒剑、PCHunter
调试工具:OD、IDApro
3.行为分析
将病毒样本拖入火绒剑中,可以看到恶意程序在一定时间间隔内不停创建文件。

图3-1 恶意程序行为分析
在当前文件夹下查看,可以看到恶意程序在不停生成文件。

图3-2 恶意程序生成文件
4.恶意代码分析
4.1 病毒查壳
使用PEID进行查壳,如图4-1病毒并没有加壳,是一个VC 6.0的程序

图4-1 病毒查壳
4.2 恶意程序的代码分析
将程序载入IDAPro中,找到main函数,如图4-2,主函数很简单,只调用了一个函数,在这里我将它命名为KeyFun。

图4-2 main函数
进入KeyFun函数,可以看到三个未命名函数(已经)和几个API函数,下面主要分析这三个函数。

图4-3 KeyFun函数
进入sub_401070函数,里面有相当多的API函数,查了一下,这些函数可能与屏幕截取有关。

图4-4 sub_401070函数
所以将sub_401070函数重命名为Screen,大概进入这三个函数,第二个函数是异或加密函数,第三个函数是创建并写入文件函数,将他们全部重命名,如图4-4

图4-5 主体函数重命名
根据KeyFun函数,分析GetTickCount在这里的作用,经过分析可以得知这两条语句的作用是利用GetTickCount获取操作系统启动经过的毫秒数拼接成文件名作为下个函数CreateAndWriteFile的参数。

图4-6 生成文件名
进入Encode函数,除了一个内存初始化函数还有如图4-6 sub_401739函数

图4-7 sub_401739函数
再进入sub_4012DD函数,同样是一大串的加密

图4-8 sub_4012DD函数
这里的异或加密算法很复杂,暂时不去分析,我们先去看一下CreateAndWriteFile函数。

图4-9 CreateAndWriteFile函数
这个函数很简单,创建文件并将缓冲区的内容写入到文件当中。
分析到这里,我们大概已经知道这个恶意程序的行为:
定时截取屏幕内容,将内容数据存入一个缓冲区,将缓冲区中的数据加密并写入文件之中。
根据猜想,生成的文件可能是图片格式,我们将生成的文件后缀改为png,由于文件已经加密无法打开。

图4-10 加密后图片
为了验证猜想,我在这里利用一个取巧的办法,程序有加密函数,那么我们便不让加密函数执行,直接在函数头返回。

图4-11 修改返回
这次,尝试运行程序,将新生成的文件后缀改为png,打开发现是一张屏幕截图,所以猜想验证成功。

图4-12 屏幕截图
至此,恶意代码分析完毕。
