整体结构分析

20191106163334
- 根据IDA逆向出的流程图可知熊猫烧香病毒逆向后大致分为主流程以及三个调用的函数
主流程分析
- 在主流程中进行了两次字符串校验来判断病毒是否正常执行
- 字符串校验是将两个已有的字符串进过一个函数处理后与另一个字符串比较,若相同则继续进行后续操作,不同则退出程序。作用类似于哈希校验,防止其他人篡改程序
三个调用函数整体分析

https://www.52pojie.cn
主模块一源码分析
主模块一的主要任务是判断运行的软件类型,根据不同的软件类型进行不同的操作
- 软件类型分类有:
- panda.exe,熊猫烧香源文件,若运行的是此文件则将其复制到C:\Windows\system32\drivers\spcolsv.exe并开启一个新的进程运行之
- spcolsv.exe,复制后的文件,若运行的是此文件则进入到主模块二
- 被感染的文件.在主模块二中会有感染过程的分析,若运行的是被感染的文件则删除感染标识,从感染的文件中将感染前的文件释放,命名为xxx.exe.exe,并生成bat脚本,当用户运行xxx.exe.exe则自动删除其自身和被感染文件

20191107094942
自拷贝spcolsv.exe并运行

20191107095713
- 如图可看出在自拷贝函数中用的最多的API是LstrCatN(字符串拼接函数),通过动调分析可知该函数拼接了panda.exe和spcolsv.exe的绝对地址
- 自拷贝函数中最主要的两个API为CopyFileA和WinExec,通过这两个API可以基本确定此函数的功能为拷贝文件并新建线程运行
创建bat文件自删除

20191107105953
- 该函数创建了一个bat文件并执行之
- 某bat文件内容如下

20191107110302
- 该bat将被感染的文件删除,并将被释放出的原文件改名,运行,删除。即在用户看来,被感染的文件运行一次后会自删除
主模块二源码分析
主模块二的主要任务是新建一个线程来感染电脑中的其他文件,并在局域网中进行传播
- 其主要流程如下:

20191107162028
获取电脑正在使用的盘符

20191107112039
- 获取到正在使用的盘符后都拼接到一个字符串中,通过获取字符串的长度来获取正在使用的盘符数量
- 判断盘符数量,若小于1则陷入死循环,若大于1则依次判断是否存在A盘和B盘,若存在该字符串头指针++,继续判断盘符数量,最终目的即是让字符串头指指向”C”
- 若C盘存在对其进行感染,其实如果电脑不存在C盘,第三个盘是其他盘该函数也会进入并感染之,不过一般windows的系统盘符一般都是C
遍历C盘,感染指定类型的文件
此函数中主要感染的文件类型有exe、scr、pif、com,以及htm、html、asp、php、jsp对于这两种文件的处理方式不同
- 函数感染的主题流程如下,左侧为文件感染流程,主要是对不同类型的文件有不同的处理方式,右侧为文件夹遍历流程,主要是会过滤掉一些文件夹不做感染

20191107154208
文件夹过滤
- 文件夹方面处理主要是获取当前目录名称,并与需要过滤的文件夹名称进行对比,相同则结束该函数

20191107154547
exe scr pif com文件感染
- 对于这四种文件采用的是同一个函数进行感染

20191107154615
- 该函数主要作用是复制,将被感染问价处理为如下格式

20191107154856
htm、html、asp、php、jsp文件感染
- 该部分主要在文件末尾追加一个网址

20191107155228
删除GHO系统备份文件
- GHO文件即为ghost的镜像文件,可通过OneKey进行还原和备份,也可直接通过光盘优化启动,进入ghost11进行一键还原
- 在感染函数的开头就删除了GHO系统备份文件20191107155554
ini配置文件

20191107160756
设置定时器在磁盘根目录生成文件
- 该函数主要生成setup.exe和autorun.inf两个文件

20191107162348
- Autorun.inf是电脑使用中比较常见的文件之一 ,其作用是允许在双击磁盘时自动运行指定的某个文件
- 该函数将正在运行的程序自身拷贝到setup.exe,并写入Autorun.inf使得用户双击C盘时自动运行该病毒20191107162740
局域网感染
- 该函数创建线程尝试连接139和445两个端口,通过共享内存的方式来感染局域网中的其他机器

20191107161157
主模块三源码分析
- 主模块三创建了四个定时器,分别用来结束杀软,解密url 下载并运行,删除共享,停止并删除杀软服务

20191107163119
结束杀软
- 该定时器主要是关闭一些杀毒软件的进程以及创建并设置注册表键值(自启动以及不显示隐藏文件)
关闭杀软进程
- 关闭杀软是通过POSTMESSAGE的方式来完成的

20191107163818
- 主要关闭了以下杀软

20191107164040
创建并设置注册表键值
- 主要调用的API为RegCreateKeyExA(创建注册表)和RegSetValueExA(设置键值)
解密url 下载并运行
- 该定时器主要调用的API为RLDownloadToFileA(下载url),WinExec(创建线程并运行)

20191107164459
删除共享
- 该定时器使用了net share命令来停止C盘的共享20191107164717
停止并删除杀软服务
- 该定时器主要调用CloseServiceHandle和DeleteService两个API来停止并删除杀软服务20191107165432
至此整个熊猫烧香的逆向工程已经分析完了,结合上一篇熊猫烧香行为分析我们大致可以了解熊猫烧香的行为以及工作原理,在后期我们可能需要想办法去防御这种病毒的攻击,逆向才刚刚入门,冲冲冲!