从“窃听门”事件解读手机Rootkit攻击

在今年五月讲述了手机流氓软件危害与防治(http://chenguang.blog.51cto.com/350944/557191)文章后,收到了网友的广泛关注,此文为揭示手机后门的又一力作。
最近《世界新闻报》因深陷“窃听门”而被迫关闭,一幕幕窃听丑闻被公之于众,并引一系列不良连锁反应,各国政界名流、影视明星等纷纷自危。所谓“窃听门”就是雇佣私人侦探、用窃听电话的非法手段获取内幕新闻。现在公众们质疑手机安全的呼声越来越大。无独有偶的是苹果手机利用后台隐蔽程序后台收集数据 用户行踪轻易易被泄露, Alasdair Allan和Pete Warden两名程序员发现,其操作系统里有个Consolidated.db是一个缓存文件,其中保存了用户行踪的信息,而且在处理这些数据时,苹果也并未采用任何加密措施,也就是说能轻易被其他人截获。
  实际上这种潜伏在手机中的卧底软件我们叫它Rootkit,它是最早来源于计算机系统。在1994年2月的一篇安全咨询报告中首先使用了Rootkit这个名词。这种程序的出现立刻引起计算机安全人员的注意,无论是做恶意行为的攻击者,还是进行安全监视的维护人员,这种能够“隐身”运行的程序都是一个非常好的解决办法。由于Rootkit使用了多种复合技术,使其不被传统安全软件检测出,相比于桌面操作系统平台,移动手机平台上的安全软件严重匮乏,加上垃圾短信和浏览有安全隐患的网站致使手机会频繁“中招”, 对监听者而言现在的智能手机是极佳的目标。它既能打电话又能访问互联网络。这样恶意软件编写者就更加注视对智能手机的攻击,也正是由于Rootkit程序可以成功地将自己隐藏于系统之中,为此,它必须与运行的操作系统紧密相连,利用一些十分底层的核心技术来实现“隐身”。利用这些技术的时候,往往需要程序运行时具有系统最高权限,这样Rootkit程序就具有了最高权限。
  一、Rootkit的危害
  对于任何的手机病毒程序来说,它首先需要成功地将自己存储在被感染的手机存储器上,也就是手机自带的内存或者存储卡。如果被感染的目标手机系统上安装有杀毒软件或者安全软件,这些软件往往会带有对手机文件系统监视的功能。当手机上的存储器中的文件数目发生变化的时候,这些软件就会马上发现这种变化,进和VJ自己到被感染手机的存储器上时,杀毒软件或者安全软件发现此时的手机文件系统正在创建一个新的文件,它们就会马上启动扫描程序,扫描程序开始检查这个新的文件是不是一个病毒程序,如果是,那么病毒刚刚复制完毕自己到手机上时,它就会被杀毒软件或者安全软件删除了,根本不可能得到运行的机会。
  然而,杀毒软件以及安全软件的这种文件系统监视功能,在一般情况下,会存在一个时间差。手机系统公布出来的一些系统函数或者方法由于一定的经济利益以及安全限制,并没有将系统底层的核心技术公布出来,当杀毒软件以及安全软件的开发者采用这些“不完整”的系统函数或者方法开发软件的时候,这些被开发出来的功能很可能就不够反应迅速,存在一定的弊端。例如对于Symbian系统使用的一些文件系统监视方法,它就会有一定的延迟。
  并且对于杀毒软件以及安全软件来说,病毒的种类千差万别,不可能对每一种新出现的病毒程序都有特征记录,于是病毒程序还是能够成功创建自己到目标手机的存储器上。到了这一步,一般的病毒程序就开始运行自己,然后进行工作。但是,对Rootkit程序来说,它的情况就与众不同了。Rootkit程序最核心的目的就是在于能够利用手机系统的底层技术,来达到一些“高级”的目的。这其中,隐藏自己的存在就是一个高级目的。
  很多时候,手机的使用者会检查自己的手机状态,例如他会看看自己的手机究竞存放了哪些文件,如果没用或者没见过,他就会删除这些他认为是“垃圾”的文件。而对于杀毒软件以及安全软件来说,它们很可能会进行定期扫描,例如在每天的12点对手机内存上的所有文件进行一次扫描,目的是发现可能存在的病毒程序。这些情况往往会导致一些病毒程序会被发现,不能够继续工作。那么,如果一个病毒程序采用了某种技术,将自己从手机上的文件系统上“隐藏”起来,让手机使用者以及手机杀毒软件乎全软件都无法发现自己,那么病毒程序就可以为所欲为的进行破坏与感染了。Rootkit就是这样一种可怕的病毒程序。
  在设计手机系统时,很可能也采用了一些未公开的方法来实现一些特殊目的,通常这些方法都是极其保密的。但是,对于手机病毒的制造者来说,他们会深入分析手机系统的内部实现原理,从而找出这些未公开的方法。这些未公开的方法中很可能就涉及到文件系统的一些底层技术。Rootkit将这些文件系统的底层技术利用起来,让自己从系统中“消失”,甚至会迷惑了手机系统本身。
  二、现代智能手机攻击案例分析
  攻击1:通过GSM监视通话信息
  本次攻击的目标是让远程攻击者隐蔽地监听或记录用感染Rootkit的智能手机进行通话的隐私数据。无论何时只要发生Rootkit感兴趣的事件,Rootkit就会激活。例如,当受害者智能手机的日历程序显示备注时(如会议),Rootkit可能就会激发恶意操作。当Rootkit激活时,它会悄悄地拨打攻击者的电话(这个可预先在Rootkit程序中设置,或者通过攻击者发送的短信发送给Rootkit程序),这样攻击者就可以远程监听或记录当前通话信息。另外,当受害者拨打电话时,Rootkit也会激活,从而记录通话信息。Freerunner手机配有通过串行总线连接的GSM收音机,因此其可作为串行设备用于应用程序。在正常的手机操作中,用户空间应用程序将请求访问GSM设备的系统调用发送给系统内核。内核响应该请求,反过来应用程序也能够访问该设备提供的通讯功能。GSM设备使用一系列AT (attention)命令.其使得内核和用户空间应用程序调用特定的GSM 功能。例如,GSM设备通常支持AT命令拨打电话、获取SMS消息等功能。为了恶意操作GSM设备(例如,给远程攻击者打电话).Rootkit程序必须从内核执行AT命令。Rootkit程序原型是通过拦截用户设置的警报来运行。如图1显示,警报可与用户空间日历程序中的关键字“会议相关联。一旦检测到会议 关键字.则警报激活,Rootkit就会拦截此警报并进行恶意攻击。攻击程序则悄悄地拨打远程攻击者电话,这样攻击者就能窥探或记录受害者的秘密通信信息。Rootkit拨打的电话号码可能通过程序写入Rootkit代码,也可能通过短信发送,Rootkit截取该短信并获取攻击者号码(在攻击2描述了基于短信的Rootkit控制)。

650) this.width=650;" border="0" alt="104816304.jpg" src="http://img1.51cto.com/attachment/201109/104816304.jpg" />

