摘 要:在网页木马以各种变形不断攻击互联网用户的现状下,准确高效地判断网页木马并及时阻断,有效防止客户机感染成为防御网页恶意代码研究的焦点。传统的以特征码为主要手段反病毒技术已经逐渐呈现被摒弃的趋势,本设计应用网页标签树和语义分析相结合的方法,在不同模块实现了网页的多层次过滤,有效屏蔽了恶意代码网页。
关键字:网页挂马;标签树;语义分析;语义框架;过滤
网络的实时性、方便性、快捷性、低成本性使得互联网分布的全球的速度不断加快,用户数量以直线上升。互联网成为人类宝贵的资源,特别是Intemct已经渗透到社会的各个领域,网上的信息逐渐成为人们决策的一部分。与此同时,网络病毒、恶意代码等造成的网络入侵也层出不穷,人类与这些负面影响的因素不停地进行“进攻”和“防守”的斗争。近几年的调查显示在网络安全事件中大约有84%是计算机病毒、蠕虫和木马程序,它们是危害网络安全的首要问题,其次是网络攻击和垃圾邮件。据国家计算机病毒应急处理中心《2008年中国计算机病毒疫情调查技术分析报告》[1],大量的网络犯罪通过“网页挂马”方式来进行攻击,已经占到病毒攻击的50%以上,逐渐成为病毒攻击的主流方式。另据Symantec公司的统计,目前各种流行的网络安全威胁有79%都是通过网页进行攻击或者传播的。SANS和 Sophos最近都把来自浏览器的安全威胁作为首要的安全威胁[2][3]。
当前WEB网站恶意代码泛滥并有加剧的趋势,传统的以特征码为主要手段反病毒技术面临很大挑战,急需寻找新的检测病毒的技术。本论文针对WEB恶意代码中的网页木马为研究对象,基于语义分析研究新型检测技术,通过语义分析结合逻辑推理识别出网页木马,弥补当前恶意代码检查技术的不足,该研究内容对当前信息安全有如下意义:
(1)传统防护效果越来越差,难防Web威胁,本论文的研究有助于主动防御木马的攻击。
(2)本论文基于遍历标签树生成语义框架,能够有效的对付木马的变形,有助于主动防御技术的完善。
(3)语义WEB作为下一代WEB技术,同样面临着安全威胁,本论文的研究有助于安全语义WEB的构建。
1.特洛伊木马和网页挂马
1.1特洛伊木马
在计算机上的特洛伊木马[4]是一个通过端口进行通信的客户端/服务器方式的远程控制程序,它驻留在目标计算机里,可以随计算机自动启动并在某一端口进行侦听,在对接收的数据识别后对目标计算机执行特定的操作。其实质就是通过一段特定的程序(木马程序)来控制另一台计算机,通常包括两个可执行程序:一个是客户端,即控制端,另一个是服务端,即被控制端。当木马程序在一台计算机上运行并被控制端连接时,其控制端将享有服务端的大部分操作权限。
特洛伊木马特性:
(1)通常具有很好的隐蔽性。
特洛伊木马程序在系统启动时自动运行,但不会在任务栏中产生任何图标。
(2)它具有自动运行性
(3)木马程序具有欺骗性通常以“系统服务”的方式欺骗操作系统。
(4)具备自动恢复功能
(5)能自动打开特别的端口
(6)功能的特殊性
1.2网页挂马
网页挂马[5]是指在网页中嵌入恶意代码,当存在安全漏洞的用户访问这些网页时,木马会侵入用户系统,然后盗取用户敏感信息或者进行攻击、破坏。这种通过浏览页面方式进行攻击的方法具有较强的隐蔽性,用户难于发现。攻击者在网页中嵌入一段用于自动下载木马程序的恶意代码或脚本,从而实施木马植入的行为。将木马下载到用户本地,并进一步执行(在用户浏览被挂马的网页时进行),当木马获得执行后,就会有更多地木马被下载,进一步被执行,进入一个恶性循环,从而使用户电脑不断遭到攻击和控制。网页挂马的直接目的就是将木马传播出去,它只是一种传播病毒的手段,由于利用的是传播载体是网页,所以称之为“网页挂马”。
网页挂马的实现实现过程可以分为五步:
(1)探测漏洞 根据探测到的漏洞类型选择网马生成器
(2)生成网马 运行木马生成器生成网页木马程序
(3)网马配置 实现网页木马加密或加壳处理
(4)网页挂马 寻找缺陷网站,获取webshell,将挂马的代码插入
(5)浏览网页,伺机执行代码,下载木马运行
网马多种多样,形式变化万千,但是其攻击过程相似。攻击者首先探测网络,试图找到漏洞。当找到漏洞后,入侵者试图渗透到并传输攻击代码到系统中,达到攻击目的。其流程用图1描述:
图1网马攻击流程图
2.语义分析方法
2.1格语法知识
美国语言学家C.Finmore1966年提出了“格语法”。格语法规定,每个简单的句子都有一个深层结构,这个结构由一个或多个名词词组组成,每个名词词组都以一定的语义关系与动词相关联,这些关系称为格[6]。动词必须有的格叫必备格,可有可无的叫选用格,不能使用的叫禁用格。格的语义组合关系不依赖于特定语种,它通常用一棵层次树来描述。语义领域无固定的划分标准,语义分类的灵活性决定了格的划分也不是唯一的。林杏光和鲁川提出了一种按层层控制和层层推进的思想来确定格的关系[6],如图2所示:
图2
图中,第4层分了22个格。这种组合关系既有动作行为,又有人和事物,构成事件。第3层是对角色和情景细分的七要素,它们围绕着动词。可以将语义关系的分类,用于人们对客观事物的理解,即将其映射为关于现实的认识框架,通过特征刺激,与头脑中存在的固有模式进行匹配,以获取相应的知识。
2.2语义网络和框架
语义网络:只有根据一个词所处的上下文环境,才能准确地把握它的含义,此因此必须把语义放在第一位。语义网络是一种采用网络形式表示人类知识的方法,它由概念、关系和属性组成。因为在语义网络中明确地限定了语句中各特征项的角色关系,所以对文本过滤有着强烈的约束机制,能较好地甄别传统基于关键字匹配算法中产生的假匹配。
语义框架:要了解一个事物,应知道事件的主体、客体、实施的行为、发生的时间地点、范围和频度等信息。依这些数据为槽构造一个框架结构,在对文本进行语义分析时,根据格语法知识将语句中的特征项按角色填充到框架的各槽中,形语义框架[7]。
2.3框架的表示
框架表示法是以框架理论为基础发展起来的一种结构化的知识表示法。框架表示法以所描述对象的属性作为知识表示的基本单位。通常框架采用语义网络中的节点一槽一值表示结构。一个框架由若干个槽组成,每个槽可根据实际情况划分为若干个侧面,而每个侧面又可以拥有若午个值。槽用于描述对象某一方面的属性,侧面描述相应属性的一个方面。其一般结构如下[3]:
<框架名>
<槽1><侧面11> <值111>
<侧面12> <值121>
<槽2><侧面21> <值211>
...
...
...
<槽n><侧面nl>(值nll>
.
<侧面nm><值nml>
一个框架系统必须同时使用许多框架才能完整的表示出来。一个框架结构可以是另一个框架的槽值,同一个框架结构也可以作为几个不同的框架的槽值。框架具有继承性,所以一个框架系统常被表示成一种树形结构,树的每一个节点是一个框架结构,子节点与父节点之间用isa或AKO槽连接。
2.4网页的树型表示方法
网页的表示是网页内容分析的基础,在网页内容分析过程中通常需要对网页内容进行抽象表示,最常用的方法是构造网页的标签树。根据“格的层次树”的构造原理和对网页的逐层过滤的需求来构造网页的标签树。所不同的是在网页标签树中节点不再是角色、情景、主题、客体等,而是用网页的嵌套关系来确定节点的属性。
以下是一个将代码转换为树型结构的例子:
The Body has text
其标签树可表示为:
图3
是树型结构的根节点;
都是的子节点;是它们的父节点;
互为兄弟节点。生成标签树不是最终目的,它只是为下面的语义分析提供遍历的基础。
3、.系统模块设计
本系统由虚拟WEB用户机、恶意代码网页下载子系统、恶意代码检测分析子系统和病毒库报告子系统构成,划分为两大模块:网页攻击模块和代码检测模块,攻击目标为虚拟机。
3.1、访问控制模块
设置访问控制列表,以增加在路由器接口上过滤数据包出入的灵活性,限制网络流量,控制用户和设备对网络的使用,它根据网络中每个数据包所包含的信息内容决定是否允许该信息包通过接口。实现对网页信息的一重过滤。访问控制列表的设置,在一定程度上减轻了恶意代码检测的负担。
3.2、HTML解析
使用开源项目NekoHTML,它可以准确高效地对HTML文本中的格式、数据进行处理,具备对 HTML代码扫描和标签补全(tag balancer)的功能,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。能够扫描HTML文件并修正在编写HTML文档过程中常犯的错误。NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。读取用户指定的Web页面(存储在硬盘上)并依据HTML对其进行解析,得到一棵标签树(建立在内存中)。该树反映了Web的内容和结构,即组成的Web页面的各个元素(元素名称、元素内容、所包含的各个属性),以及各个元素之间的层次构成关系。结构化的Web页面标签树比流式的Web页面数据更易于访问和操作。
3.3、网页病毒的语义框架
把网页恶意代码看作一个对象类,将各种不同的病毒程序以及它们的典型传染行为的语义特征等属性封装起来,并通过对象之间的继承和约束关系表示它们的结构和联系。在这里网页恶意代码作为一个类,该类下的具体对象就是各种网页病毒程序包括恶意的脚本、网页木马等,每种网页病毒程序的典型传染行为作为事物的属性。
根据2.3对网页恶意代码(主要针对网页挂马)的分析,可将其分为三大模块:
(1)信息探测模块:为了在目标计算机上得到安装,木马制造者通常都要通过各种方式收集目标机器的信息,如操作系统版本信息、用户名和口令字,最常见的方法是在木马程序中设置系统钩子,或者对目标计算机所在的局域网中流动的数据包进行嗅探,以获得敏感信息。
(2)隐藏信息模块:木马程序最显著的特征是它的隐蔽性。比如:系统启动时自动运行,但不会在任务栏中产生任何图标,通过修改系统时间、摘除杀毒软件地HOOK挂钩、修改杀毒软件病毒库逃过杀毒软件的查杀等。
(3)自动运行模块:木马要想达到控制或者监视计算机的目的,必须找一个既安全又能在系统启动时自动运行的地方,潜伏在Win.ini文件中是比较常见的。在它的[windows]字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有后跟程序,比如:run=c:windows ile.exe load=c:windows ile.exe 就可能是木马。在运行Win.ini文件时,木马会随之运行。
图4
把各个模块看做结点,把具体的某种病毒看做一个对象,所有网页病毒为一个类,两两之间用箭头来描述。在图3中列出网页病毒的类、对象、模块、结点的语义关系,对隐藏模块和自动运行模块只举例列举几个结点。
3.4定义数据结构
tyPedef struct CharElement
{Char E0;
Char R0;
Char Fi;
Char Si;
Float weight;
Float Ddist;
Tag()};
}Charlement;
class Tag
{
Int iLevel
Int HashTable[]
Tag leave1;
Tag leave2;
public Tag ();
public void Add();
public void GetTag();
}
4.测试分析(下转第37页)
(上接第35页)选择典型的网页挂马对本系统进行测试,验证本设计有效性和准确性。经过多次测试证明准确率不低于90%,误判率不超过5%。通过以上检测数据看出它与传统的特征码检测方法相比起来判断更准确,但是因为在检测过程中腰遍历标签树,所以检测速度比预计的要慢一些。
5、结束语
通过网页病毒防御技术的研究,本人对网页恶意代码有了新的认识和理解,真正体会到当前研究网络防御技术的紧迫性和必要性。互联网的广泛应用,将会有越来越多的新型木马得到及时广泛的传播,给计算机网络的安全构成严重的威胁。随着攻击者的技术的进步,我们的防御工作重点也会逐步转向网马的深度传播以及动静态技术结合上。
参考文献:
[1]刑文利,恶意代码动态分析系统的设计与实现[M],清华大学硕士学位论文,2005:13-15
[2]王德强,恶意代码设计和分析技术的研究与实现[M],清华大学硕士学位论文,2005:10-17
[3]陈月玲,基于程序语义的计算机病毒检测方法[M],青岛大学硕士学位论文,2007:33-37
[4] J. Bergeron ,M .Debbabi, M .M. Erhioui, and. B. Ktari. Static analysis .of .binary .code .to. isolate. malicious. behavior.. In .8th Workshop on Enabling Technologies: Infrastructure for Collaborative Entrerprises, 1999.141-158
[5]http://www.sucop.com/2009/0625/722.html
[6]姚天顺,朱靖波,张环等,自然语言理解一一种让机器懂得人类语言的研究(第2版)[M].清华大学出版社,2002:127-139
[7]周文刚,王景中,基于语义的信息过滤算法[M],北方工业工业大学硕士学位论文,2006.32-36