APP下载

智能手机Rootkits 原理与检测*

2012-07-20慕德俊戴冠中

微处理机 2012年2期
关键词:字符串内核智能手机

袁 源,慕德俊,戴冠中

(西北工业大学自动化学院控制与网络研究所,西安 710072)

1 引言

智能手机[1]逐渐融合了声音、图像、视频、网络与电子商务,成为强大的个人终端,但同时也开始面临巨大的安全威胁。为了兼容高耗能硬件和应用程序,智能手机一般都配有完善的操作系统(诺基亚的Symbian、苹果的iPhone、微软的Windows Mobile、谷歌的Android 等),可以像计算机一样安装多种第三方软件,功能不断扩展,如:蓝牙、视频通话、股票银行业务、GPS(Global Positioning System,全球定位系统)、WAP 上网等,使其成为黑客攻击的新目标[2-3]。2010年7 月在拉斯维加斯举行的Defcon安全大会上,Trustwave 安全公司的研究人员展示一个内核级的Rootkit,如果用户在Andriod 手机上阅读短信,就会自动拨打一个未经授权的长途电话,并自动开启GPS 进行地理位置定位,安全隐患严重。如今,智能手机的安全问题已逐渐涉及到个人隐私、企业发展甚至国家安全等方面,再加上针对智能手机的安全厂商紧缺稀少,该领域技术和安全机制的发展相对缓慢,手机用户的安全防护意识较为不足,智能手机的安全威胁日益严峻。根据最近一份来自Mcafee的报告显示,全球近14%的智能手机用户已经被恶意软件感染,因此,关于智能手机安全技术的研究刻不容缓。

针对智能手机中Rootkits的技术原理与检测方法进行研究,结构如下:第1 节介绍智能手机中Rootkits的主要功能;第2 节分析Rootkits的实现技术;第3 节提出智能手机系统中Rootkits的检测方案;最后总结全文,并就智能手机安全的重要性和未来发展方向进行一定的讨论。

2 智能手机中Rootkits 功能

Rootkits 可以让攻击者隐蔽地监听或记录智能手机通话的隐私数据。无论何时只要发生Rootkits感兴趣的事件,恶意操作就会被激活。例如,当日历程序显示的备注信息中含有某个关键词(如会议)时,Rootkits 就能激发恶意操作,悄悄拨打攻击者的电话,从而远程监听本次会议内容。另外,当受害者拨打某个指定电话时,Rootkits 也可以激活并记录本次通话的信息。

2.1 Rootkits的触发

Rootkits 必须有能力拦截报警信号,才能触发。Rootkits 程序通过hook 系统调用表和用恶意写操作地址替换真实写操作系统调用地址来达到此目的[4]。当报警信号发出后,Rootkits 程序写操作拦截显示在屏幕上的消息,检测其中的三个子字符串。首先是“Windows Prop”子字符串,该字符串显示当前消息为通知类型;然后检查是否存在“Clock”字符串,该字符串用来验证消息是否来自时钟程序;最后是“NETWM Type:6”子字符串,该字符串代表产生报警信号。通过匹配算法,如果字符串中含有预定义的关键词,就激发后续的恶意操作。

2.2 拨打电话

当Rootkits 激活恶意操作,就会模拟用户空间通信应用程序来拨打电话。正常的应用程序会向内核发送一系列系统调用,用以启动GSM 设备,并设定其拨打指定的号码。Rootkits 程序通过发送与内核AT 命令相同的序列来达到此目的(电话号码就是其中某个参数)。AT 命令激活了电话子系统,并成功建立起同攻击者之间的连接。以Windows Mobile系统为例,创建呼叫是一个基本操作,利用了PhoneMakeCall 函数,只需传入两个参数:电话号码和字符串false,就可以实现不需要确认的自动呼叫[5]。这样一来,处于手机一定范围内的所有声音信息都会被监听。而且手机的声音接收装置越敏感,它接收到的声音就越细微。

2.3 利用GPS 发现目标位置

GPS是一个串行设备,Rootkits 可以很容易地从内核串行设备列表的成员变量名上定位到GPS 设备,然后从相关的tty_driver 结构体中获取目标的当前地理位置信息。即使用户禁用了GPS,由于Rootkits 在内核模式下运行的特性,完全可以启动GPS设备。在获得目标地理位置信息后,Rootkits 会生成一条短信,通过GSM 调制解调器配置为文本模式来发送短信,最后Rootkits 会禁用该设备。这种攻击非常隐秘,唯一可见的痕迹是收到电话清单时,才会发现发送给未知号码的短信。

