首页
社区
课程
招聘
[原创]熊猫烧香浅析
2022-3-30 15:07 5296

[原创]熊猫烧香浅析

2022-3-30 15:07
5296

简介

“熊猫烧香”,是由李俊制作的一款电脑病毒,具有自动传播、自动感染的特征。不但能感染系统中exe,src,html,asp等文件,它还能终止大量的反病毒软件进程并且会删除扩展名为gho的文件。被感染的用户系统中所有exe可执行文件全部被改成熊猫举着三根香的模样。

工具

PEID

万能脱壳工具

OD

IDA

string

ProcessExplorer和ProcessMonitor

火绒剑

简单静态分析

1、查壳,使用PEiD或者exeinfope等工具都行。查出壳为FSG。

2、脱壳,可以尝试使用OD进行手动脱壳。这里直接拿出脱壳工具脱

直接将熊猫烧香丢入脱壳工具,点击脱壳即可

3、提取样本中的ascii和Unicode字符串

使用String提取出大量的api函数。例如sleep,Writefile等一些可疑函数。

命令:strings.exe 文件名

搜索结果:


4、分析导入表

PE文件中导入表中包含了程序用来与其他程序、代码等进行交互的函数。通过分析导入表中导入函数,有助于理解该程序的目的以及可能的行为操作。

这里使用PEID查看其导入函数。打开之后可以看到该样本引用了多个动态链接库。

具体如下:

具体介绍一下相关动态链接库。

URLMON.DLL:urlmon.dll是微软Microsoft对象链接和嵌入相关模块。
netapi32.dll:netapi32.dll是Windows网络应用程序接口,用于支持访问微软网络。
advapi.dll:提供对核心windows组件的访问,包括服务管理器、注册表等等。
wininet.dll:包含更高层次的网络函数。例如FTP、HTTP、NTP等协议。
wsock32.dll:一个联网DLL,用于连接网络或者是执行网络相关的任务。
user32.dll:包含用户界面组件,例如按钮、控制和响应用户操作的组件
mpr.dll:Windws操作系统网络通讯相关模块
kernel32.dll:包含核心系统功能,比如访问和操作内存、文件和硬件等等。
oleau32.dll:oleaut32.dll是对象链接与嵌入OLE相关文件

介绍完动态链接库之后,继续看一下几个重要链接库中的导入函数。

kernel32.dll链接库

函数简述:

WriteFile:将数据写入文件
WinExec:用来执行其它程序
TerminateProcess:结束进程
sleep:休眠时间
OpenProcess:打开进程
LoadLibraryA:载入指定的动态链接库,并将它映射到当前进程使用的地址空间。
一旦载入,即可访问库内保存的资源
SetFilePointer:在一个文件中设置当前的读写位置
SetFileAttributesA:设置文件或目录的属性。


advapi.dll动态链接库

函数简述:

OpenServiceA:打开一个已存在的服务

DeleteService:从服务控制管理数据库中删除指定的服务

ControlService:向指定的服务器发送一个控制码

CloseServiceHandle:关闭由OpenSCManager返回的服务控制管理程序句柄,
或由OpenService或CreateService返回的服务对象句柄 

OpenSCManager:在指定机器上创建与服务控制管理程序的联系,并打开指定的数据库


wininet.dll动态链接库

函数简述:

InternetGetConnectedState:判断网络是否连接

InternetOpenUrl:连接到一个网络服务器上并且从服务器上读取数据。
InternetOpenUrl能对FTP,Gopher或HTTP协议起作用。

InternetReadFile:用来读取文件


5、分析其行为以及关注其对注册表的改变。

先打开Regshot工具点击1st shot拍下快照。

接着打开ProcessExplorer、ProcessMonitor用来观察运行样本程序时,所发送的变化。

现在运行样本。

经过观察,在刚刚打开的时候不会看见什么肉眼的变化。只能看见样本程序的进程已经在运行了。但是在经过一段时间,就会在ProcessExplorer上出现一些一闪而过的“奇怪进程”(cmd.exe等)。从这可以推断熊猫烧香在进行一些危险操作。

但是查看系统的其它程序可以发现已经被变成了“熊猫烧香的小跟班”。说明了其已经进程了某些操作。

由于ProcessExplorer并不能很方便的帮助观察。因此我们使用ProcessMonitor来进行观察。同时由于系统中会有很多的进程会耽误其分析。可以在其中设置过滤条件。操作如下:

点击Fileter之后出现弹框,接下在里面选中Process Name选项,并且输入样本的名称点击Ok。

进行过滤设置之后,在ProcessMonitor中就只看见熊猫烧香的操作情况。

可以观察到它加载文件、读取文件、创建文件以及对注册表操作的行为

本来想通过Regshot来进行注册对比的,结果发现忽略的一个事情。就是Regshot也成为“小跟班”,叛变了。(有大佬知道其他不影响的方法,请指教一下)

对注册表进行了操作。

6、使用火绒剑查看一下样本程序对文件进行了那一些操作

可以看见已经创建了众多的Desktop.ini文件,里面的内容为当前日期。(需要注意的是,要想查看到此文件需要在文件夹选项取消掉隐藏受保护的操作系统文件)

