-
-
[分享] 恶意代码分析之熊猫烧香
-
发表于: 2021-12-29 19:52 5949
-
0x00 前言
1 | 最近刚学习了脱壳和恶意代码相关知识,现在分析一个经典病毒来练练手,本文章记录了我咋分析时的想法和踩得坑,可能有一些冗余的操作,新人见谅。 |
0x01.样本详情
1.1 样本信息
该病毒能够自动传播、自动感染系统中的exe、com、pif、src、asp、html等文件,它会中止大部分杀毒软件的进程,并删除后缀名为gho的文件,使用户系统备份文件丢失。最显眼的就是它能将界面上所有exe文件全都变为一个熊猫举着三支香的图标。
1.2 测试环境及工具
测试环境:Windows 7
测试工具:Process Explorer、火绒剑、PEID、ExeInfo
OD、IDA、ImportREC
1.3 分析目标
通过观察病毒的行为找到行为的关键恶意代码,并完成查杀,编写文档报告。
0x02.具体行为分析
2.1 主要行为
2.1.1 恶意程序对用户造成的危害
首先中病毒的机器上的可执行文件全部无法使用,双击打开后会复制出来一个新的文件:
尝试打开这个新的文件,发现直接报错:
重启一下机器,发现病毒依然生效,可以认为该病毒感染了系统注册表,将自己加入了自启项中。使用ARK工具,这里打开PCHunter,查看可疑进程,发现了一个熊猫图标:
查看该进程的属性,可以找到它的路径和自启动位置,于是我们可以定位到该文件的具体路径和注册表信息,可是此时注册表已经无法打开了,这里先记录一下该病毒的进程路径信息,注册表一闪而过,无法截图:
这里由于火绒剑已经无法正常使用了,于是使用Process Monitor来监视这个病毒的行为,看看它到底有什么行为:
可以发现它的行为种类还是非常多的,涵盖了文件操作、注册表操作、进程线程创建和退出、网络行为。
这个程序一开始就注册并创建了自启动的注册表项,然后修改了SHOWALL这一项,那么我们就无法看到所有的文件了,这能很好的隐藏自己。然后前期都是查询并修改虚拟机的一些配置文件,这里不过多分析这部分的行为。
然后这里它就想建立TCP连接,这里我的虚拟机没有连接网络,所以无法连接也就无法向局域网传播。这里便可以看出它具有扫描局域网并传播的行为。
继续往下观察,找到有关释放文件的操作:
这个autorun.inf的作用就是用户在双击磁盘的时候会让某个程序自动执行,即也可以达到开机自启的功能:
直接输入路径打开该文件查看其内容:
还有一点就是该病毒不停地创建Desktop.ini文件在各种路径下
我们打开这个路径发现了目标文件(由于之前被隐藏了,需要打开隐藏的文件和文件夹):
无法判定是什么文件有什么用,可能是缓存文件用于建立通讯:
并且基本可以确定在每一个目录下都有一个隐藏的desktop.ini的配置文件用于标记。
通过监视其行为发现该病毒的行为循环如下:
1、 创建自启动项、关闭文件显示注册表项====》隐藏
2、 遍历目录,在所有目录下创建desktop.ini文件
3、 释放可执行文件,并复制到C:\Windows\System32\drivers\目录下
4、 将setup.ex复制到C:\目录下
5、 启动spo0lsv.exe程序(主程序)
6、 创建autorun.inf文件实现指定可启动文件为C:\setup.exe
7、 检查并删除一些杀软的注册表项
8、 修改IE浏览器的代理设置和缓存文件
9、 建立TCP通讯访问外部网络
尝试删除文件和修改启动项,看病毒会不会继续生效
重启之后,spo0lsv.exe进程没有创建,但是系统注册表依旧无法被更改,也就是C:\autorun.inf文件所指向的setup.exe还是启动了且隐藏了其进程,用户无法察觉,然后点击任意一个被感染的图标,spo0lsv.exe进程就又回来了。
2.2 恶意代码分析
2.1 查看样本文件基本信息
载入LordPE,查看区段信息,发现区段头是空的,应该是加壳(加密过):
使用ExeInfo查看发现有FSG的壳:
使用Die查看,发现可能是Borland Delphi编写,这样我们就可以扫描特征码来定位OEP然后脱壳分析了:
打开OD动态调试,直接搜索GetModuleHandleA这个函数,这函数开始打上一个硬件执行断点,观察函数栈的调用关系,找到主模调用,向上找就是OEP了
然后我们在这里查看一下IAT是否正常(指是否被加密):
往下翻一点发现在IAT中间有一些7FFFFFFF字段截断,这会让我们dump出来的程序不正常,我们要走动将他改成0
到此已经成功将病毒脱壳了,接下来就可以通OD和IDA动静结合来具体看看代码是怎么样的了。
2.2 恶意程序的代码分析片段
打开IDA载入样本程序:
为了更方便的分析,这里可以添加一个Signature,由于之前已经知道这个程序是由Delphi编写的,而IDA默认的编译器和库文件都是C++相关的,我们就可以直接搜索并载入它,改成Delphi的库函数:
我们再次回到伪代码窗口,随便跳转至一个目的地址然后再ESC返回,发现已经识别出了Delphi的库函数:
继续看看,把没有命名的函数找出来,点进去再退出来看看能不能命名
OD载入样本看看405250这个函数是干什么的:
首先定位到调用此函数的地方,然后观察EAX作为返回值有什么变化:
由于Delphi是使用的fastcall,前两个参数是用的寄存器,传入了两个字符串,第三个参数传入了一个地址(指针),也就是ECX所指向的一块内存,调用函数之后EAX返回0,ECX作为传出参数返回了一个字符串。
通过观察可以发现这个函数应该是字符串的转化功能,返回值为0,传出参数为转化之后的字符串地址。
继续往下看:
首先看第一个:
在这个if进来的时候有两个sub_405FC4不知道是干啥的,跟进看看:
咋一看还挺复杂的,不知道从哪里看起,这里我们就看入口参数和函数返回值。入口参数就一个a1,就是传进来的字符串,也就是样本名,传出参数是v1:
先看入口参数a1的变化把:
那么这个目标进程会是什么呢?是别的进程还是他自己呢?我们打开Process Explorer看看:
先把断点下在调用这个函数的地方准备好,然后F8直接步过,可惜无事发生,并不知道关了哪个进程,再结合这个函数的参数是spo0lsv.exe,我们把样本名改成这个再试试,难不成就是关闭他自己?
F8走:
然后继续下一个函数sub_4053AC,我们还是先进去看看:
带着这个分析去OD看看具体干了什么:
将目光聚焦在寄存器上!
堆栈跟随,EAX所指向的内存ss:[12FB70]现在是0,函数被调用之后变成了系统路径,所以这个函数的作用是获取系统路径!
这个函数分析的差不多了,可以退出,看下一个函数:
先进去第一个,sub_40A5B0:
这个简单就是创建线程
然后第三个参数应该是线程回调函数,我们看看他是干什么的:
先看看unknown_libname_70是干什么的把:
跟字符串有关的
接着看77:
接着看这个,终于有个熟悉的函数了:
继续往下看,看到一大波系统目录:
这里应该就是将desktop,ini文件创建在各个文件夹下的操作了
然后遍历文件,判断是否有列出来的这几个文件
总结一下,这个函数就是遍历文件夹,在每一个目录下创建desktop.ini文件
在进入第二个函数分析:
进入时间触发事件看看定时完成了什么事件:
一进来就能看见这两个文件,这个函数应该和它们有关
所以第二个函数是用来计时写入autorun.inf文件来设置setup.exe文件的
最后就是第三个函数了:
很显然这个函数是用来网络通讯的。至此这三个函数都分析了一下
回到最外层函数,还剩一个,继续看:
一个一个去看
第一个计时器
创建、修改注册表的启动项和文件隐藏项
第二个计时器
第三个计时器
这个计时器里又设置了两个计时器
第一个:下载并执行文件
第二个:执行cmd命令
第四个计时器
又套了一层计时器:
看到了一些杀毒软件的字符串还有注册表的键名:
第五个计时器
主要是C4EC和C5E0这两个函数
C4EC这个函数:
C5E0这个函数:
所以这个函数跟字符串转化和打开网页读取数据有关
第六个计数器:
直接就是两个DownloadFile,这里果断判定下载恶意代码或者文件
至此,这六个计时器大致分析完毕
定位关键函数
看了这么多行为函数,那么这个病毒是怎么感染exe文件的呢?这个还需要定位分析一下:
通过前面的静态分析可以发现该病毒会创建进程不停的新建desktop.ini、autorun.inf、setup.exe文件等操作,所以可以从进程创建和创建文件的操作为切入点,下断点去看有什么行为。
然后我们重新运行程序看程序断下来的地方,先断在了CreateProcessA这个函数这里,刚好是创建病毒自己这个进程,所以我们要查看堆栈,看是哪里调用了创建进程函数,然后不让他创建,直接在本进程完成感染
第二个直接排除掉,这个是在消息循环里最开始的调用
只剩下一个了,我们跳转到目标地址然后上下看看
这里是拷贝文件并执行恶意代码的地方
可是到现在还是无法判定哪个跳转是关键跳,所以只能下断点去尝试,如果创建进程后,该程序后续的CreateFileA就无法断下来如果没有创建进程,那么由本进程完成文件创建工作,也就会断下,这里我们先将JNZ的条件改掉,让它跳走,看看会不会在CreateFileA函数断下来:
继续运行,发现在CreateFileA断下来了,此时正在创建desktop.ini文件,我们等到它创建exe文件的时候看看它是怎么感染的
- [ ] 明日继续分析~
赞赏
- [分享]CVE-2012-1889 暴雷漏洞分析与利用小记 22028
- [讨论][讨论]记录Wannacry病毒的分析 12819
- [分享]记一次lpk劫持病毒分析 8718
- [分享] 恶意代码分析之熊猫烧香 5950
- [分享]关于UEH异常处理的踩坑记录 7488