本文章由Jack_Jia编写,转载请注明出处。
文章链接:http://blog.csdn.net/jiazhijun/article/details/8660226
作者:Jack_Jia 邮箱:309zhijun@163.com


一、序言


到目前为止Android已被发现大量的提权漏洞,虽然这些提权漏洞随着系统版本的升级已被解决,但是市场上还存在着大量使用老版本系统的设备。提权漏洞在被合法
软件利用(比如一键Root工具)的同时也被大量恶意软件利用,恶意软件可以利用这些提权漏洞获取系统Root权限,这样就可以在您不知情的情况下,后台静默下载安装
软件,发送付费短信,上传隐私信息等恶意行为。
用户如何检测自己设备是否存在已知提权漏洞呢?
X-Ray就是一个检测Android系统中是否存在已知提权漏洞的软件。目前支持对8种漏洞的检测。
X-Ray下载地址:http://www.xray.io/
本文将对X-Ray扫描漏洞原理进行分析。

二、软件信息


MD5:D25F41F9E077C85B5F81F1A4C36E736F

package name: com.duosecurity.xray




三、分析检测原理


部分Android提权漏洞是一定需要执行在ELF文件中的。ELF文件就是关键的查找点。


1、安装包中是否存在ELF文件?

经观察程序安装包中并不存在ELF文件。


2、ELF文件是否在运行过程中动态下载?

运行程序,执行检测任务后,观察程序文件夹变化,发现程序文件夹并没有新增文件。


3、ELF文件是否在动态下载执行后被程序自动删除?

搜索Smali代码,查找删除文件操作,发现程序调用

invoke-virtual {v0, v2}, Lcom/duosecurity/xray/XRAY;->deleteFile(Ljava/lang/String;)Z。

删除该段代码,重新打包签名后,运行程序后,观察程序文件夹变化,发现files文件夹新增如下文件:



从文件名即可看出,这些ELF文件用于不同的Android提权漏洞检测。如果需要看懂这些ELF文件,需对Android不同提权漏洞有所了解,这里不在对提权漏洞原理进行进一步解释。

通过对Log信息及代码的进一步分析,可以获知X-Ray扫描逻辑如下:

1、联网获取漏洞信息,漏洞信息包含客户端处理检测漏洞的方式

