01-样本概况
1.1-样本信息
-
基本信息
文件: C:\Users\15pb-win7\Desktop\xiongmao.exe
大小: 30001 bytes
修改时间: 2018年7月14日, 8:40:21
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C
-
病毒行为:
1.在系统目录下生成病毒程序并执行
2.修改注册表
3.添加启动项
4.目录下产生Desktop_ini文件
5.关闭网络共享
6.存在网络连接
7.有加密的流程传输
8.感染文件
1.2-测试环境
系统环境:
- Windows10-64位
- Windows7-32位
工具:
- 010Editor:查看感染标记
- OllyDebug:动态调试
- IDA:静态调试
- PCHunter:进程查看及结束
- 火绒剑:观察病毒行为
- Hash工具:计算病毒文件哈希值
- WSExplorer:查看病毒程序网络连接
- VS 2017:编写专杀工具
1.3-分析目标
-
提取病毒样本
-
分析病毒行为
-
分析病毒代码细节,获取其执行流程
-
提取病毒特征、手动查杀及编写专杀工具
02-具体行为分析
2.1-文件操作
病毒创建了大量文件,并且会修改/感染正常的程序
2.2-注册表操作
创建了新的注册表项,并且通过修改注册表,实现病毒的自启动
2.3-进程操作
枚举进程来查看是否有杀毒软件,创建进程来运行自己产生的恶意程序spo、打开设备以便感染U盘等硬件设备
2.4-网络操作
存在大量http请求可以实施DDos攻击,也可以发送数据包,以便上传私密信息到服务器,存在网络连接,以便用户从服务器下载木马等恶意程序
2.5-行为监控
可以修改注册表来实现自启动项,会感染PE文件,进行自我删除和复制
2.6-执行监控
其通过cmd命令删除了网络共享
03-恶意代码分析
3.1-脱壳
是否有壳:PEiD查看xiongmao.exe存在FSG 2.0的壳
x32Debug中打开xiongmao,单步跟踪直到jmp dword ptr [ebx + 0xc]
,其跳往真实OEP处,利用Scylla插件进行脱壳,最后保存为xiongmao_dump_SCY.exe
PEiD深度扫描xiongmao_dump_SCY.exe显示没壳,再查看其输入表也正常,说明脱壳成功
3.2-整体流程
IDA:Shift+F5 签名窗口中,添加delphi特征库,应用后可识别大量库函数,根据伪代码推测功能
动态调试,看sub_405250功能,call之前,eax中传参是一堆杂乱的中文字符,call之后,将局部变量ebp-0x14中的值赋值给edx,此时是正常的中文,随后进行字符串的比较,因此可判定其为字符串解密函数,暂记做DecodeString,并在IDA中修改(快捷键n)
经过IDA和OD的结合分析,最终可得到整体流程图,如下:
3.3-代码块sub-40819c
IDA:进入819c函数内部,某处出现了样本文件名,应该是敏感部分,要重点关注;此处有两个sub-xxx函数不知用途
IDA:进入sub-4053ac内部,有一个获取系统目录的库函数,因此可初步判定其功能
OD:验证上述推测是否成立,ctrl+g到4053a4处,内部下断运行至此,从堆栈中找到调用位置,取消内部断点调用位置下断重新运行,单步测试;运行后,将局部变量压栈,可见其就是系统目录,再与后面的子目录和文件名拼接,得到最终地址;推测正确,因此IDA中将其命名为GetSysDir以作标示
综上,本函数功能:复制自身xiongmao.exe到系统目录下并重命名为spo0lsv.exe,然后执行
3.4-代码块sub-40d18c
-
双击进入,内部有三个函数:40a5b0、40c374、40bacc
-
进入40a5b0:创建线程,其线程回调函数为40a48c
再进入40a48c:while循环执行409448
再进入409448,发现'desktop_.ini'字符串,也有获取本地时间的行为,联想病毒在每个目录下创建ini且内容为日期的行为,推测此处便是代码执行处
进入40c374,设置一个定时器
进入timerfunc定时器回调函数,应该就是创建setup.exe文件
进入40bacc,创建一个线程执行40ba8c
进入40ba8c,后再进入40b864,发现是网络连接相关
综上,根据病毒行为以及代码中出现的敏感字符串、关键函数等,大致可了解sub-40d18c内部有三个函数,功能分别是:新建线程来创建desktop_.ini配置文件、设置计时器来创建setup.exe文件、创建线程进行网络连接
3.5-代码块sub-40d088
进入函数,有6个计时器,分别执行6个函数,依次查看
40cee4,添加启动项、修改注册表
40d040,访问网站并获取系统目录,推测是从服务器下载恶意程序
40d048,内部有两个函数,第一个同40d040,第二个执行cmd命令关闭网络共享
407430,关闭杀毒软件服务、删除杀毒软件启动项(从字符串可见为常见的杀软)
40cc4c,打开URL,访问网站获取内容
-
40c728,类似40d040,都是下载恶意代码
-
综上,sub-40d088内部这几个函数分别实现了:添加启动项、修改注册表、下载恶意代码、访问网站获取内容、关闭杀软服务、删除杀软启动项、关闭网络共享
3.6-启动过程分析
ini配置文件的操作:获取当前路径,并将“Desktop_.ini”拼接到当前路径中,同时检查此文件是否存在,若文件存在,则删除
ini配置文件操作完成后,进入新的流程:为了复制病毒信息以感染其他文件,故将病毒文件信息读取到内存中;同时也设置了标记信息
随后跳往4082DB处:进行了标记检查工作,来判断病毒程序是否被多次运行
随后代码中出现“spo0lcv.exe”字符串:找到运行的进程“spo0lsv.exe”并终止;病毒第一次执行时,需要将自身复制一份到系统目录下,并伪装成“spo0lsv.exe”启动;
字符串比较后,若当前病毒文件已经复制到了系统目录下且被伪造成了“spo0lsv.exe”,则会跳转到40845E处:释放之前申请存放病毒文件信息的内存(OD调试时,可手动修改JZ条件,使之完成跳转)
随之跳往 408741:获取标记并进行检查,当标记==1时,会进入 408477来进行进一步检查(此代码块只有被感染的程序才会执行,OD打开被感染文件进行调试
3.7-感染过程分析
内部三个子模块:前二本地感染,第三通过网络
创建感染线程:找到线程回调函数
感染线程的线程回调函数:遍历驱动器盘符的数目,进入到驱动器中,遍历所有可感染文件以进行病毒复制
_FindAndInfectFile:遍历驱动器下的文件信息,将文件与文件夹进行了分类,排除了特殊文件夹;在判断是否为特殊文件夹的过程中,都是以大写形式进行对比的,以防止因大小写不同而造成错误;在这可跳到处理文件的地方
_FindAndInfectFile:感染前的检查工作,ini中保存的时间与刚刚获取的时间进行比较,来判断是否已经被感染
如4中,若当前获取到的是文件时,开始处理文件:对文件进行检查,只要后缀为“GHO”,就判定为ghost备份文件,直接删除,防止用户还原系统(真tm的坏)
一旦删除了系统的备份文件,病毒就开始肆意感染:大致分为两种,一种是本地可执行文件(如exe为后缀的),另一种是Web网页文件(如html为后缀的)
感染exe等本地执行文件,_InfectFile:首先将目标文件读取到内存中并获取文件名及其大小、然后将自身文件复制到目标文件前并追加目标程序的原始文件、最后添加感染标记,结束感染过程
被感染文件 : 病毒文件 + 原文件 + 感染标识,标识如下
3.8-自我保护行为
-
若找到标记字符,则会跳转到408477,此代码块只有被感染的程序才会执行,现IDA中打开原病毒静态分析(也可OD中打开被感染程序动态分析
-
代码段408477:从被感染文件中分离提取出原始文件(由于感染文件时写入了标记信息,根据标记可得到原始文件),执行后,在被感染文件所在目录下释放出其原始文件
代码段 408584:被感染文件的主要工作是维护进程中伪造的病毒程序spo0lsv. exe,若spo被删除,则会由被感染的程序再次生成(春风吹又生,除非删除所有被感染程序)
04-解决方案
4.1-病毒特征
病毒文件的哈希值如下:
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C
被感染文件中,文件最后有感染表示标识:WhBoy + 原文件名 + exe + + ascii码为1的字符 + 随机数+ ascii码为2的字符
4.2-手工查杀
-
cmd命令行下taskkill杀掉进程,或者直接利用PCHunter等工具结束进程
-
在系统目录下删除病毒文件:C:\WINDOWS\system32\drivers\spo0lsv.exe
-
删除启动项:Windows+R,键入msconfig打开服务配置窗口,切换启动窗口,取消启动项,并且记录下注册表位置
4.修改注册表:Windows+R,键入regedit打开注册表窗口,找到相应位置,并删除记录
4.3-专杀工具
效果图
GitHub地址:https://github.com/Ry1ynn/AntiPanda