首页
社区
课程
招聘
[原创]“熊猫烧香”病毒分析
发表于: 2020-1-13 16:00 7571

[原创]“熊猫烧香”病毒分析

2020-1-13 16:00
7571

基本信息

病毒行为:

1.在系统目录下生成病毒程序并执行

2.修改注册表

3.添加启动项

4.目录下产生Desktop_ini文件

5.关闭网络共享

6.存在网络连接

7.有加密的流程传输

8.感染文件

系统环境:

工具:

提取病毒样本

分析病毒行为

分析病毒代码细节,获取其执行流程

提取病毒特征、手动查杀及编写专杀工具

病毒创建了大量文件,并且会修改/感染正常的程序

image-20200113082906778

创建了新的注册表项,并且通过修改注册表,实现病毒的自启动

image-20200113082918792

img

枚举进程来查看是否有杀毒软件,创建进程来运行自己产生的恶意程序spo、打开设备以便感染U盘等硬件设备

image-20200113082930916

存在大量http请求可以实施DDos攻击,也可以发送数据包,以便上传私密信息到服务器,存在网络连接,以便用户从服务器下载木马等恶意程序

image-20200113082943094

可以修改注册表来实现自启动项,会感染PE文件,进行自我删除和复制

img

img

其通过cmd命令删除了网络共享

image-20200113083017929

是否有壳:PEiD查看xiongmao.exe存在FSG 2.0的壳

img

x32Debug中打开xiongmao,单步跟踪直到jmp dword ptr [ebx + 0xc],其跳往真实OEP处,利用Scylla插件进行脱壳,最后保存为xiongmao_dump_SCY.exe

image-20200113083033910

PEiD深度扫描xiongmao_dump_SCY.exe显示没壳,再查看其输入表也正常,说明脱壳成功

IDA:Shift+F5 签名窗口中,添加delphi特征库,应用后可识别大量库函数,根据伪代码推测功能

image-20200113083053799

动态调试,看sub_405250功能,call之前,eax中传参是一堆杂乱的中文字符,call之后,将局部变量ebp-0x14中的值赋值给edx,此时是正常的中文,随后进行字符串的比较,因此可判定其为字符串解密函数,暂记做DecodeString,并在IDA中修改(快捷键n)

image-20200113083120144

经过IDA和OD的结合分析,最终可得到整体流程图,如下:

image-20200113083132668

IDA:进入819c函数内部,某处出现了样本文件名,应该是敏感部分,要重点关注;此处有两个sub-xxx函数不知用途

image-20200113083146999

IDA:进入sub-4053ac内部,有一个获取系统目录的库函数,因此可初步判定其功能

image-20200113083159177

OD:验证上述推测是否成立,ctrl+g到4053a4处,内部下断运行至此,从堆栈中找到调用位置,取消内部断点调用位置下断重新运行,单步测试;运行后,将局部变量压栈,可见其就是系统目录,再与后面的子目录和文件名拼接,得到最终地址;推测正确,因此IDA中将其命名为GetSysDir以作标示

image-20200113083212322

综上,本函数功能:复制自身xiongmao.exe到系统目录下并重命名为spo0lsv.exe,然后执行

image-20200113083224716

双击进入,内部有三个函数:40a5b0、40c374、40bacc

进入40a5b0:创建线程,其线程回调函数为40a48c

image-20191126141107618

再进入40a48c:while循环执行409448

image-20191126142958236

再进入409448,发现'desktop_.ini'字符串,也有获取本地时间的行为,联想病毒在每个目录下创建ini且内容为日期的行为,推测此处便是代码执行处

image-20191126143227261

进入40c374,设置一个定时器

image-20191126143539809

进入timerfunc定时器回调函数,应该就是创建setup.exe文件

image-20191126145205001

进入40bacc,创建一个线程执行40ba8c

进入40ba8c,后再进入40b864,发现是网络连接相关

image-20191126145556993

综上,根据病毒行为以及代码中出现的敏感字符串、关键函数等,大致可了解sub-40d18c内部有三个函数,功能分别是:新建线程来创建desktop_.ini配置文件、设置计时器来创建setup.exe文件、创建线程进行网络连接

进入函数,有6个计时器,分别执行6个函数,依次查看

image-20191126150054902

40cee4,添加启动项、修改注册表

image-20191126154346012

40d040,访问网站并获取系统目录,推测是从服务器下载恶意程序

image-20191126163600580

40d048,内部有两个函数,第一个同40d040,第二个执行cmd命令关闭网络共享

image-20191126160004664

