第5篇 熊猫烧香逆向分析(下)

本实验仅用于信息防御学习,请勿用于非法用途!!!

目录

一、前言

二、实验环境

三、函数sub_408024分析

 1、函数sub_40532C分析

 2、函数sub_4054BC分析

 3、函数sub_403F8C分析

 4、函数sub_4060D4分析

5、函数sub_40416C分析

6、函数sub_4085D3分析

 四、小结

扫描二维码关注公众号,回复: 14522631 查看本文章

一、前言

        函数sub_408024作为病毒三大功能的第一大模块,功能有点多,所以接着熊猫烧香逆向分析(中)进行实验。

二、实验环境

        实验环境:windows xp sp2
        病毒样本:87551e33d517442424e586d25a9f8522(MD5值)
        软       件:PEiD、OllyDBG、IDA pro

三、函数sub_408024分析

        现在程序来到了loc_408171处。

         在OD中查看[ebp+var_8]的值:        

         因为cmp比较的两个数是无符号数,且相等,故ZF=1,CF=0。跳转不成立。之后,程序调用函数GetFilePathAndName获取文件路径(包含文件名),并将其保存在eax中。         

 1、函数sub_40532C分析

        在IDA中打开该函数:

        可以看到,调用了一个API函数——CharUpperBuffA,该函数主要功能是:缓冲区中指定数目的字符,小写字母转化为大写字母。

        ​ 故,将函数sub_40532C重命名为“ToUpper”。

 2、函数sub_4054BC分析

        在IDA中打开该函数:

        该函数主要调用了GetSystemDirectoryA这一API函数,其主要功能是:获取系统路径。

        ​ 故,将函数sub_4054BC重命名为"GetSystemDir"。

 3、函数sub_403F8C分析

        首先,在OD中,跳转到0x4081AB处。

        可以看到,push是将刚才利用GetSystemDirectoryA函数获取的系统路径字符串进程压栈,也就是C:/WINDWOS/SYSTEM32这个目录。

        ​ 继续按F8,是将”drivers\“和”spoclsv.exe“分别压栈。将数据窗口转到0x9D7E78处,步过函数403F8C,观察数据窗口的变化。

         由此可见,函数sub_403F8C的功能是将两个个字符串与一个原始字符串相连。在IDA中,将函数sub_403F8C重命名为:TwoStringCat。

         拼接字符串之后,将拼接的字符串转换为大写,然后与某个字符串比较。

         从查看函数参数可见,是将“C:\WINDOWS\SYSTEM32\DRIVERS\SPOCLSV.EXE”与“C:\DOCUMENTS AND SETTINGS\OWNER\桌面\PANDA.EXE”比较,跳转不成立。至于为什么要比较这两个字符串,可以联想到行为分析时,病毒会将自身改名为spoclsv.exe,并复制到drivers目录下,这里的对比目的就是确认病毒是否被复制到了该目录下,如果没有,则进行病毒的复制;否则,跳过。

 4、函数sub_4060D4分析

        IDA进入函数sub_4060D4。

        可以发现它不仅调用了非常多的子函数,在子函数内部又调用了各种各样的API函数,依据这些API函数的功能可以知道,sub_4060D4的作用在于查找当前内存中的指定进程,若存在,则将其终止 。

​         故,将函数sub_4060D4更名为”SearchAndTerminateProcess“。

         这段代码的意思就是拼接出字符串”C:\windows\system32\drivers\spoclsv.exe“,创建并隐藏spoclsv.exe文件。

         1)同样拼接出字符串”C:\windows\system32\drivers\spoclsv.exe“,检查其路径;

         (2)获取原始病毒文件的路径;

         最后利用函数copyfile将病毒文件从”C:\documens and settings\owner\桌面\panda.exe“复制到”C:\windows\system32\drivers\spoclsv.exe“。

        winExec函数功能:运行exe文件。exitprocess的功能是结束当前进程。

​        由此可知,该段代码是运行C:\windows\system32\drivers\spoclsv.exe,然后退出当前的panda.exe文件。

        ​如果继续用OD进行动态分析,要么重新载入spoclsv.exe,要么修改程序流程,使得程序认为自己就是spoclsv.exe!

        双击Z,将”0“更改为”1“,改变程序的执行流程(没有改变代码)。真正实现病毒功能的,可以说就是“spoclsv.exe”这个程序,虽说这个程序和“熊猫烧香.exe”是完全一样的,可是毕竟其内部的执行流程是不同的。 改变程序执行流程的目的是为了得到病毒的完整资料。

        ​ 修改完ZF值后,程序跳转到了0x4082F0。

5、函数sub_40416C分析

​        这个函数不太容易分析,其主要功能是删除字符串中的信息,其中eax保存的是欲操作字符串的地址,ecx保存的是欲删除的字符的个数。那么就将sub_40416C重命名为:DeleteStringBuff。 然后程序跳转到loc_4085D3处。

6、函数sub_4085D3分析

        在OD中查看eax保存的值。

        可以看到eax将保存0x01,之后的CALL就是查找文件中是否包含有这个标记,如果包含有这个标记,那么就执行跳转,否则不跳转。由此我们可以假设,这个0x01标记应该就是病毒将程序感染后,在原本正常的程序中添加的,用于标识该程序是否被感染的标记 。这里可以将sub_4041B4重命名为:SearchSignPos。

​       由于我现在分析的是病毒程序,他自身没有0x01标志位,因此跳转不成立,继续执行:

         这部分的代码主要用于收尾工作,最后的CALL用于删除堆栈中所保存的地址,这些地址指向的是病毒写入的一些信息。这部分代码返回后,那么sub_408024就执行完了 .

 四、小结

        本文和熊猫烧香逆向分析(中)主要分析了病毒三大模块之一的sub_408024函数,至此,已经拥有了一定的逆向分析能力,逆向更多的是耐心与细心。各位加油!

猜你喜欢

转载自blog.csdn.net/qq_55202378/article/details/126888289