软件安全实验五——实验报告
实验要求
操作实验:熊猫烧香病毒分析。实验内容如下。
- 基于虚拟机软件及其快照功能,搭建一个恶意代码分析实验环境。
- 分析熊猫烧香病毒的程序结构和入侵过程。
实验过程
一 搭建恶意代码分析实验环境
测试环境:VMWare WorkStation + Windowx XP Home Edition
通过共享文件夹,将病毒样本zip和所需工具上传到windows xp中,然后禁用共享文件夹。
关闭虚拟机的网络,防止病毒通过网络传播:

关闭虚拟机的防火墙;
创建虚拟机快照,作为还原点:

- 解压熊猫烧香.zip,释放病毒,病毒样本:

二 行为分析
运行病毒,进程中出现spo0lsv.ext
进程。
提取样本,放入火绒剑进行监控分析。
- 发现文件创建、写入、修改、修改权限等操作,创建了大量Desktop_.ini文件:
表现为大量感染系统中的exe文件:
- 发现有注册表操作,包括设置启动项、隐藏文件等:
- 发现进程操作:
- 发现网络操作:
总结:
文件操作:病毒创建大量 Desktop_.ini 文件,感染系统中的 .exe 文件,导致文件无法正常运行并显示熊猫图标。
注册表操作:修改注册表设置自启动项,并隐藏恶意文件,确保病毒在每次启动后重新运行。
进程操作:创建或修改进程,保持病毒在系统中的存在,同时影响其他进程。
网络操作:病毒与外部服务器通信,可能用于远程控制或数据窃取。
三 代码分析
使用PEID进行查壳,发现程序带PSG 2.0壳。

使用ollydbg进行脱壳,单步跟踪,0x0040D278为程序的原始入口点,在该地址处,右键dump程序。

使用ImportRCE对dump文件进行IAT修复,发现不能完整识别所有的导入函数,观察IAT的起点是0x0041012C

发现模块之间被 7FFFFFFF 填充,修改为00000000,从而清理掉这些无效数据,修复完成。
修复完成后的dump文件用IDA打开
添加签名便于分析,搜索Delphi,找到Delphi6-7的特征库,应用可以识别出很多库函数
使用F5将其转换为伪代码,便于后续分析。
从start处开始,先分析第一个函数sub_405205。
回到OllyDBG,进入该函数:
结合IDA中代码:
在调用sub_405250之后,有LStrCmp字符串比较函数的调用,之后又有判断返回值的代码,可以猜测函数sub_405250应该是解密字符串函数。我们可以在IDA中改一下他的名字:
剩下的sub_40819C、sub_40D18C、sub_40D088三个函数应该是执行恶意代码的函数,最后有一个消息循环,猜测是要等待恶意代码执行完毕以后退出:
1. sub_40819C函数分析
发现是在每一个目录下创建Desktop_.ini
文件
继续往下走:
首先4053AC函数的功能是获取Windows系统目录(System目录)的完整路径名。
405FC4函数在IDA中不易分析,回到OllyDBG中,找到具体使用的地方:
发现此是EAX中存储的是病毒程序的名称。
找到调用该函数的位置,进入下一步后,发现返回了1,判断此处功能应该是结束程序名为”spo0lsv.exe”的程序。
继续往下,sub_407B68函数内为写入bat批处理文件的操作以及启动未被感染的程序。
继续分析,这段代码是用于判断当前是否为源病毒程序,如果是则进入判断语句,不是则结束进程。
汇总
- sub_4053AC:获取Windows系统目录(System目录)的完整路径名;
- sub_405FC4:结束程序名为”spo0lsv.exe”的程序;
- sub_407B68:写入bat批处理文件的操作以及启动未被感染的程序;
2. sub_40D18C函数分析
发现包含这些函数:
首先是40A5B0函数,进入后发现:
在进入40A48C函数,根据之前的判断,这里应该是在创建Desktop.ini文件。
然后是40C374函数:
进入TimerFunc函数中,实际功能就是检查C盘中setup.exe和autorun.inf文件是否存在,若不存在则创建。
最后是40BACC函数,进入后再进入sub_40B864函数发现是与网络连接相关的一些函数。
汇总
- sub_40A5B0:创建线程,遍历目录创建Desktop_.ini文件;
- sub_403C74:设置函数定时器,检查C盘中setup.exe和autorun.inf文件是否存在,如果不存在就创建;
- sub_40BACC:创建线程,进行网络连接;
3. sub_40D088函数分析
进入后是这个样子:
先进入40CEE4函数,发现是添加启动项、修改注册表的操作。
进入sub_40D040函数,再进入sub_40CC34,再进入sub_40C9B0,结合网络博客发现这里在访问网站并获取系统目录,应该是从服务器下载恶意代码。
再进入40D048函数,发现内部有两个函数,函数sub_40CC34与函数sub_40CDEC:
40CC34函数与40D040函数功能相同,也是下载恶意代码,40CDEC函数方面,发现其为执行cmd命令,关闭网络共享。
进入sub_407430函数,再进入sub_406E44函数,发现熟悉的McAfree,用于删除杀毒软件启动项、关闭杀毒软件服务的操作:
进入sub_40CC4C函数,结合网上博客,这个函数是用于打开解密之后的网页:
进入sub_40C728函数,再进入sub_40C5E0函数,结合博客,发现与sub_40D040功能类似,此处函数功能大概也是下载恶意代码。
汇总
- sub_40CEE4:关闭杀软窗口和进程,添加启动项、修改注册表
- sub_40D040:下载恶意代码
- sub_40D048:下载恶意代码,执行cmd命令
- sub_407430:删除杀毒软件启动项,关闭杀软服务
- sub_40CC4C:打开解密之后的网页
- sub_40C728:下载恶意代码