D/xray    (28458): *********** BOOTSTRAP RESPONSE ***********D/xray    (28458): latest_probes: 10D/xray    (28458): latest_app_version: 3D/xray    (28458): latest_app_uri: /xray/static/XRAY-1.0.apkD/xray    (28458): **************************************D/xray    (28458): probeupdate: trying request 1 of 3D/dalvikvm(28458): GC_CONCURRENT freed 257K, 48% free 3259K/6151K, external 481K/993K, paused 2ms+2msD/xray    (28458): *********** UPDATE PROBE RESPONSE ***********D/xray    (28458): id: zimperlichD/xray    (28458): type: staticD/xray    (28458): name: ZimperlichD/xray    (28458): query_url: /xray/zimperlich/queryD/xray    (28458): probe_url: /xray/zimperlich/probeD/xray    (28458): result_url:D/xray    (28458): static_payload: /system/lib/libdvm.soD/xray    (28458): dynamic_slot:D/xray    (28458): dynamic_payload:D/xray    (28458): dynamic_signature:D/xray    (28458): ********************************************D/xray    (28458): id: gingerbreakD/xray    (28458): type: staticD/xray    (28458): name: GingerbreakD/xray    (28458): query_url: /xray/gingerbreak/queryD/xray    (28458): probe_url: /xray/gingerbreak/probeD/xray    (28458): result_url:D/xray    (28458): static_payload: /system/bin/voldD/xray    (28458): dynamic_slot:D/xray    (28458): dynamic_payload:D/xray    (28458): dynamic_signature:D/xray    (28458): ********************************************D/xray    (28458): id: zergrushD/xray    (28458): type: staticD/xray    (28458): name: ZergRushD/xray    (28458): query_url: /xray/zergrush/queryD/xray    (28458): probe_url: /xray/zergrush/probeD/xray    (28458): result_url:D/xray    (28458): static_payload: /system/lib/libsysutils.soD/xray    (28458): dynamic_slot:D/xray    (28458): dynamic_payload:D/xray    (28458): dynamic_signature:D/xray    (28458): ********************************************D/xray    (28458): id: ashmemD/xray    (28458): type: dynamicD/xray    (28458): name: ASHMEMD/xray    (28458): query_url:D/xray    (28458): probe_url:D/xray    (28458): result_url: /xray/ashmem/resultD/xray    (28458): static_payload:D/xray    (28458): dynamic_slot: 01D/xray    (28458): dynamic_payload: /xray/static/libashmem_v1.soD/xray    (28458): dynamic_signature: H+4S6nSomTdUnqUfDKZltq2Mm51VbQ2jnhbzstZ7bzt2dSQU7H6+BefWgCId1b8gKYdDJrQk5FJ/6OWASVhS7FhNpH6HTN3ieeFbDIX9XYqFmBCzTj5ObFf2yIcQt9JAB3sP/wm7oqzktuX4N2/n+4jmaUOj7HUOgQimDPB9qK4m866+ScIVXiwZHmR6oaLgr8eJVm9uiOLem/DOhcGMsxSEuFY/6mZPrqMKfXPVP2gUsMPbjY1JAHnCD7yUXlCU2Jby18HvOH15fo6hkcEhIg1/FvTj+tvHmY64ckKhQdEOOYaBv/Nv2AABMglPQoj/89ntsc7nN1V0qg64u6JJtg==D/xray    (28458): ********************************************D/xray    (28458): id: mempodroidD/xray    (28458): type: dynamicD/xray    (28458): name: MempodroidD/xray    (28458): query_url:D/xray    (28458): probe_url:D/xray    (28458): result_url: /xray/mempodroid/resultD/xray    (28458): static_payload:D/xray    (28458): dynamic_slot: 02D/xray    (28458): dynamic_payload: /xray/static/libmempodroid_v1.soD/xray    (28458): dynamic_signature: P9VL0j2UbuB94WA6gF9XuAmtEUQmPDOWyxDJDQR9wmIbGq1ixThNSl7bnG1rgVpj9M/AgAzxon4umr3FMQV3fLjmZG2QTbNFF7O622G2ssLxeBsCAH/9YC4b9RxVRBQP8cV5B078d+4DHmeOv6ey23omsIwMFoKhXnRHnyU4FhtWpA9rT1Bu2d5RCOkuu8HM+qu2w+ZqWlJlnVIMQUbdfDS4YjVpjjS84hloES/wFPGOh/K2NZe1VhKGLhoIDWt6ROQCcG8bZ3hTYTq91JlCp+wqdV/D9XufKbBZVuZ5S7LcwZg/nYtLeXY6On4CcGji4Uu0B8E7ymP+u7e+mUgCWQ==D/xray    (28458): ********************************************D/xray    (28458): id: levitatorD/xray    (28458): type: dynamicD/xray    (28458): name: LevitatorD/xray    (28458): query_url:D/xray    (28458): probe_url:D/xray    (28458): result_url: /xray/levitator/resultD/xray    (28458): static_payload:D/xray    (28458): dynamic_slot: 03D/xray    (28458): dynamic_payload: /xray/static/liblevitator_v1.soD/xray    (28458): dynamic_signature: NNAPZiBOcZ6O1lPRVcjNzNpeLMvoVUnP1j9PFr/1cG00fju7lqJEKBcGtqgiz+4/hF8w0xKndvJ4NSq1ResiukET7vt6tuY/n1nT6FxrE+e/+06JhFMkX5S+BrOV5hMMqsXzzWc9oE+DFhOFxkcDt6R9HeZQePaa5wYnpMSsQHD7EZ6qzCen6PrHm+0q5F0xelmiahx3njSGP2eg8TbKl6zhvzhW4SIaz8h9ZxRqBZHH43aWiXbc/nnttjABfvyvLle3fOJxFaYFp84bOW36bXF33fkDoLegmlSQv3sWnaugefcPsWIzgvH3O3/iLxJtrzXdGf4zZbzekV2sFY028w==D/xray    (28458): ********************************************D/xray    (28458): id: exploidD/xray    (28458): type: dynamicD/xray    (28458): name: ExploidD/xray    (28458): query_url:D/xray    (28458): probe_url:D/xray    (28458): result_url: /xray/exploid/resultD/xray    (28458): static_payload:D/xray    (28458): dynamic_slot: 04D/xray    (28458): dynamic_payload: /xray/static/libexploid_v1.soD/xray    (28458): dynamic_signature: nBNyRJ0n3y6LSFM7SysnaYl58LKL0PYvgsukRWa+Q2QSr+0IWDgSidUSlMtG8pKnsTTuEKcCxw4xmTGAyZVH/do5/hCwa2hWnJ+4IwLtc5hwZDVTCjPYypOeXV287gq79cbM/zIthy0VAkoBW6bYTYfGgqvNBOq/cEu0HgWkgSeCnD6ML9svZUhXGmva8z71mTucvoMBkPs3Ft8eLmxumZjuB+kni01jhQD9N7u6jfPLbQmZUqxT47a9bSoFYJlVNQKL0U/xPGWuXHGhnZs/K55s2A3r2aB6vNHXCV3C16tDm5KL0aSS+zU3TuBFTUQzRoVjZwDjJpdd4KRzPGOGpg==D/xray    (28458): ********************************************D/xray    (28458): id: wunderbarD/xray    (28458): type: dynamicD/xray    (28458): name: WunderbarD/xray    (28458): query_url:D/xray    (28458): probe_url:D/xray    (28458): result_url: /xray/wunderbar/resultD/xray    (28458): static_payload:D/xray    (28458): dynamic_slot: 05D/xray    (28458): dynamic_payload: /xray/static/libwunderbar_v1.soD/xray    (28458): dynamic_signature: wqSKs7FCjCaFWqBixxV5IMW/qMBN+zSUpxix52Jw1mmjdbLOc0o6gevlRBuGN8txKdrCD7dBUkGkMuaAd8VpHxcWBSlmiYB8kh3j9gEluVwz3HK8i+bdOGfSnlswHdDg/aQlu+DezhyS7ajfiDELJ2xaBPapzgCRCUdGcu7RyJ2tUCWdvmBgvEyIsMhGrIUuVVklc8puJYLD3+2MVWy+BgFhGPDEpxujl/NNl0kVPVpQHngY1/hkrA3svDnpUyzeqAKqEZr7IF0e8B+I8LAS9P/ZejwM4vde/cLFs6ttfvtcYqFX+H0dqarDmDf11f6gaGnjxFMEXOAlBhqMJqN1vQ==D/xray    (28458): ********************************************D/xray    (28458): *********************************************