2.4 耗尽电量实施拒绝服务攻击

GPS 和蓝牙设备属于高耗能服务。Rootkits 通过向GPS 和蓝牙设备相应的电源设备文件写入“1”指令,从而开启对应的服务。这种攻击会很快耗尽智能手机的电池,根据实验测试,同时开启GPS 和蓝牙服务,手机电池的待机时间只有原来的十分之一[4]。人们在紧急情况下越来越依赖于手机,那么当用户最需要手机时,该攻击会导致拒绝服务攻击。

3 智能手机中Rootkits 技术分析

手机杀毒软件不仅可以遍历手机文件系统中的文件信息,还可以对手机中的运行任务进行查询监视。如果Rootkits的一些特征符合某种已知病毒的特征码,毫无疑问这个Rootkits 程序就会被关闭。因此,Rootkits 必须实现自身文件、任务的隐藏。

3.1 文件隐藏

对于任何手机Rootkits 来说,它首要的任务是隐藏自身。Rootkits 程序初次运行在手机系统上时,它会将手机存储器上的文件删掉。同时,它监视系统的状态变化,一方面监视手机上是否运行了杀毒软件,如果没有就将自己重新创建在手机系统上;另一方面,它会监视手机是否被关机,如果是,它马上将自己写入文件系统,保证下次开机时自己能顺利启动。

Rootkits的文件隐藏还体现在一些对系统设置的利用上,如手机系统的注册表文件(主要针对Windows Mobile)、设置文件为系统属性(Symbian 系统)等等。

3.2 任务隐藏

智能手机系统与计算机操作系统有着一定的区别,因此很难利用计算机操作系统下的一些方法来实现任务/线程隐藏,例如钩子技术。通常,手机系统会将手机运行中的数据保存在一些关键的位置,以便能够随时使用和修改。Rootkits 通过对手机系统缓存中涉及到任务信息的核心数据进行修改,从而改变手机系统的某些显示而实现。

另一个方法是利用系统的漏洞。按照操作系统的设计理念,操作系统本身的代码会运行在系统的某一个高地址内存中,这段内存地址是不允许用户程序访问的。如果访问到操作系统本身的地址,那么系统会立刻禁止此次访问,给出一个警告提示。可是一些手机操作系统的设计者为了简单(或者为了加快系统的开发成品时间),往往会去掉这部分代码。这时,如果手机系统将系统内的所有任务/线程信息存储在内存高地址,Rootkits 程序就可以直接访问这个地址,然后修改该处的原始内容,而手机系统会忽略这种改变,Rootkits 就可以轻易的隐藏自身,同时躲过杀毒软件的查杀。

3.3 内核层的Rootkits

上述隐藏方法仍然属于应用层范畴,没有涉及到系统内核的层面,要实现隐藏程序行为显得有点力不从心。内核级的Rootkits 常常作为驱动程序安装在手机系统中,成为系统不可分割的一部分,并且能够通过驱动程序与系统的核心数据进行交互。它可以改变系统的核心数据,包括任务/线程信息,文件数据信息,甚至还可以修改系统的运行状态[6-7]。如果智能手机采用了Linux 操作系统,可以利用文献[6-7]中的LKM 技术,截获部分系统调用,轻松实现对Rootkits 文件、任务的隐藏。

例如,Android 系统使用select()和read()等函数从Modem 驱动程序的相关文件描述符中读取上报。如图1 所示,一旦Rootkits 劫持了sys_read()系统调用,就可以截获Modem 上报的一切外来通信,包括手机收到的短信和呼叫等。这样一来,Rootkit就能对目标手机接收到的所有短信进行截获,并对短信中的内容进行分析,其攻击行为就能得以触发和实施。

图1 截获read 系统调用原理图

4 智能手机Rootkits 检测技术

目前,卡巴斯基、Symantec、Mcafee、小红伞、瑞星等网络安全公司都推出了相应的手机杀毒软件,功能比较完善。但是,由于手机杀毒软件开发需要的一些核心技术没有被手机系统开发商公布,以及程序调试难度大、手机病毒分析不够完善、通用性等方面的问题,仍然存在较多的弊端。

