详解:流氓软件就这样强奸了我们!

|  阅读量 | 分类: IT业界 | 作者: 杰哥-松松编辑 | 时间:2016年03月08日 21:28
一台手机,简直就是出活生生的后宫剧,有人趋时附势,有人忠心耿耿,更有人想自立门户,各种各样的App慢慢占领了用户的手机。

在Android系统中,为了赚取更多的利益和眼球,各类App绞尽脑汁,想出了各种各样的方法来获取权限。虽然说,遭遇强奸时,如果你不能反抗,那就好好享受吧。然而事实并不是这样,现在的流氓软件,强奸用户就算了,稍不留意,用户就遭到惨无人道的轮奸,被App全家桶强占了手机。

那么说了这么多,现在的流氓App们到底是通过什么手段强行进驻用户设备的呢?一位浸淫Android系统多年的安全专家表示:要想实现App的静默安装,无疑需要取得Root权限。目前几乎每一家App厂商都掌握至少一种临时Root的方法。而这也成为了行业中的潜规则。

那么,什么是专家提到的临时Root呢?这就要从Root的原理说起了。

(以下内容有点啰嗦,想看结论的可以直接跳过)

在Android系统中,存在一个名为Su的程序,用来控制谁可以干什么不可以干什么。默认的Su程序运行时,需要验证实际的用户权限,只有Root和Shell级别用户才有权通过默认的Su程序运行Root权限的命令,当其他用户运行的时候均会返回错误。

对手机进行Root操作,实际上就相当于将默认的Su程序替换为第三方Su程序。这样,普通用户就可以利用Su程序,将自己的操作权限提升。实际上这种做法风险很大,一旦恶意软件在用户不知情的情况下利用Su程序对自己进行了提权操作,带来的将是灾难性的后果。所以,一般情况下手机Root之后都会有一个类似于“SuperSU”这样的程序来让用户决定谁可以获得最高权限。

其实就算设备Root之后,也不能真正让你的应用程序获得Root权限。这样的Root有些像Linux下的Sudo命令,在系统的Bin目录下放置一个具有Suid权限且属主是Root的Su程序,通过这个Su程序执行的命令就具有了Android Root权限。

了解了Root的原理之后,我们再来分析一下流氓软件是如何临时获取Root权限的。

上文中我们提到了替换系统默认的Su程序,在普通的用户权限下,想要替换Su文件并不是那么容易的一件事情。这需要用到2个工具和2个命令。

工具方面首先要用到鼎鼎大名的Busybox,把Busybox拷贝到普通用户有权限访问的目录下,然后对其赋予4755权限,就可以用来干很多事情了。

但Busybox不能直接提升权限,整个过程中起到核心作用的是Ratc这个程序,在很多一键Root包中都有他的身影,具体作用是Rooting在ADB中的Shell,利用了ADB源码部分内容实现了真正的提升权限。

一切准备就绪之后,流氓软件只需要使用Socket跟Java程序通讯,将需要Root权限才能运行的代码放置在预先编写的C++程序中,然后在Java程序中创建新的Su进程,设置C++程序作为参数1。启动后,流氓软件就可以通过Socket调用C++函数来执行它想要偷偷摸摸干的事情了。做完一切之后,只要将进程销毁,一切都会回到初始的样子。

就目前来说,还没有很好的办法来阻止流氓软件静默安装。虽然每一版Android系统都会发布安全补丁,但是补的没有漏的快,总有各种各样的漏洞被挖掘出来。由于安卓系统的碎片化,很多设备搭载的都是较低版本的Android系统,这也是导致全家桶泛滥的一个重要原因。

从理论上来讲,如果一个流氓App拿到了Root级别的权限后,它可以偷偷利用摄像头与麦克风,记录用户的所有行为然后上传至指定的服务器。想想看,作为一个普通用户,我们就像是剥光了衣服站在人前,被一个又一个龌龊的厂商轮流审视,这样的情景到底为什么会出现,非常值得每一个人去深思一下。

详解:流氓软件就这样强奸了我们! IT业界

来源: QQ/微信:lusongsong7 ,转载请注明出处!

本文地址: