熊猫烧香
1.样本概况
病毒名称:C:\Users\15PB\Desktop\spo0lsv.vir
大小: 30001 bytes
修改时间: 2018年7月14日, 8:40:21
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C
病毒行为:
Virus感染型病毒,FSG:压缩壳,特点是会修改IAT;
1.2 测试环境及工具
测试环境:Windows7 32位
测试工具:PCHunter32,火绒剑,OD,IDA 32,x32dbg
1.3 分析目标
分析恶意代码中的特征,分析病毒行为,编写工具查杀病毒
具体行为分析
网战分析样本
使用网站分析网络行为
分析恶意行为
virustotal 网站进行分析
使用腾讯哈勃分析
分析四部曲
1.提取样本,手工清理机器
2.行为分析,获取病毒行为
3.详细分析,找到行为的恶意代码
4.提出解决方案,提取特征给公司产品,完成查杀,编写文档报告,有条件编写专杀工具
提取样本
模拟真实场景,在虚拟机中,运行样本。
待病毒执行之后,删除样本,开始提取样本。
拿到U盘去现场,尽可能是只读的
需要观察的情况
1.使用ARK工具查看可疑进程
2.使用ARK工具查看启动项(注册表、计划任务等)
3.使用ARK工具查看驱动、服务等可疑项
4.使用ARK工具查看其他杂项
5.使用抓包工具查看可疑流量
· 这个环节中, 主要就是提取样本,尽可能手工清除掉危险。
分析前想说的话
使用虚拟机!使用虚拟机!使用虚拟机!
创建快照 !创建快照 !创建快照 !
分析详情
1、获取样本
2、修改为.exe后缀
3、在虚拟机中运行程序
4、分析进程信息,使用ProceXp查看
提取样本
拿到样本后,双击样本,运行起来,如果运行不起来把后缀改成exe可执行文件后再双击
可以看到这个进程没有描述和公司,也不是系统进程,是不是比较可疑呀!我们重新运行程序,使用ARK工具(PC-Hunter)查看可疑进程
获取可疑程序的进程号,文件名,文件路径,右键定位到进程文件
ctrl+x放到桌面后,查看启动项
在启动项中查看进程信息
PS:蓝色表示用户服务,黑色是系统服务
进程信息查看之后查看计划任务
发现没有找到病毒文件,这两个模块分析完了之后我们查看其他模块的信息
查看内核模块,没有找到目标程序
查看内核钩子,发现一个可疑文件
右键查看模块属性
分析模块的详细信息,发现当前模块是VMware的系统模块,熊猫病毒是 Virus感染型病毒,主要侵入程序中
查看网络模块,网络数据,发现存在spo0lsv.exe 程序,可以确定熊猫在和网络进行通信
使用网络通信工具分析程序WSExplorer获取网络数据包
熊猫烧香正在进行网络通信,接收和发送数据包!!!
样本获取
将路径下文件提取到本地,并修改扩展名称为vir,或者把扩展名称去掉,防止用户误操作导致不可预估的损失
修改完之后是这样的效果,vir是什么格式?
VIR文件是感染了病毒的任何类型的文件。电脑病毒并已被防病毒软件程序重命名,例如Symantec的Norton AntiVirus或Avira AntiVir。 通常将“ .vir”扩展名附加到文件名(即 Program.exe文件 → 程序文件)表示该文件是病毒,并阻止其执行。
打开虚拟环境自带的软件Hash,接着获取样本信息
手工清理机器
①结束可疑进程spo0lsv.exe
②删除可疑进程启动项
③程序安装目录下被感染的exe变成了熊猫烧香图标,手工
无法清除,当运行被感染程序时,病毒再次复活。(如果是此 时病毒已经有专杀,可以使用专杀工具查杀)可以发现,手工无法清除此病毒,想要清除需要进一步分析
行为分析
首先把虚拟机恢复快照,然后行为分析
分析步骤
获取样本之后,在虚拟机中,使用监控工具监控样本的运行。
待病毒执行差不多之后,分开查看病毒的行为。
-分析监控到的日志, 主要观察的点
- 1.文件操作,主要看文件创建、修改、删除等操作
- 2.注册表操作,主要看注册表设置、创建等操作
- 3.进程操作,主要看创建进程、写入内存等操作
- 4.网络操作,主要看网络连接地址、IP等信息
- 5.其他行为,以及人肉看样本运行后的反应
这个环节的目标主要分析样本的行为,尽可能发现恶意行为。
分析过程
首先使用工具火绒剑分析,把程序拖拽进来,选择监控的信息
把样本拖拽进来,然后选中后点击确定
监控到的行为很多,很容易看花眼,怎么才能筛选数据
文件操作
主要看文件创建、修改、删除等操作
在左上角过滤文件选择动作过滤
默认全部选中
选中监控文件的位置,对文件进行读写的操作我们需要进行监控
点击确定后发现里面有很多文件
其中INI文件是一种无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在windows操作系统上,许多程序也会采用INI文件做为配置文件之用。Windows操作系统后来以注册表的形式取代掉INI档。INI文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序相应。有时候,INI文件也会以不同的扩展名,如“.CFG”、“.CONF”、或是“.TXT”代替。详情如下图:
接下来查看系统默认安装目录的程序,发现被感染了
然后查看我们自定义安装目录的程序,发现也被感染了
删除文件也被感染
可以发现样本修改了很多文件,把图标都替换了,感染的地方很多,接下来分析注册表
分析注册表操作
主要看注册表设置、创建等操作
可以看到注册表里面的操作有 设置启动项,创建键值、设置信息,设置网络
分析进程操作
主要看创建进程、写入内存等操作 ! 进程监控到的数据比较重要,所有的数据都全部分析一遍,勾选进程的全部数据
枚举进程,可能查找是否有杀软,如果是杀软就会把正在进行的程序特征与病毒数据库比较以判断是否为恶意程序
创建进程
启动自己释放的文件 & 打开设备 & 查找窗口
启动自己释放的文件
打开设备
查找窗口
正常情况下可以查看类名,窗口名
分析网络操作
主要看网络连接地址、IP等信息
可以看到有http请求,发送数据包&客户端监听&网络连接,监听端口操作,可以收到服务器的请求
分析网络是否是局域网连接&外网连接,以及获取一些网页的访问Ip信息
80是默认http端口,443默认是https端口,一般https需要申请ssl证书,前提是域名备案
可以看到域名访问,80和139居多
为什么分析这些外网???!!
试探操作??攻击者如果访问成功了,接收到网络响应,可以实施hack操作!如果没有成功,也没有危害,里面的一些数据包进行过加密,使用WSExplorer
分析其他行为
以及人肉看样本运行后的反应
如果想查看恶意行为,选择MT_behavior就可以看到
双击可以查看每一条数据的详细信息
分析结果
可以看到行为里面都是蓝色的,说明被感染了
查看图标发现都变成熊猫
查看结果,可以发现样本创建了很多Desktop.ini文件,感染了很多的exe,并且exe的图标都变成了熊猫烧香
设置监控工具,只查看执行监控,可以发现cmd进程的创建
点击确定,查看进程和模块信息
其中WsockHook.dll不是病毒的模块,而是WSExplorer程序的hook模块。原理如下:双击一个进程会注入一个dll注入到目标进程(熊猫烧香)。hook系统的api、socket相关的api、收发数据包的api ,收到数据包就把数据展示到界面上,实际上是作了一个hook的操作
这样做的好处就是防止共享感染。原理是:共享文件夹传播,让每一台机器中毒,当感染了病毒之后会把共享的相关信息删掉,防止二次感染
通过行为分析可以让我们清楚自己的机器是否受到感染
分析情况总结
通过以上行为分析我们了解到 -> 分析监控的日志以及人肉之后,可以分析出样本的恶意行为:
①自我复制样本到C盘、C:/Windows/driver/目录下
启动C:/Windows/driver/spo0lsv.exe(即样本)
②在每一个目录下创建了Desktop .ini, 里面是当前日期
③在C盘根目录下创建了autorun.inf文件,里面指定了自
动启动的文件为根目录下的setup.exe(即样本)
④对程序目录下的exe进行了感染,图标变为熊猫烧香,打
开exe时,自动打开病毒。
⑤设置注册表启动项为C:/Windows/driver/spo0lsv.exe
⑥设置注册表键值,隐藏文件不显示
HKEY_ LOCAL MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
Advanced\FoTder\Hidden\SHOWALL中的CheckedValue值
分析监控的日志以及人肉之后,可以分析出样本的恶意行为:
⑦自己创建了一个注册表的项,在其中写入了很多信息。
HKEY_ LOCAL MACHINE\SOF TWARE\Microsoft\Tracing\spo0lsv_ RASAPI32
⑧修改注册表的项IE浏览器的代理和连接设置。
⑨ 枚举进程、查找窗口、打开设备
⑩.连接局域网的一些地址,访问外面的一些网址。
⑪.使用cmd命令关闭网络共享
cmd.exe /c net share C$ /del /y
cmd.exe /c net share admin$ /del /y
详细分析
通过行为分析之后,可以知道恶意代码的一些恶意行为,想要获取更加详细的行为需要使用IDA或是OD分析样本。
详细分析的技巧
0.先使用PEID或exeinfo查壳,有壳先脱壳
1.使用IDA的签名工具可以更好的识别库代码
shift+F5,添加合适的库签名,可以更好的分析反汇编
2.使用IDA的F5键可以将反汇编代码转为伪C代码,配合修改参数、变量类型,伪C代码会更易读
3.使用OD动态调试样本,验证在IDA静态分析的猜测,IDA与OD双剑合璧,更容易分析出代码的功能
4.在IDA分析完成后可以创建map文件,导入到OD中使用导入map文件之后,OD的名称与IDA同步
详细分析的方法
①方法1: AO分析法(IDA与OD双剑合璧分析法)
IDA F5猜测功能+ OD动态调试验证猜测
②方法2:死磕到底法(单步跟踪法)
IDA无法F5, OD动态调试,没有加壳做了一些混淆,一步一步跟踪找关键点
③方法3: CC分析法(逐层分析法)
IDA可以F5,但F5的代码是病毒专门]为IDA准备的,一层一层单步跟踪,找到真正的恶意代码。
这个环节的目标是在反汇编或是伪C代码中尽可能找到所有恶意代码,将恶意代码的执行流程画成流程图。
分析过程
1.先使用PEID或exeInfo查壳,有壳先脱壳
FSG:压缩壳,特点是会修改IAT
查看导入表信息,很多导入表信息没有展示出来
如上图发现此时输入表中只有两个API,它们就是FSG壳运行时所需要使用到的两个API。
原理如下:FSG壳通过LoadLibrayA加载原始程序所需要使用的动态链接库,然后通过GetProcAddress获取原始程序所需要调用的API的地址,将原始的输入表还原到程序。
根据这样就实现了加载程序时对输入表的动态还原,所以我们第3点中看不到模块间的调用的原因。
既然FSG壳将我们的API进行了“隐藏”,那么我们要进行的脱壳就是要实现API的还原。
接下来我们打开OD,快捷键ctrl+A 分析代码,查找OEP入口信息,查看特征码
因为FSG是压缩壳,所以脱壳最应该尝试的是ESP定律,其次就是单步跟踪,使用OD载入程序,发现入口没有PUSHAD/PUSHFD指令,单步观察堆栈变化
分析FSG壳的两种方式
1.单步分析
2.使用自解压的方式SFX,猜测OEP的位置
自释放压缩包(英语:SelF-eXtracting,缩写为SFX)是一种可执行程序,它包含一个被压缩的文件,以及一个用于提取压缩包内文件的计算机程序。此类压缩包不需要使用其他压缩程序就可以直接运行并解压缩。
1.单步分析
遇到向上的就下断点,F4跳过,F8继续单步步过
单步进入jmp dword ptr ds:[ebx+0xC] 就是OEP,跳转到第一个Call里面进行分析
进入Call之后找到GetModuleHandleA的JMP,之后右键数据窗口跟随
ds:[004101F4]=7618CF41 (kernel32.GetModuleHandleA)
本地调用来自 004049F4
2.自解压的方式SFX
我们首先选中 字节方式跟随真正入口处(速度非常慢),接着点击重新载入,如下图
接着再次打开SFX界面,选中停在自解压器的入口处
观察左下角信息,发现正在对程序进行读写操作,这就是程序的自解压过程
分析完之后自动帮我们找到OEP的入口
找到OEP之后,把文件dump下来
右键没有dump怎么办?
怀疑插件已经被熊猫病毒感染了,所以恢复快照后重新进行OD调试
发现有了ollyDump脱壳这个选择
INT表导入表是没有的吧?!
接着使用工具ImportRec修复IAT
我们输入OEP,然后点击自动查找IAT
点击获取输入表信息发现函数名都是 FThunk开头
很明显分析的不对!发现是因为我们少了一个步骤
由于程序本身是delphi,imprec定位不是很难,需要观察内存才能定位到IAT的起点
大小需要指定大一些,因为FSG2.0壳将每个模板的IAT后面填充了0x7FFFFFFF,imprec无法定位完全IAT。查出之后在剪切
接下来我们需要修改内存,修改内存我们使用GetModuleHandleA,获取到正确的IAT
可以看到它的IAT做了一些处理,每个IAT表之间用7FFFFFFF填充,应该把它们还原成0,这可能导致ImprotRec出问题,这就是我们刚刚遇到的问题
修改后点击获取输入表信息
可以看到获取的导入表信息也没有问题,我们把文件转储到桌面
FSG壳已经脱完,使用的 [Borland Delphi v6.0],接下来右键发送到IDA中去分析
使用IDA的签名工具可以更好的识别库代码
①将dump修复之后的文件使用IDA打开
②在IDA中使用Shift+ F5打开签名窗口
③在签名窗口Ctrl+ F搜索Delphi
④找到delphi6-7的特征库,应用可以识别出很多库函数
针对病毒,我们脱壳之后并不需要把程序运行起来,保障IDA可以静态分析API
使用PEID和ExInfo查看程序,查看编辑器信息
按下F5找到字符串信息
使用PEID查看编译器信息,是delphi
delphi程序需要进行签名,签名的快捷键是Shift+F5
shift+F5打开签名列表,右键选中Ins,选择bds点击ok
提示如下
点击unload Library 加载签名库
签名库导入完成
总结
1.使用IDA的签名工具可以更好的识别库代码
①将dump修复之后的文件使用IDA打开
②在IDA中使用Shift+ F5打开签名窗口
③在签名窗口Ctrl+ F搜索Delphi
④找到delphi6- 7的特征库,应用可以识别出很多库函数
对三个函数进行分析
使用IDA查看当前函数信息,实现静态分析的目的,并且和OD联合使用
通过IDA静态分析,得到函数信息如下:
使用od动态调试找到关键位置
找到函数位置,重新命名修改函数名称为deCodeString字符串信息
OEP代码分析过程:根据伪C代码,可以发现OEP函数一开始全是初始化变量,调用的第-个函数sub_ 405250,其参数有字符串"xboy" 之后另一次调用中,参数有字符串"whboy" ,在调用sub_ 405250之后,有LStrCmp字符串比较函数的调用,之后有判断返回值的代码,可以猜测函数sub_ 405250应该是解密字符串函数。剩下的sub打头的函数应该是恶意代码函数,在这个代码的末尾有一个消息循环,猜是等待恶意代码执行完毕,函数才会退出。所以OEP函数可以以上四部分
继续分析,发现了三个Call,也就是关键位置,挨个分析一遍
第一个关键函数
第一个关键函数CopyRunVirus主要执行的功能是拷贝自身到驱动文件目录并将其运行那么进入内部观察,用IDA结合OD调试查看内存和寄存器变化之后可以知道大概功能。
首先获取本程序自身的目录,和一个在驱动文件下的目录,然后都将其转换为大写对比是否相同。
路径不同则首先关闭两次名为spo0lsv.exe的程序,复制自己到驱动文件目录中再将其运行然后关闭本程序。
若对比的路径相同只执行第二个关键函数。
通过IDA的快捷F5把汇编转为伪C代码,观察到第一个关键函数的主要逻辑如下图。
第二个关键函数
第二个首先观察内部其伪C代码,观察到有3个函数,功能如图所示。
感染文件
接下来分析第一个函数InfectFile。进入之后就创建了一个线程,那么直接看线程回调函数,经过一些代码过后调用了一个重要的感染函数,他的里面执行关键的感染文件的代码,如下图。
在其中它先遍历文件,判断文件是否已经没有下一层目录了,还有是否是系统重要的文件夹,如windows、winnt、system32等等,如果是,则不对该文件夹进行处理。这是为了防止系统崩溃!
如果都不是则要进行恶意行为了,在每个文件夹中创建了一个名为Desktop_.ini的系统配置文件,里面保存了创建日期,并且都设置为,隐藏、只读、系统的属性。
接下来就是遍历文件了,首先遍历是否是gho,exe,scr,pif,com,htm,html,asp,php,jsp,aspx的文件如果是则进行感染操作。接下来就是遍历文件了,首先遍历是否是gho,exe,scr,pif,com,htm,html,asp,php,jsp,aspx的文件如果是则进行感染操作。
进入感染函数内部查看其原理,可以得知病毒如果找到要感染的文件,病毒先把原文件进行一个备份,计算出他的名称和文件长度,不修改其名称,但直接把它替换成了病毒文件,然后把原文件追加在病毒文件末尾,再在后面追加以+(原文件名称).exe.exe+(该文件大小)是字符串,这样就感染了一个文件,之后接着遍历感染各个文件。
3.3.2 设置病毒为自启动
接下分析第2个函数CopyAutoVirus,这个函数里面设置了一个定时器。
进入定时器调用的函数中观察,首先获取了驱动设备类型,获取2,4,7的信息猜测可能是要感染的设备。
接着判断C盘目录下是否存在setub.exe程序,这个程序其实就是一个病毒副本。
若C目录下不存在该目录创建这个文件,并且设置为隐藏,只读的属性。
相同做法再创建autorun.inf文件,这个文件内部写入一串的数据,就是让setub.exe程序可以设置为一个开机自启动的程序,这样病毒就可以实现开机自动危害电脑了。
3.3.3 创建线程操作网络
第3个函数了首先用for循环创建了10个线程。
可以进入线程回调函数里观察,创建了网络链接资源,使宿主机的文件被远程共享。
3.4 第三个关键函数
第三个关键函数VirusSelfProtect他主要执行自我防御等功能在内部创建了6个计时器分别执行相应的功能。
进入其中第一个计时器里查看病毒先干掉了杀毒软件然后修改了注册的Run实现开机启动病毒的功能,并且还修改了CheckedValue的值是的用户不能使用显示隐藏文件的功能了,这样病毒就实现了完美隐藏的功能。
在进入图3.18中的KillProctectSoftware函数内部发现病毒创建了一个线程,进入线程回调函数中,发现最开始调用了一函数进入观察得知是打开令牌进行特权等级操作,从图中可知把特权等级提升到了1。
下面则是遍历当前桌面程序是否存在当时流行的杀毒软件的窗口程序,是则发送WM_QUIT关闭的消息把它关闭掉。
关闭杀软窗口了不等于就能为所欲为了,很多杀毒软件还在后台运行着,所以病毒接着遍历进程关掉了当时流行的杀软的进程,这样病毒就能进行它为所欲为的大计了!
然后查看第2个计时器,为每20分钟执行一次主要实现的就是在网络上下载了一个.dtd文件并运行它。
第3个计时器函数里创建了2个线程,第一个线程是重复调用第2个计时器的功能(因为第2个计时器的计时时间太长了),接着第二个线程实现的了创建cmd执行了2条指令删除共享文件和删除隐藏共享文件。
第4个计时器先关闭和删除很多对病毒不利的服务,修改了影响病毒运行的注册表键值。
第5个计时器实现了访问了当时著名某些网页,检测是否处于联网状态。
第6个计时器则是下载恶意文件
3.解决方案(或总结)
3.1 提取病毒的特征,添加特征到病毒库中,利用杀毒软件查杀
特征包括:字符串(whboy,spo0lsv.exe,cmd.exe/c net share),图标
3.2 编写查杀工具,配合专杀以及病毒库查杀清除恶意代码
3.3 结合系统设置,配合专杀以及病毒库查杀清楚恶意代码
总结
详细分析虽然有一些技巧可以快速定位代码,但如果非要搞清楚每一个细节, 需要一步一步的分析(死磕到底法),逐层将每一个函数的代码都分析完(CC分析法),分析的过程当中可以使用IDA和OD双剑合璧分析(AO分析法)。
熊猫烧香具有很大的破坏力,是一个感染性病毒,其感染方式是对exe文件覆盖并将源文件附加到末尾,同时还会感染网页,下载恶意代码,关闭杀毒软件服务等功能;
参考文献
[1] 十五派.病毒分析熊猫烧香
[2] 看雪. 新人第一次病毒分析(附专杀工具源码)
[3] wiki .查询API