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


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

    目录

    一、前言

    二、实验环境

    三、函数sub_408024分析

     1、函数sub_40532C分析

     2、函数sub_4054BC分析

     3、函数sub_403F8C分析

     4、函数sub_4060D4分析

    5、函数sub_40416C分析

    6、函数sub_4085D3分析

     四、小结


    一、前言

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

    二、实验环境

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

    三、函数sub_408024分析

            现在程序来到了loc_408171处。

    033d8bba2f0c409695a1590fe0d5e817.png

             在OD中查看[ebp+var_8]的值:         0bb3271916084db58cd86b675fbf7b77.png

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

    74531e6469514841b8330cfc80c96db0.png

     1、函数sub_40532C分析

            在IDA中打开该函数:

    0bc82afbd9084afcbd72e4f2c51fcf97.png

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

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

     2、函数sub_4054BC分析

            在IDA中打开该函数:

    d928fb5ed80848ebadc93c56183248ce.png

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

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

     3、函数sub_403F8C分析

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

    6294a7c857574ba1bc850e29a3fc7933.png

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

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

    bc7040b4c6b74139b18c6562663fa86c.png

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

    9ab652b79e6f4523bf91aa8fc0c5be0a.png

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

    e4249cfef2584449add06681741d2dd4.png02f1e437a09d43bf857685f4342855ff.png

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

     4、函数sub_4060D4分析

            IDA进入函数sub_4060D4。

    2f4011ae033140c2848b2ba393491cce.png

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

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

    5dae83b3b836452e89ec8e2843650a8f.png

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

    766e26d0efa74c8b846359f287ef8fb3.png

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

    da3b7ed887e149dab454e64a115d5dcb.png

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

    d111e9755c2a485cabc9e469802e7055.png

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

    51bb12719d864a94b40b1d5c3ba97efe.png

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

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

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

    11ae534c052947e6bea4b0abb0b218d3.png

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

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

    898105f8c2d6486a9ad33fb875e957b2.png

    5、函数sub_40416C分析

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

    6、函数sub_4085D3分析

    0ba5aa44aaeb4cbfa87a4354b0f4b691.png         在OD中查看eax保存的值。

    98d194cf5a3643e29fa6aaa4a32aca62.png

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

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

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

     四、小结

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

           

    参考文章:

    病毒木马查杀实战第007篇:熊猫烧香之逆向分析(下)_ioio_jy的博客-CSDN博客

     

     

     

     

     

     

     

  • 相关阅读:
    用户数据权利请求响应
    休闲娱乐APP,你是否感兴趣呢
    PostgreSQL 17新特性之登录事件触发器
    小程序的各种手机屏幕媒体查询
    设计模式:外观模式
    如何使用IP归属地查询API来追踪网络活动
    面试 | Python 自动化测试技术面试真题
    GLSL (4)Uniform
    redis 二元数据存储、查询、统计、运算
    二十九、高级IO与多路转接之epoll&reactor(收官!)
  • 原文地址:https://blog.csdn.net/qq_55202378/article/details/126888289