国内资深黑客浅谈恶意代码的研究分析

日期: 2008-06-04 作者:叶子 来源:TechTarget中国

  国外著名的某安全公司指出:2007年互联网上传播的有记载的新型恶意程序(包括病毒,蠕虫,木马等)数目达2,227,415个,同2006年的结果(535,131个)相比翻升了四倍,恶意软件总数量达到354GB。许多反病毒专家认为这些恶意软件的急速增加已经达到了一种很极端的情况。恶意软件的快速发展、广泛传播,以及新型化、复杂化,使得展示出更强的破坏性和更多样的传播方式。2008年安全公司对于恶意软件的分析研究也将面临更大的挑战。叶子在本篇文章中将带领大家初步了解一下恶意代码及其相关的分析研究过程。


  恶意代码(malicious code)是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。恶意程序创作者有一套不断扩充且技术先进的工具组合可供他们任意运用,其中包含了傀儡程序与傀儡网络、Rootkit、社交工程技巧、间谍程序与广告程序等等。他们受到金钱利益驱使的情况更甚于以往,而且创造出许多专门生产恶意程序、犯罪程序与间谍程序/广告程序的地下经济体。他们不再制作以删除文件及破坏大量计算机为目的的恶意程序,改以潜藏于计算机中,等候傀儡程序主控者下达命令采取各种行动,或在适当时机窃取个人信息的恶意程序取而代之。他们不断创造出行踪更隐匿的恶意程序,像是视频垃圾邮件-内含视频而非文字的垃圾邮件。


  恶意代码按传播方式可以分成几类:病毒,木马,蠕虫,移动代码。


  病毒一般都具有自我复制的功能,同时,它们还可以把自己的副本分发到其他文件、程序或电脑中去。病毒一般镶嵌在主机的程序中,当被感染文件执行操作的时候(例如:打开一个文件,运行一个程序,点击邮件的附件等),病毒就会自我繁殖。


  特洛伊木马这类恶意代码是根据古希腊神话中的木马来命名的,它从表面上看是正常的程序,但是实际上却隐含着恶意意图。一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中,同时它能以加载恶意代码动态库的方式携带恶意代码程序,还有一些木马会以一个软件的身份出现(例如:一个可供下载的游戏,将木马捆绑在软件安装程序上),但它实际上是一个窃取密码的工具。这类应用通常在网络游戏盗号木马上。大多数木马都可以使木马的控制者登录到被感染电脑上,并拥有绝大部分的管理员级别的控制权限。为了达到这个目的,木马一般都包括一个客户端和一个服务器端。客户端放在木马控制者的电脑中,服务器端放置在被入侵电脑中,木马控制者通过客户端与被入侵电脑的服务器端建立远程连接。一旦连接建立,木马控制者就可以通过对被入侵电脑发送指令来传输和修改文件。通常木马具有很强的隐敝性,会采用多种手段隐藏木马。隐藏恶意进程的痕迹,例如使恶意进程不在进程列表中显示出来等。常见的木马有灰鸽子、彩虹桥、Poison_Ivy、守望者、上兴远控、turkojan等一些木马。


  蠕虫是一种能在没有任何用户动作的情况下自动传染计算机的病毒变形。蠕虫不修改文件,而是常驻在内存里并复制自己。蠕虫使用操作系统的一部分,这部分对于用户来说是自动且无形的。通常只有在它的无法控制的疯狂复制占用了系统资源使得其他的 任务缓慢甚至停滞的情况下才会发现它们。蠕虫的自我复制不像其他的病毒,它可以自动创建与它的功能完全相同的副本,并在没人干涉的情况下自动运行。蠕虫是通过系统存在的漏洞和设置的不安全性(例如:设置共享)来进行入侵的。它的自身特性可以使它以极快的速度传输(在几秒中内从地球的一端传送到另一端)。其中比较典型的有Blaster和SQL Slammer。


  移动代码是能够从主机传输到客户端计算机上并执行的代码,它通常是作为病毒,蠕虫,或是特洛伊木马的一部分被传送到客户计算机上的。另外,移动代码可以利用系统的漏洞进行入侵,例如非法的数据访问和盗取root账号。通常用于编写移动代码的工具包括Java applets,ActiveX,JavaScript,和VBScript。


  了解了恶意代码的基本概念后,叶子再跟大家一起来研究对恶意代码的分析流程。


  ◆首先,我们通过各种渠道收集到最新的未知恶意代码样本时,进行文件格式分析。通过PEID之类的工具进行文件格式检查,分析样本是否进行加壳处理?样本是何种语言编写的?以及是否有其它附加的数据等。样本经过加壳的程序,需要对其进行查壳,确定程序的加壳类型,并通过脱壳工具或手段进行脱壳,分析出程序的编程语言。如果无法查出壳类型,则认为是一个未知的壳,可以结合动态脱壳进行分析。另外通过PE文件的区段来确定是否有附加进去的数据。


  ◆接着,我们对样本文件的属性进行查看分析。查看样本的数字签名,排除伪造签名的情况。对于持有那些大公司的数字签名,可以通过文件属性中的相关信息进行查看分析。另外查看文件的文件属性,可以对文件的是否正常、或已被修改的情况进一步的分析。


  接下来,我们对样本的行为进行分析,分析它的本地感染行为,以及网络传播行为。本地行为分析过程需要使用文件监视工具、注册表监视工具来确定恶意代码对系统做了哪些行为。通常情况下样本会释放出病毒体,并把它拷贝到系统目录下,而且通过添加注册表到系统启动项、系统服务启动、注入系统进程中等等方式。另外通过网络抓包工具(sniffer、IRIS等),分析其与哪个网站进行连接,打开哪个端口,下载哪些文件,执行哪些操作命令等等的过程。


  然后,我们通过静态反汇编工具(IDA等)对的恶意代码程序的PE文件进行反汇编。通过分析静态反汇编后的文件中所使用的字符串、API函数等信息,来判断此样本的基本功能和特点。通过查看PE文件的导入表来判断基本功能和特点等。


  最后,我们通过动态调试对恶意代码加载调试,进一步分析代码的操作。用动态调试器(OD等工具)载入病毒后,在程序进程的各个可疑的地方下断点,根据代码来确定恶意代码的有害操作。当然最后还要形成相关的恶意代码分析报告,并对恶意代码进行命名规范,而且还需要对样本使用MD5进行完整性校验。


  下面举个例子来对恶意代码进行分析:


  从用户的网络环境中收集到熊猫烧香的变种样本,我们需要对其进行初步的分析及了解。我们先把病毒样本放入带有病毒分析环境的虚拟机中,包含分析过程需要的各种工具。


  ◆首先用PEID工具侦查其文件格式及壳的型号,如下图:


