应用于移动互联网的入侵检测系统的研究
2014-09-18邹学韬
邹学韬,江 舟
(1.武汉邮电科学研究院通信与信息系统,湖北武汉 430074;2.武汉虹旭信息技术有限责任公司安全产品部,湖北武汉 430074)
传统的PC上网模式已经逐渐无法满足人们对互联网的需求,越来越多的人开始使用智能手机随时随地访问移动互联网,带来便捷的同时又带来了很多的安全隐患。随着应用的不断丰富,移动终端作为“无处不在”的服务和个人信息的载体,更容易感染病毒或遭到入侵,其安全问题将会比PC更为复杂。
在传统互联网领域,入侵检测技术已经发展的相当成熟了,而在移动互联网领域的研究才刚刚起步。在国外,Iker Burguera,Urko Zurutuza等人提出了适用于安卓智能手机的基于行为的恶意软件检测系统。根据这一现状,本文提出了应用于移动互联网的入侵检测系统,该系统能对手机上各项行为进行监测,一旦发现有入侵攻击则立即告警提示,从而改善智能手机防御性低的情况,提高了手机的安全性能。
1 移动互联网终端安全问题
网秦在《2012年上半年全球手机安全报告》中称,2012年上半年累计查杀手机恶意软件17 676个,感染的手机用户数高达1 283万,比2011年同期增长了117%,其中有78%的手机恶意软件都来自Android平台[1]。
随着移动终端越来越智能化,人们在用智能手机办公、娱乐的同时也面临了很多未知的危险。终端智能化带来了很多新的安全问题:如操作系统/中间件漏洞、病毒木马等恶意代码、恶意吸费等流氓软件、不良信息传播、用户隐私信息泄露等。这些问题都会给手机用户带来不少麻烦,影响用户的体验,泄露个人信息,甚至还会造成钱财损失。所以移动互联网终端安全问题必须引起足够的重视,用户的利益才能够得到保障。
2 系统总体设计
应用于移动互联网的入侵检测系统,主要由以下几个模块组成:数据采集模块、数据分析模块、入侵检测模块、数据库。系统结构图如图1所示。
图1 系统结构图
2.1 数据采集模块
数据采集模块负责捕获数据包,把用户手机的上行下行数据都采集下来,之后发给后续的数据分析模块处理。
数据包捕获基于开源的libpcap,它可以按照指定的规则(如端口号、IP地址、协议类型等)对数据包进行过滤,只捕获用户需要类型的数据包[2]。
2.2 数据分析模块
数据分析模块接收数据采集模块发过来的数据包,并按照TCP/IP的各个层次解析数据包,解析时根据不同协议调用不同的解析函数。
2.3 入侵检测模块
入侵检测模块完成入侵攻击的检测与告警功能。该模块将数据分析模块发过来的数据和特征库中的规则集合进行比较和分析,判断是否为入侵攻击,如果是,则告警。
检测的方法是以特征进行检测,所以在此之前,必须根据现有的已知入侵攻击行为,提炼出特征信息,把这些特征组成一个特征库(也就是规则集),用这些规则去判断是否发生了入侵。入侵规则集越丰富,能检测出的入侵攻击也就越多。
把用户的数据和入侵检测规则(如端口号、URL等特征字)进行模式匹配,如果匹配成功则说明满足了规则,则可以认为发生了相应的入侵攻击,与此同时告警,告诉用户存在安全问题的应用程序,让用户及时采取措施。
2.4 数据库
数据库使用SQLite,SQLite是用于iPhone、Android等手机系统中的一个轻量级的、嵌入式的、关系型数据库。当检测到有入侵攻击时,数据库就负责存储这些信息,包括入侵攻击截获的时间、协议类型、源IP、目的IP、源端口、目的端口、数据内容等,方便手机用户随时查证。
3 协议分析
协议分析是一项比较新的技术,由于网络协议是具有规则性的,协议分析可以清楚地知道在数据包哪些位置可以获取哪些内容,并理解这些内容的含义。协议分析的实质就是识别各个协议头,及其头部各个字段的含义[3]。
TCP/IP由4个层次组成:网络接口层、网络层、传输层、应用层。
妈妈给我买回了一架萨克斯,我刚刚打开盒子就被它的外貌吸引住了,闪闪发光的色泽,流线光滑的外表,精美的按钮,他的笛头就像小鸭子的嘴巴一样扁扁的,再看他的喇叭就像猪八戒的耳朵一样,肥肥大大!真有趣,这就是我的萨克斯,漂亮吧!
网络接口层:帧=帧头+IP数据包+帧尾(帧头包括源MAC地址和目的MAC地址等)。
网络层:IP数据包=IP头部+TCP/UDP数据信息(IP头包括源IP地址和目的IP地址等)。
传输层:TCP/UDP数据信息=TCP/UDP头部+实际数据(TCP/UDP头包括源端口号和目的端口号等)。
这样一层层分离出头部,分析头部各个字段的含义,最后得到应用层的用户数据。根据各协议的特点以及特征库中设置的规则,通过模式匹配就可以准确地识别出是否为入侵攻击。
下面以一个数据包为例进行分析,数据包如图2所示。
图2 数据包(截图)
图2中,1~6 byte为目的MAC地址:0x0021273ff642;7~12 byte为源MAC地址:0xc46ab7305db7;13~14 byte为类型字段0x0800,根据协议可以判断这个包是IP包。IP包的第10 byte为传输层协议标识,即数据包的第24 byte 0x06,说明数据包是TCP协议数据包。TCP包的3~4 byte表示目的端口,是应用层协议标识,即数据包的37~38 byte 0x0050,则数据包的目的端口为80,说明是HTTP协议数据包。最后根据HTTP协议就可以知道URL是“GET/?q=xinwen123&callback=rs_1365471732”。之后就可以与规则库里的规则进行匹配,判断是否为入侵攻击。
图3 协议分析流程图
协议分析的方法可以解决传统模式匹配存在的一些问题,如计算量大,因为移动终端的CPU计算和存储能力都是有限的,计算量过大会影响手机的性能。计算量减小可以提高匹配速率,并且由于协议有各自固有的格式,此方法可以降低误报率,提高准确率。
4 入侵检测流程
入侵检测流程如图4所示。首先是系统初始化,将规则库中的所有规则都读入到内存中。接着采集数据,捕获数据包,并对数据包进行层层协议分析,分析出协议各个字段的内容。把这些字段的值和内存中的规则进行匹配,一旦匹配成功,则表示存在入侵,同时进行告警。如果匹配失败,则继续匹配其余的规则直到所有规则都匹配完毕。如果直到最后都没有匹配成功,则表明不是入侵攻击,进而开始重新捕获数据包[4]。
图4 入侵检测流程图
检测的过程就是一个模式匹配的过程,自定义规则格式为:名称端口关键字响应。例如:恶意网址80 wap.a1ipay.com alert,这一规则表示,当用户访问 wap.a1ipay.com这个网址时,则进入了恶意网站,并发出告警,将命中这条规则的数据写进数据库保存。数据库格式如表1所示。
表1 数据库
用这种描述语言来定义入侵规则,一旦发现新的入侵攻击时,就可以用这种方式写入新的入侵规则,而不必改动程序。把这些入侵攻击表示成入侵规则存放在规则库里,如果数据和规则库中的某种规则匹配上了,就可以判断出发生了何种入侵攻击。
5 仿真实验
5.1 开发环境
本实验在java虚拟机JDK1.6版本,Eclipse3.7集成开发平台下安装ADT插件,并搭建Android开发环境。实验选取一台PC,处理器Intel酷睿i3 3220,内存4 Gbyte。操作系统为Win7,并对JDK配置其相应的环境变量。Android模拟器配置如图5所示。
5.2 结果分析
图5 Android模拟器配置图(截图)
开启入侵检测应用,通过Android模拟器访问http://wap.a1ipay.com,这时入侵检测应用就会显示如图6所示界面,提示“入侵检测中心检测到http://wap.a1ipay.com为恶意网址”,表明用户访问了一个可能有危险的恶意网址,并让用户做出选择,是继续访问,还是取消访问,实现了检测并响应的功能。
图6 检测结果图(截图)
又选取20例恶意网址进行测试,结果如表2所示。
表2 测试结果
实验结果说明,该入侵检测系统方案可行,能较好地对入侵攻击进行检测,但仍需要不断完善特征库,降低误报率、漏报率。
6 结束语
智能手机已经成为移动终端发展的主流,其中Android智能手机占的市场份额较大。随着手机应用的不断丰富,功能不断强大,其伴随的安全问题不容小觑。本文研究了应用于移动互联网的入侵检测系统,可以检测出手机是否遭受了入侵攻击,及时响应告警,保障手机用户的安全,有较好的实用性。该系统的准确性如何很大程度上取决于特征库的规则是否丰富。所以今后还需要进一步的分析研究,使得入侵检测特征库更加丰富,判断更加精准。
:
[1]北京网秦天下科技有限公司.2012年上半年全球手机安全报告[EB/OL].[2013-04-10].http://wenku.baidu.com/view/3e02eb3d580216fc700afd8e.html.
[2]刘斌,代素环.基于Libpcap的数据包捕获机制的实现[J].农业网络信息,2008(9):62-63.
[3]徐宇杰.TCP/IP协议深入分析[M].北京:清华大学出版社,2009.
[4]曹元大.入侵检测技术[M].北京:人民邮电出版社,2007.