图2 GSM Rootkit拦截报警信号,如会议通知,并向攻击者发送信息以监听通话隐私Rootkit触发。Rootkit必须有能力拦截报警信号(如来自日历程序的警报)才能触Rootkit。Rootkit程序通过hook系统调用表和用Rootkit恶意写操作地址替换真实写操作系统调用地址来达到此目的。当报警信号发出时,屏幕上将显示具体的消息。Rootkit程序中恶意写操作拦截显示在屏幕上的消息,并检查三个子字符串。首先检查消息中的“window Prop子字符串,该字符串显示当前消息为通知类型。然后,检查是否存在 Clock“子字符串该字符串用来验证消息是否来自时钟程序(更多字符串用于检查其它用户空间程序的警报)。最后,必须出现NETWM TYPE子字符串,此字符串出现代表产生了报警信号。通过研究未感染内核中的警报发送给方式,研究人员了解到这些字符串的重要意义。

  拨打电话,当Rootkit激活时.其会模拟用户空间通信应用程序拨打电话。特别是像Qtopia软件这样的用户空间,应用程序会向内核发送一系列系统调用,该软件栈与Freerunner手机的OpenMoko Linux分发版一起发送。这些系统调用启动GSM设备,并指示其拨打指定号码。具体来说,像Qtopia这样的应用程序利用写操作系统调用给GSM设备发送AT命令(这些命令为参数),所要拨打的电话也可作为系统调用参数。Rootkit程序通过发送与内核AT命令相同的序列来达到同样的目的。

  通过研究Qtopia软件栈.我们获得了必须用来拨打电话的AT调用序列。当拨打电话时 我们使用strace方法跟踪Qtopia发送的写操作系统调用的参数。然后,我们设计了一个激活后,能发送与内核空间AT命令相同序列的Rootkit程序。为了发出与AT调用相同的序列,Rootkit首先使用下代码所示的get fs/set fs调用序列,并修改数据段边界来指向内核寻址空间而不是指向用户寻址空间。get fs/set fs序列允许内核从内核模式中发出系统调用(如代码所示的sysopen sys write and sys close调用)。当发出系统调用后,Linux内核首先要确保调用的参数在用户空间应用程序的虚拟地址空间范围之内。