在进程树中可以发现衍生“cmd.exe”

对某些地址进行了访问

7、OD与IDA结合

7.1、分析其对杀毒软件的操作。

OD加载样本程序,搜索字符串。发现某一区域存在大量类似于杀毒软件等字符串(例如防火墙、毒霸、瑞星等)

进入防火墙所处的位置,发现下面区域有类似的代码结构,并且在将字符串赋给eax之后,都会调用xiongmao.004041B4函数。如下

区域代码如下:

mov eax,xiongmao.004069B8               ;  ASCII "防火墙"
call xiongmao.004041B4
test eax,eax
je short xiongmao.0040622C

分析一下此区域代码块:

mov eax,xiongmao.004069B8指令是将字符串“防火墙”赋值给eax。

call xiongmao.004041B4指令是调用xiongmao.004041B4函数,此时不明白此函数的作用,暂时先放下。

test eax,eax  指令的作用可以理解为判断eax的值是否为空。若eax为零,设置ZF零标志为1

je short xiongmao.0040622C 指令则是在前面判断为0时(即ZF=1时)跳转到0040622C 处

使用OD依次单步执行四条指令,当执行完call xiongmao.004041B4指令后,EAX的值由“防火墙”变为0,随后执行完后面两条指令,ZF也被标志成1。最后满足je指令跳转条件,程序运行至0040622C处。从这个执行流程可以推测 xiongmao.004041B4函数是用来判断电脑上是否存在防火墙等程序,不存在则将eax重置为0,如图

使用IDA查看sub_004041B4(xiongmao.0040622C)函数。从图中可以看出,一开始就对eax进行判断,为0则直接跳转到最后retn框处。不为0则跳转到一下框对eax进行比较。在接下来流程中(其中使用repne scasb来遍历字符串),可以看出在标志的两处将eax重置为0,随后跳转出函数。如图

7.2、分析cmd.exe的操作

再次使用OD搜索字符串,发现cmd.exe /c net share 和cmd.exe /c net share admin$ /del /y。

跳转到此处。可以看到将前面两个字符串压入,随后使用winExec将其执行。实现删除C盘的网络共享和取消系统根目录的共享

7.3、分析Desktop_.ini文件的创建

再度搜索字符串,发现whboy这个奇怪字符串

一路单步执行,当执行到0040D627处。跳转到40819C处

在40819C地址下面发现Desktop_.ini字符。

然后使用IDA查看sub_40819C函数。发现 lpFileName、bFailIfExists、lpNewFileName、lpExistingFileName几个字符串。

其中bFailIfExists、lpNewFileName、lpExistingFileName是CopyFile函数中的参数。具体作用如下。lpFileName是CreateFile 函数中的参数,主要用来指向文件名。所以,结合上面开头静态分析的内容可以推测sub_40819C函数是用来创建、复制Desktop_.ini文件的。

copyfile(   

           lpexistingfilename, //源文件路径   

           lpnewfilename,     //新文件路径   

           bfailifexists      //为true的话,如果新文件已存在,
                 则返回false;为false的话,如果新文件已存在,会将原文件覆盖。
            );  

函数成功返回true,失败返回false;

7.4、分析如何对程序进行感染的

去搜索字符串当中是否存在exe等一些被改变程序的字符串

这里可以看见EXE、SCR、COM等众多字符串

到达EXE字符串的位置之后,可以看见在将EXE等字符串赋给eax之后都会调用0040521C、00404018、00403F18、00407F00几个函数。那么接下来就是对这四个函数进行分析,从而达到了解此处是什么目的的需求。

sub_40521C函数

使用IDA直接跳转到sub_40521C函数查看,从结构上来看并未发现有关感染文件的操作函数。

内部出现了j_CharUpperBuffA函数,此函数可能是与CharUpperBuffA函数作用一样,主要用于字符串的大小写转换。

sub_404018函数并未看出什么,推测可能是进行条件判断。先跳过,去分析剩下的两个函数。如果没有收获,再回来使用OD进行动态分析。

sub_403F18函数与sub_404018函数一样,无法直观的判断出其作用。跳过。

sub_407F00函数。

在这个函数看见了与文件操作有关的参数。

00407F00函数上一个地址下断点,运行到此处。

单步执行至00407F75处,发现右侧寄存器窗口EDX出现了一个熟悉的字符串“hrsword.exe”。结合前面静态分析时hrsword.exe被修改成熊猫烧香图标。可以推断此函数内部应该是用来感染程序或者是将后续要感染的文件名字加入到某处以待后续处理。


总结:

本次分析主要用来实践一下简单的病毒分析流程、一些分析工具的使用以及加深动态分析与静态分析(OD与IDA结合利用)相结合的使用。如有错误,还请大佬指点。

熊猫烧香病毒的主要行为特征:

1、检测与关闭杀毒软件

2、感染其他exe程序并将其图标更改为熊猫图标

3、访问外部网址

4、对文件进行操作(创建文件与复制文件)

5、修改注册表



[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞3
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回