407430,关闭杀毒软件服务、删除杀毒软件启动项(从字符串可见为常见的杀软

image-20191126160530506

image-20191126160445800

image-20191126160729078

40cc4c,打开URL,访问网站获取内容

image-20191126162911158

40c728,类似40d040,都是下载恶意代码

综上,sub-40d088内部这几个函数分别实现了:添加启动项、修改注册表、下载恶意代码、访问网站获取内容、关闭杀软服务、删除杀软启动项、关闭网络共享

ini配置文件的操作:获取当前路径,并将“Desktop_.ini”拼接到当前路径中,同时检查此文件是否存在,若文件存在,则删除

image-20200113083258560

ini配置文件操作完成后,进入新的流程:为了复制病毒信息以感染其他文件,故将病毒文件信息读取到内存中;同时也设置了标记信息

image-20191128091045656

随后跳往4082DB处:进行了标记检查工作,来判断病毒程序是否被多次运行

image-20191128090924847

随后代码中出现“spo0lcv.exe”字符串:找到运行的进程“spo0lsv.exe”并终止;病毒第一次执行时,需要将自身复制一份到系统目录下,并伪装成“spo0lsv.exe”启动;

image-20200113083320628

字符串比较后,若当前病毒文件已经复制到了系统目录下且被伪造成了“spo0lsv.exe”,则会跳转到40845E处:释放之前申请存放病毒文件信息的内存(OD调试时,可手动修改JZ条件,使之完成跳转)

image-20191128101017016

随之跳往 408741:获取标记并进行检查,当标记==1时,会进入 408477来进行进一步检查(此代码块只有被感染的程序才会执行,OD打开被感染文件进行调试

image-20191128101935542

内部三个子模块:前二本地感染,第三通过网络

image-20191127145219156

创建感染线程:找到线程回调函数

image-20191127145152729

感染线程的线程回调函数:遍历驱动器盘符的数目,进入到驱动器中,遍历所有可感染文件以进行病毒复制

image-20191127151719814

_FindAndInfectFile:遍历驱动器下的文件信息,将文件与文件夹进行了分类,排除了特殊文件夹;在判断是否为特殊文件夹的过程中,都是以大写形式进行对比的,以防止因大小写不同而造成错误;在这可跳到处理文件的地方

image-20191127170811439

_FindAndInfectFile:感染前的检查工作,ini中保存的时间与刚刚获取的时间进行比较,来判断是否已经被感染

image-20200113083345505

如4中,若当前获取到的是文件时,开始处理文件:对文件进行检查,只要后缀为“GHO”,就判定为ghost备份文件,直接删除,防止用户还原系统(真tm的坏)

image-20191127172133510

一旦删除了系统的备份文件,病毒就开始肆意感染:大致分为两种,一种是本地可执行文件(如exe为后缀的),另一种是Web网页文件(如html为后缀的)

image-20191127193508763

image-20191127193912691

感染exe等本地执行文件,_InfectFile:首先将目标文件读取到内存中并获取文件名及其大小、然后将自身文件复制到目标文件前并追加目标程序的原始文件、最后添加感染标记,结束感染过程

image-20191127214435254

image-20191127214817563

被感染文件 : 病毒文件 + 原文件 + 感染标识,标识如下

image-20200113083407839

若找到标记字符,则会跳转到408477,此代码块只有被感染的程序才会执行,现IDA中打开原病毒静态分析(也可OD中打开被感染程序动态分析

代码段408477:从被感染文件中分离提取出原始文件(由于感染文件时写入了标记信息,根据标记可得到原始文件),执行后,在被感染文件所在目录下释放出其原始文件

image-20200113083433875

代码段 408584:被感染文件的主要工作是维护进程中伪造的病毒程序spo0lsv. exe,若spo被删除,则会由被感染的程序再次生成(春风吹又生,除非删除所有被感染程序)

image-20191128113200558

病毒文件的哈希值如下:

被感染文件中,文件最后有感染表示标识:WhBoy + 原文件名 + exe + + ascii码为1的字符 + 随机数+ ascii码为2的字符

image-20200113083415753

cmd命令行下taskkill杀掉进程,或者直接利用PCHunter等工具结束进程

在系统目录下删除病毒文件:C:\WINDOWS\system32\drivers\spo0lsv.exe

删除启动项:Windows+R,键入msconfig打开服务配置窗口,切换启动窗口,取消启动项,并且记录下注册表位置

img

img

修改注册表:Windows+R,键入regedit打开注册表窗口,找到相应位置,并删除记录

image-20200113083516026

效果图

image-20200113083529845

image-20200113083541900


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-2-16 14:41 被21Gun5编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 1556
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
图是不是太大了
2020-1-13 16:34
0
雪    币: 4540
活跃值: (1036)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
3
木羊 图是不是太大了
确实,可能是md的原因,我改一下,谢谢提醒
2020-1-13 17:00
0
雪    币: 4540
活跃值: (1036)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
关于图片太大的问题,本地Typora软件缩写图片没问题,但是其语法在这解析不了,各位多担待
2020-1-13 17:08
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
2020-1-19 18:34
0
雪    币: 1079
活跃值: (1420)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持,写的很好!
2020-2-11 09:32
0
游客
登录 | 注册 方可回帖
返回
//