本文出自 “李晨光原创技术博客” 博客,转载请与作者联系!

从“窃听门”事件解读手机Rootkit攻击的更多相关文章

  1. 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备

    安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...

  2. Touch事件or手机卫士面试题整理回答(二)

    Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEve ...

  3. JavaScript 浏览器事件解读

    1. 事件基本概念 事件是指在文档或者浏览器中发生的一些特定交互瞬间,比如打开某一个网页,浏览器加载完成后会触发 load 事件,当鼠标悬浮于某一个元素上时会触发 hover 事件,当鼠标点击某一个元 ...

  4. 最详细的JavaScript和事件解读

    与浏览器进行交互的时候浏览器就会触发各种事件.比如当我们打开某一个网页的时候,浏览器加载完成了这个网页,就会触发一个 load 事件:当我们点击页面中的某一个“地方”,浏览器就会在那个“地方”触发一个 ...

  5. 利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

    摇一摇JS脚本逻辑:接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (win ...

  6. Metasploit对安卓手机的攻击

    首先要kali进行内网穿透,可参考http://www.cnblogs.com/sch01ar/p/7562954.html 首先生成一个apk木马 命令:msfvenom -p android/me ...

  7. Linux智能手机安全策略研究

    Linux智能手机安全策略研究 http://www.zdnet.com.cn    本文是继从“窃听门”事件解读手机Rootkit攻击(http://chenguang.blog.51cto.com ...

  8. Security+学习笔记

    第二章 风险分析 风险管理 评估:确定并评估系统中存在的风险 分析:分析风险对系统产生的潜在影响 响应:规划如何响应风险的策略 缓解: 缓解风险对未来安全造成的不良影响 风险分析流程 资产确定 漏洞确 ...

  9. DDos攻击竟然这么恐怖,它的原理是什么?

    DDOS的定义 分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击, ...

随机推荐

  1. 七 HBase表结构设计

      表结构设计之  高表  与 宽表 选择       HBase 中的表可以设计为高表(tall-narrow table) 和 宽表(flat-wide table).         高表 : ...

  2. Chrome无界面浏览模式与自定义插件加载问题

    环境:Python 3.5.x + Selenium 3.4.3 + Chromedriver 2.30 + Chrome 60 beta或Chromium Canary 61 + WIN10 Chr ...

  3. [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose

    This lesson takes the concept of render props and migrates it over to streaming props by keeping the ...

  4. Java编程手冊-Collection框架(下)

    建议先看Java编程手冊-Collection框架(上) 5.  Set<E>接口与实现 Set<E>接口表示一个数学的集合,它不同意元素的反复,仅仅能包括一个null元素. ...

  5. Delphi新语法 For ..In

    首先我们要知道哪些类型可以用For In吧,下面就是: for Element in ArrayExpr do Stmt;      数组 for Element in StringExpr do S ...

  6. FPGA主要应用

    FPGA主要应用: 1.逻辑控制(逻辑接口领域) 传统方向,主要用于通信设备的高速接口电路设计,用FPGA处理高速接口的协议,并完成高速的数据收发和交换.FPGA最初以及到目前最广的应用就是在通信领域 ...

  7. NET Remoting原理及应用

    .NET Remoting原理及应用实例: Remoting:(本文摘自百度百科) 简介:        什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方 式.从微软的产品角度来看 ...

  8. Google Summer of Code 2017 经验谈

    Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 ...

  9. codeforces 357C Knight Tournament(set)

    Description Hooray! Berl II, the king of Berland is making a knight tournament. The king has already ...

  10. C# MVC js 跨域

    js 跨域: 第一种解决方案(服务端解决跨域问题): 跨域是浏览器的一种安全策略,是浏览器自身做的限制,不允许用户访问不同域名或端口或协议的网站数据. 只有域名(主域名[一级域名]和二级域名).端口号 ...