Android平台Bootkit高级攻击技术-2017SyScan360
Android平台Bootkit高级攻击技术
{ 陈章琪& 申迪@SyScan360 2014
360 的安全研究员
关注Android平台的攻防技术和系统漏洞
逆向工程还不错
以前搞过一点Windows Rootkit
爱好是看球赛,主机游戏,学日语
自我介绍—— 申迪
自我介绍—— 陈章琪
Android手机内核、驱动开发
当前主要从事Android 内核漏洞分析和利用
证明boot分区易被感染的脆弱性
一套强兼容性的内核模块加载技术
Android Kernel Rootkit 实践
我们的目标
可以感染大多数手机的boot分区,难以清除
一个内核模块,兼容大多数手机
绕过了内核的限制
绕过了三星KNOX 的限制
绕过了小米等手机内核的代码段保护
Rootkit使所有恶意模块对于用户态隐藏
效果如何?
从Oldboot谈起
boot分区
存储安卓的boot image
Linux Kernel(zImage)
rootfs ramdisk(init.rd)
修改ramdisk 中的数据不会被写会boot分区
ramdisk 中包含init :第一个启动的进程
Bootloader -> Kernel -> init & init.rc
Oldboot
360在2013年首次发现
通过刷机渠道rom预装
360 已知的首个bootkit
篡改init.rc优先启动
专杀工具:/8FRVFqr
Oldboot.A
Oldboot.B
Oldboot给杀毒软件带来的挑战
恶意文件全部存储于ramdisk
需要root权限
无法借助文件系统直接删除
感染init.rc优先启动
早于杀毒软件启动
注入system_server,没有APK程序
很好检测,但难以清除
更多信息:
/8Fb4eOC
/Rv5NiQo
/360mobile/
安卓平台的木马将…
模块不再仅仅局限于Apk格式
反逆向工程
利用手机预装或者内核漏洞获取root权限
试图更早启动
更强的自我保护机制
更为隐蔽
高级bootkit攻击
{ 相对于oldboot更为高级的技术
也许可以比Oldboot更进一步
动态感染boot分区,无需预装到rom 中
利用LKM ,加载内核模块
在内核中完成自身的隐藏和保护
在开始之前,还需要……
获取root权限
可以利用一些较为通用的内核漏洞(CVE-2013-
2094,CVE-2013-6282, CVE-2014-0196, CVE-2014-
3153,etc)
大多数厂商修补内核漏洞很慢
绕过SELinux 的限制
将context切换到u:r:init:s0
这些技术不在本次议题的讨论范围之内
但欢迎交流
感染boot分区
{ 将恶意代码植入ramdisk
向boot分区植入代码
定位boot分区的块设备
解析boot分区的结构
感染boot分区的内容
重新将数据刷回boot分区
搜索boot分区的块设备
在/dev/block/platform/xxx/by-name/boot有一
个符号链接指向块设备对象
读取块设备开头的几个字节,有boot分区的
MAGIC :”ANDROID!”
根据这些特征,暴力搜索
搜索boot分区的块设备
解析boot分区的结构
** ++