2、根据返回的不同漏洞类型,做如下处理,部分漏洞需要上传文件到服务器,通过服务器反汇编和特征匹配来确定是否存在漏洞。部分漏洞需要下载用于检测漏洞的可执行文件,然后运行以判断是否存在漏洞。


(1)上传发生漏洞文件的检测方式

D/xray    (28792): static: reading payload: /system/bin/voldD/xray    (28792): static: hashing payload: /system/bin/voldD/xray    (28792): static: gzip'ing payloadD/xray    (28792): static: base64'ing payloadD/xray    (28792): static: length of payload: 55892D/xray    (28792): static: length of gzip'ed payload: 31193D/xray    (28792): static: length of base64'ed payload: 41592D/xray    (28792): query: trying request 1 of 3

(2)下载检测漏洞的可执行文件的检测方式


D/xray    (28792): dynamic: trying request 1 of 3D/xray    (28792): dynamic: rsa signature verification succeededD/xray    (28792): dynamic: wrote lib to: liblevitator_v1.soD/xray    (28792): dynamic: loading jni from: /data/data/com.duosecurity.xray/files/liblevitator_v1.soD/xray    (28792): dynamic: loaded jni from: /data/data/com.duosecurity.xray/files/liblevitator_v1.soD/xray    (28792): dynamic: got result from probe: patched|can't open pvrsrvkm deviceD/xray    (28792): probe: trying request 1 of 3


更多相关文章

  1. android Android签名证书的sha1值报错 :不是内部或外部命令,也不是
  2. Android源码50例汇总,欢迎各位下载
  3. Android(安卓)Asynchronous Http Client-Android异步网络请求客
  4. android sdk, adt编译问题
  5. Android中如何实现圆形按钮的颜色变化
  6. android MediaPlayer深入分析
  7. 【Android浏览器插件开发准备工作之NPAPI】使用Visual Studio 20
  8. 破解Xamarin
  9. android 一键锁屏 开发

随机推荐

  1. css第一课
  2. css基础、选择器、模块化组件
  3. Oracle OCP 071中文考试题库-第14题
  4. Oracle监听
  5. 苹果Mac重复文件清理工具:Duplicate File
  6. Linux企业生产常见问题集合之一
  7. Jenkins+Maven+Svn实现代码自动打包与发
  8. cron计划任务
  9. AWS 大数据实战 Lab1 - 流数据处理(二)
  10. 使用dnf管理软件包