早期的Rootkits 主要是替换系统的二进制文件,这样可以通过Tripwire 和AIDE 等工具检查系统文件的完整性来判断。目前的Rootkits 在内核模式下运行,很容易规避用户模式下反病毒软件的检测,下面阐述其它一些检测思想。

4.1 虚拟化技术检测

虚拟化技术的主要目标是让用户能够拥有多重功能,例如同一个电话可供多个账户使用。虚拟化一个很大的特性是同等性:程序在虚拟机上运行时的行为和直接在本地硬件上运行时的行为相同。Rootkits 检测器利用这个特性,在一个单独的虚拟机中执行并监视智能手机操作系统的内存,从虚拟环境和物理环境差异性的角度进行检测,比较流行的有四种对比算法:TSC时间检测法、外部时间源检测法、基于时间的TLB 检测法和基于页面内容的TLB检测法。目前,不少商家在努力建设智能手机虚拟监视器,为在智能手机上实施Rootkits 检测提供可行的途径。需要注意的是,这类Rootkits 检测工具通常都采用计算密集型算法,定期获取并扫描受监视的操作系统内存,这有可能会流失大量电量,从而导致该类检测工具的实用性受到质疑,因此还需要开发智能手机检测相应的新型节能技术。

4.2 文件回调函数检测法

文件回调函数检测法是手机系统在发现文件系统变化后,由它提供给应用程序的一个信号。应用程序收到该信号就可以知道文件系统在哪里发生了变化,然后通过对比添加的文件是否具有病毒库中某个病毒的特征判断是否是Rootkits 程序。该方法的缺点是Rootkits种类繁多,不可能记录每一种Rootkits(特别是新出现的Rootkits)的特征信息,容易出现漏判。

4.3 辅助手段

针对智能手机的某些特性,可采用以下手段来辅助检测:

1)检查手机系统开机和关机配置文件。Rootkits 很可能通过这两种配置文件来长期驻留于手机系统中。

2)检查手机电池的使用情况。智能手机Rootkits 在操作各手机硬件完成攻击的同时,势必会大幅度降低手机电池使用时间。

3)查询话费详单。重点排查其中频繁出现的陌生号码。无论多么高超的手机Rootkits 技术,只要攻击者尝试从远程控制目标手机,都无法改变基站中留下的通讯记录,而这些记录可以通过话费详单来体现。

5 总结与展望

通过分析智能手机中Rootkits 技术原理,并以此为基础,对其预防和检测方法进行了一定程度的讨论。随着3G时代的来临,手机支持电子商务、电子支付、股票交易等增值业务的广泛应用,黑客已经把目光锁定到智能手机上。即使像Android 这类具有强大技术背景支持的智能手机操作系统,同样可能被安装内核级Rootkits,实施各种攻击行为。因此手机用户、手机厂商都应该对智能手机的安全予以足够的重视,及时升级软硬件系统,弥补各种系统漏洞,不断采用更为高效、全面、节能的检测技术,才有可能减少Rootkits 带来的危害。未来智能手机中的Rootkits 技术将会越来越趋向于多样化、隐蔽化、底层化和顽固化,其检测技术也势必变得更加复杂,只有不断加强对Rootkits技术原理的研究,综合利用各类检测手段,才能准确地检测出恶意软件的存在。

[1]Duanwx131.智能手机[EB/OL].http://baike.baidu.com/view/535.htm.

[2]郑昌兴.手机病毒防治方法及其发展趋势分析[J].信息技术,2010(2):122-124.

[3]姜楠,王健.手机病毒与防护[J].计算机安全,2004(12):58-61.

[4]Jeffrey Bickford.Rootkits 技术:智能手机的攻击与启示[J].黑客防线,2010(2):57-63.

[5]王继刚.手机病毒大曝光[M].西安:西安交通大学出版社,2009:55-57.

[6]陈华亭.基于LKM的Rootkit 技术[J].计算机工程与科学,2004,26(2):89-90.

[7]袁源,戴冠中.LKM 后门综述[J].计算机科学,2008,35(7):5-8.

猜你喜欢

字符串内核智能手机
智能手机是座矿
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
基于文本挖掘的语词典研究
Linux内核mmap保护机制研究
假如我是一部智能手机
热门智能手机应用
最简单的排序算法(续)
智能手机
一种新的基于对称性的字符串相似性处理算法