Android的使用已经越来越广泛,与传统的PC操作系统相比Android存在自己的特点。一方面Android运行在手机终端上,手机是人们会随身携带的,而且手机也作为通讯的主要方式,因此通过手机可以获得更多的个人隐私。另一方面Android不会运行在服务器上,Android设备也可以通过3G与Internet连接,传统的IDS对Android木马的影响会减小很多。
本文从传统木马的角度,分不同方面对未来的Android木马进行“妄想”,讨论可能在未来出现的Android木马技术。
1、 感染:
Android不会运行在服务器上,意味着Android没有必要拥有一个独立的IP地址,因此对Android的直接攻击只能应用在局域网中,而且Android设备只会连接在无线路由上,对无线路由外部是不可见的,因此对Android设备进行直接的攻击(远程溢出,欺骗等等)的可能性很小。
然而随着Android的普及,Android在网络上的流量越来越大,也就是说用户通过Android上网的可能性越来越大,因此以后对Android的攻击应该更偏向于网页挂马。网页挂马需要另一个重要因素就是漏洞,如果浏览器没有漏洞,挂马是无法实现的,而在Android漏洞挖掘这方面,各种技术还不太成熟,Android的虚拟机的安全性也很好,Android浏览器出现漏洞的可能性较小。当然还有另外一方面就是诱骗用户安全木马,现在Android平台的软件市场混乱,安全审查也不严格,而且目前Android木马的传播也大多是分布在市场上或者论坛上诱导用户手动安装。
2、 提权:
Android以及其他移动终端操作系统的应用程序权限都很低,虽然很多Android设备会越狱获得root权限,但是为了得到更大的覆盖面积,木马还是需要配备提权的功能,这就极大的依赖着提权漏洞的出现,提权漏洞就像是iOS上的越狱漏洞一样珍贵和强大。
3、 运行方式
在我的上一篇文章中,已经探讨了Android的安全软件可以运行在三个层面,Java,nativeC和Kernel级别,同样的恶意代码也可以运行在这三个层面上。目前已经出现的Android木马大多运行在Java层上,它像普通的app一样,但是实现了一些手机用户隐私等恶意功能。但前段时间出现的Android BootKit确实夺人眼球,这种BootKit应该是运行在NativeC层面,但是一次获取root权限后,重新启动不必重新获取root权限,这些稍后探讨。
4、 自启动
自启动在木马中起着很大的作用,如果实现了自启动,不仅可以每次自动运行代码,如果启动时机很早,还可以拥有root权限并干掉其他安全软件。
劫持系统NativeC级应用程序,例如.so等,上面提到的Android BootKit就是通过这种方式实现自启动,在系统没有完全启动完成的时候,BootKit就已经获得了CPU,由于是劫持系统.so等,所以运行时已经拥有root权限,此时执行二进制完成恶意功能。
另外可以大胆妄想另外一种更加厉害的BootKit,其实手机也有Bootloader,对应于普通PC的Bios,现在少数几款手机的Bootloader已经被破解,例如HTC HD2,它最初运行Windows Mobile系统,在破解Bootloader后,可以引导启动Android,WP7,WM,megoo,甚至linux。如果将自启动代码感染bootloader,那么就可以在Android启动之前运行恶意代码,提前进一步感染Android本身,最终化身rootkit运行在Kernel层。另一个更好的理由是,即使用户刷机,也不会将恶意代码抹去,除非用户冲刷bootloader,恶意代码永远存在。在普通PC已经使用类似技术实现了BootKit,例如感染BIOS等任何可以在操作系统加载前执行的代码。
5、 隐藏
Java层的木马隐藏可以通过只将自身作为一个Service存在,通过BroadcastReciver实现自启动,这应该也是大多数Android木马的实现方式。
Kernel层木马的隐藏可以通过现存的Linux木马的隐藏技术实现。
6、 通信
目前PC上木马的通信多种多样,之所以这样是为了躲过IDS的审查,思路大多为伪装成另外一种正常的通信协议,甚至伪装成不是用来作为通信的协议,例如ICMP。
而在Android平台上通信的实现应该PC平台类似。
以上是我在Android木马方面的“妄想”,鄙人水平有限,有很多不完善之处,妄想难免天真,望谅解。
更多Android相关信息见Android 专题页面 ?tid=11