一、概述
作者:longaotian
时间:2022-4-27
样本来源:www.52pojie.cn
下载:https://1drv.ms/u/s!ArU76A-w0YNK7H9hL83nL87-4gtn?e=DFq7bf
MD5:512301c535c88255c9a252fdf70b7a03
本文档讲述关于熊猫烧香病毒的行为、技术细节
二、正文
通过之前的分析发现有壳,开始动态分析,进入主模块发现是直接popad的,无法通过esp定律,只能通过单步了

代码通过拷贝数据再进行解密,拿到了地址可以进行调用LoadLibraryA,通过栈传递获得kernel32.dll的模块句柄

后面程序通过LoadLibraryA获取使用的API地址再进行修复ITA

发现程序有连个分支分别下断点看谁先来

发现里面的jmp先来,过去后发现里面的数据发生了变化重新分析后定位到OEP

直接DUMP出来准备开始静态分析,用OD再次打开发现退出时触发了异常,再进去看看发现API有问题

搞了搞换了换一种重建输入表方式就行了(应该没问题吧😀)

不放行用ImportREC看一下,果然没识别出来

还得自己再看看,手动修复

现在开始分析
首先发现了大量的初始化操作和字符串的操作

这里做了两个比较,比较失败就退出执行了

下面只有三个函数和一个消息处理

那就是这三个函数干活了,不知道上面判断了啥,动态调下


所以sub_405250就是对字符串进行了处理,处理结果在做校验,校验结果失败的话就推出程序
剩下就是分析最后的三个干活的函数了
首先第一个函数

@System@ParamStr : 获取程序执行路径和文件名

@System@@LStrCat$qqrv System::linkproc LStrCat(void) :字符串拼接


动态调试后确认如果没有ini文件就从下面的分支走
猜测sub_407650失败,调了后好像是对字符做了啥处理



总结来说这个函数就是判断是否有运行着的病毒有就给他结束掉再拷贝自身到系统目录中并运行,
写的是systen32其实生成和跑的时候都在wow64里,为系统为了区分32位和64位,所以访问system32时会将路径重定向到syswow64。

第一个函数就结束了,没干啥事,所以还有另外的分支




里面生成了一个bat并运行了就是删除自身
还有一个分支得跑起来,所以就用OD来查看

跟了会没啥营养直接到下一个函数sub_40D18C
里面有三个函数


线程里有营养的是sub_409348篇幅原因说明这个函数在操作字符串好像是往ini文件里写,好多的重复操作有营养的是sub_407F00



找了半天原来是没识别出来

此处是将文件读到内存中修改属性再复制文件到路径并添加一点数据 “WhBoy + 原文件名 + .exe + 02 + 文件大小 + 01”

现在到第二个函数

是个设置定时器的

回调是检查是否有setup.exe和ini文件没有则创建
接下来第三个函数

这个函数创建线程并进行网络连接

剩下就是最后一个主体函数了

由于里面函数太对了,简单说下



三、备注
这个病毒的代码是别的编译器和语言写的,代码识别的有点乱七八糟,总的来说提取特征就是文件最后为字符串"WhBoy + 原文件名 + .exe + 02 + 文件大小 + 01"。
Comments | NOTHING