功能型计算机病毒运行技术分析与研究
2012-08-06李俊李佟鸿
李俊 李佟鸿
湖北警官学院信息安全教研室 湖北 430032
0 引言
随着网络的飞速发展,网络成为了当前计算机病毒最主要的传播途径。出现了木马、蠕虫、僵尸网络、拒绝服务攻击等技术,这些技术越来越多的被利用于具有商业目的的攻击。例如盗窃银行账户、获取机密文件或数据、夺取主机的控制权然后进行出售等。传统病毒技术,木马技术,蠕虫技术等攻击技术结合在一起的病毒将会有十分强大的功能,将对计算机安全产生巨大的威胁,本文将此类病毒概括为功能型计算机病毒。因为这类病毒具有很强的目的性,通过研究此种类型的病毒对维护国家,集体和个人的利益都具有十分重要的意义。
1 功能型计算机病毒运行技术分析
病毒的加载运行大体可分为下面几种技术。
1.1 自启动技术
为了让自己可以在每次开机后自动运行,病毒一般会采用修改注册表,系统服务,系统文件等自启动技术。
(1) 注册表自启动
病毒在注册表中Run键、RunOnce键、RunServicesOnce键、RunServices键、RunOnceEx键、load键、Winlogon键等
如:Run键是病毒最青睐的自启动之所,该键位置是[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurr entVersionRun]和[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun],其下的所有程序在每次启动登录时都会按顺序自动执行。
(2) 启动文件夹自启动
最常见的自启动程序文件夹。它位于系统分区的“Documents and Settings用户名「开始」菜单程序启动”目录,以及位于系统分区的“Documents and SettingsAll Users「开始」菜单程序启动”目录下。前者是登录用户的自启动程序,后者是在所有用户下都有效。
(3) 系统配置文件自启动
在Windows的配置文件(包括Win.ini、System.ini和wininit.ini文件)也会加载一些自动运行的程序。
(4) 开/关机/登录/注销脚本自启动
在Windows 系统中,单击“开始→运行”,输入gpedit.msc回车可以打开“组策略编辑器”,在左侧窗格展开“本地计算机策略→用户配置→管理模板→系统→登录”,然后在右窗格中双击“在用户登录时运行这些程序”,单击“显示”按钮,在“登录时运行的项目”下就显示了自启动的程序。
(5) 任务计划自启动
在默认情况下,“任务计划”程序随Windows一起启动并在后台运行。如果把某个程序添加到计划任务文件夹,并将计划任务设置为“系统启动时”或“登录时”,这样也可以实现程序自启动。
(6) 文件关联启动
通过修改一些常用文件的关联的方式也可以实现病毒启动,比如将修改注册表HKEY_CLASSES_ROOT xtfileshellopencommand 的值由“C:WINDOWSNOTEPAD.EXE%1”改为“C:WINDOWSVIRUS.EXE %1”,其中VIRUS.EXE就是要启动的病毒程序。当用户打开一个txt文档时,就会启动VIRUS.EXE。病毒启动后再调用notepad.exe打开txt文件,这样用户就不会发现已经运行了病毒程序。
(7) 修改系统程序自启动
可以通过修改系统程序如explorer.exe实现开机自启动。此种方法和病毒感染exe文件类似,在系统程序中插入一段启动病毒的代码,当该程序运行时将会运行该段代码。
1.2 自我保护技术
为了躲避杀毒软件和用户的查杀,许多病毒都会采取变形,进程隐藏等自我保护技术。
1.2.1 代码演化技术
采用代码演化技术可以有效的欺骗防毒软件的特征码扫描器,该技术主要以下三种形式:
(1) 加密(Encryption)
加密是最简单的隐藏病毒代码功能的技术之一。加密病毒(encrypted viruses)包括一个解密头,该解密头用来解密加密的病毒代码段,代码解密后就可以被执行了。该类病毒通常具有以下结构:
图1 加密病毒结构
如图1所示,当病毒获得程序执行的控制权后,先执行自己的解密头,解密头解密加密过的病毒代码段,然后将控制权交给刚被解密的病毒代码段。
(2) 多态(Polymorphism)
比加密难度更进一步的是多态。普通的加密病毒最大的缺点是他们的解密头总是不变的,这样很容易被提取出特征值。多态病毒(Polymorphic viruses)可以使他们的解密头变异出许多不同的实体,这些实体具有相同的功能,但在代码级上有很大的区别,检测这种病毒的难度就要高于普通的加密病毒。
图2显示了多态病毒的一般结构。
图2 多态病毒一般结构
(3) 变形(Metamorphism)
变形是一种很高级的代码演化技术。变形病毒(Metamorphic viruses)没有解密头和不变的代码段,看起来每一代的代码都不同,但都完成同样的功能。变形病毒最大的特点就是可以根据伪代码来生成实际的病毒代码。
图3显示了变形病毒的一般结构。
图3 变形病毒一般结构
1.2.2 自我隐藏
当病毒运行时,为了躲避用户和防毒软件的查杀,病毒可以采用隐藏技术使自己在系统中“消失”。通常需要隐藏的对象有进程,端口和注册表等。
(1) 进程隐藏
通常有两种主要途径来实现进程隐藏,一种是将进程实体做成DLL文件插入到其他进程或者使用Rundll32.exe来启动,避免使用独立进程来实现进程隐藏,另一种就是通过对枚举进程的函数或者相关数据结构进行修改来实现进程隐藏。前一种称为无进程实体隐藏,后一种成为进程实体隐藏。
(2) 端口隐藏
要想实现远程控制,病毒必须使用端口与控制端进行网络连接。可以通过端口隐藏来减少病毒使用网络的痕迹,通常的端口隐藏方法有API Hook,端口复用和Http-Tunnel(Http隧道)。
1.2.3 加壳
壳是专门用来保护软件的不被非法修改和反编译的程序。它一般先于被保护的程序运行,完成了保护功能后再将控制权交给被保护的程序。
加壳的过程就是改变了原程序的可执行文件的结构,同时可以进行数据压缩。加过壳后的程序在可执行文件的结构上,与原程序有很大的区别,隐藏了原程序的特征代码。当病毒用这些软件加壳后,防毒软件必须先进行脱壳,才能扫描到原程序的代码,直接扫描很难分辨出是否为病毒。
加壳通常包含以下几个步骤:
(1) 获取壳自己所需要使用的API地址
加壳后的输入函数表所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API函数。壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中,用显式链接方式动态加载这些API函数。
(2) 解密原程序的各个节(section)的数据
壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个节,在程序执行时外壳将会对这些节的数据解密,以便让程序能正常运行。壳一般是按节加密的,那么在解密时也按节解密,并且把解密的节的数据按照节的定义放在合适的内存位置。
(3) 重定位
文件执行时将被映像到指定内存地址中,这个初始地址称为基地址(ImageBase)。对于EXE的程序文件来说,Windows系统会尽量满足。例如某EXE文件的基地址为0x400000,而运行是Windows系统提供给程序的基地址,也同样是0x400000。在这种情况下就不需要进行地址“重定位”了,所以加壳软件把原程序文件中,用于保存重定位信息节干脆也删除了,这样使得加壳后的文件更加小巧。
不过对于DLL的动态链接库文件来说,Windows系统没有办法保证每一次DLL运行时提供相同的基地址。这样“重定位”就很重要了,此时壳中也需要提供进行“重定位”的代码,否则原程序中的代码是无法正常运行起来的。从这点来说,加壳的DLL比加壳的EXE更难修正。
(4) HOOK-API
程序文件中的输入函数表的作用,是让Windows系统在程序运行时,提供API的实际地址给程序使用。在程序的第一行代码执行之前,Windows系统就完成了这个工作。壳一般都修改了原程序文件的输入函数表,然后自己模仿Windows系统的工作,来填充输入函数表中相关的数据。在填充过程中,外可就可填充HOOK-API的代码地址,这样就可间接地获得程序的控制权。
(5) 跳转到程序原入口点(OEP)
从这个时候起壳就把控制权交给原程序了,一般的壳在这里会有明显的一个“分界线”。
加过壳的EXE文件是可执行文件,它可以同正常的EXE文件一样执行。目前有许多加壳软件,按照其加壳的目的和作用,可以分为两类:一是压缩(Packers),二是保护(Protectors)。压缩类壳主要作用是减小程序体积,如ASPack,UPX和PECompact等。保护类壳主要作用是用各种反跟踪技术,保护程序不被调试、脱壳等,其加壳后的体积大小,不是其考虑的主要因素,如ASProtect,tElock、幻影等。随着加壳技术的发展,这两类壳之间的界限越来越模糊,很多加壳软件除了具有较强的压缩性能,同时也有较强的保护性能。
1.3 自我更新技术
自我更新对于功能型病毒来说更具意义,因为通过自我更新,功能型病毒可以对变化的任务需求做出反应,调整、增加或删除其所携带的某些功能模块。除此之外,通过更新病毒文件还可以改变病毒的特征值,增强其对抗防毒软件的能力。如Hybris病毒拥有带身份验证功能的更新机制,保证病毒能获得正确的更新。从而来获得新的传播能力,其更新过程如图4所示。
图4 Babylonia自我更新
(1) 攻击者将一个可以利用某个漏洞进行传播的功能模块发送到Web服务器,并在服务器上的可用更新列表上加入该模块的相关信息。
(2) 已经在运行的病毒会定期到Web服务器上查询可用更新列表,发现该模块后就会下载并安装。
(3) 安装更新后的病毒除了可以使用以前的电子邮件方式传播,还可以借助新的模块利用某个漏洞进行传播。
2 结束语
当前以获取经济利益为目的的计算机病毒越来越多,它们可以盗取用户银行账号和密码、网络游戏账号、即时通讯软件账号等用户信息,还可以留下后门给攻击者,严重威胁着计算机网络的健康发展。对功能型计算机病毒的研究有助于了解此类病毒的运行机理和特点,对防治此类病毒具有十分重要的意义。
[1] Computer virus[EB/OL].http://en.wikipedia.org/wiki/Computer_virus.
[2] Types of Computer Viruses[EB/OL].http://www. typesofcomputerviruses.net/.
[3] 杨亮.网络蠕虫和病毒的共生传播模型研究[D].辽宁:东北大学.2007.
[4] 傅建明等.计算机病毒与对抗.武汉大学出版社[M].2005.
[5] 余宝明.浅析计算机病毒的加载运行技术.科技信息[J].2010.