文件格式及壳的型号
 


  ◆接着进行脱壳操作。(叶子在这里使用超级巡警的自动脱壳器,可以根据自己对工具的使用习惯进行选择自动脱壳工具或手工脱壳)


进行脱壳操作
 


  ◆再次使用PEID进行侦查,发现还有一层Morphine的壳在使用。


Morphine的壳



 
  ◆再次进行脱壳,最后侦查的结果是使用Dephi语言进行编码。


  ◆通过注册表监视工具RegMon,监视病毒运行时对注册表的操作行为;通过文件监视工具FileMon监视病毒运行时对文件的操作行为。也可以用快照工具RegSnap进行注册表和指定目录下的文件进行前后对比,快速找出病毒新建和修改的注册表,以及本地文件的释放行为。


快照工具RegSnap



  
  文件运行后会释放以下文件
%System32%/drivers/spo0lsv.exe     32,768字节
新增注册表
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunrun]
%System32%/drivers/spo0lsv.exe


  另外有些还需要手工进行查找。如对IE的临时文件、host文件、msconfig文件等进行手工分析,查看是否对这些文件进行修改或者在目录下生成新的文件。


  ◆通过Sniffer工具进行网络监视。后门类与木马类病毒在成功感染后,往往会把搜集到的用户信息发送出去,或是主动连接下载病毒的主程序,这样就必然要进行网络操作。通过一些网络监视工具,来发现病毒的网络行为。


  本样本通过sniffer工具抓包分析的连接网络行为如下:


连接网络行为


协议:TCP
域名或IP地址:www.yahoo.com (209.131.36.158)
端口:80
对目标主机的操作:通过QQ代理进行访问www.yahooo-ht3.akadns.net


协议:TCP
域名或IP地址:www.tom.com (202.108.12.68)
端口:80
对目标主机的操作:通过QQ代理进行访问www.web.cdn.tomcdn.com


协议:TCP
域名或IP地址:www.163.com (202.108.9.34)
端口:80
对目标主机的操作:通过QQ代理进行访问www.cache.split.netease.com


协议:TCP
域名或IP地址:www.sohu.com (61.135.188.65)
端口:80
对目标主机的操作:通过QQ代理进行访问www.pagegrp7.a.sohu.com


协议:TCP
域名或IP地址:www.google.com (64.233.189.99)
端口:80
对目标主机的操作:通过QQ代理进行访问www-china.l.google.com
……
  病毒感染后,带有QQ尾巴的功能,能通过QQ代理访问上述网址。


  ◆通过静态分析调式,进一步分析病毒的一些特征行为。样本中病毒释放后,病毒体为spo0lsv.exe文件,因此需要对此病毒做壳的侦查及脱壳工作(略过)。通过IDA静态分析工具分析脱壳后的spo0lsv.exe样本,如下图所示:


分析脱壳后的spo0lsv.exe样本 


  通过观察“strings”窗口,可以初步分析样本的一些情况。如可以看出样本是用Delphi语言编写的等等。通过观察“Imports”窗口中的API函数,可以看到系统调过了一些网络行为的API函数,如InternetOpenUrlA、InternetOpenA、URLDownloadToFileA等函数。结合反汇编代码分析,可以看出病毒会关闭的杀毒软件有VirusScan、NOD32、Symanter AntiVirus、Duba、System Safety Monitor、Wrapped gift Killer、游戏木马检测大师、超级巡警、IcdSword等等。病毒会删除系统的共享文件:
cmd.exe /c net share
$ /del /y
cmd.exe /c net share admin$ /del /y
遍历盘符在各分区和移动存储介质中释放隐藏病毒文件和autorun.inf,使用Windows自动播放功能来传播病毒;以批处理的形式将病毒原文件删除。


  ◆通过动态分析调式,使用OllyDBG工具进行调式,进一步分析样本的操作行为。通过跟踪调式,发现样本可以使用API函数URLDownloadToFileA将其他病毒程序下载到本地并运行,样本中带有下载病毒文件的地址,但在程序中没有激活,所以没有真正下载的动作。本病毒包含原来的熊猫烧香病毒的特征以及金猪报喜的特征。


分析样本的操作行为


  最后要把分析过程中的结果形成相关的恶意代码分析报告,收集恶意代码的样本、释放的文件、以及网络行为的数据包,并对恶意代码进行命名规范,而且还需要对样本使用MD5进行完整性校验。


  本文主要说明恶意代码及其相关的分析研究流程,至于通过逆向工具具体分析恶意代码的操作实验步骤,叶子将在以后的文章中做进一步的介绍。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

叶子
叶子

相关推荐