技术控

    今日:128| 主题:57984
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 【技术分享】一探小米Analytics后门

[复制链接]
情不自禁的想你 投递于 2016-10-3 14:37:14
428 2

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-1-技术控-ffffffff,小米手机,在线投稿,system,技术

   作者: ju4n010
  稿费:500RMB(不服你也来投稿啊!)

  投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

  一.前言
   根据 [The Hacker News](  http://thehackernews.com/2016/09/xiaomi-android-backdoor.html  ) 的报道,小米手机定制的ROM中存在后门,可以使得小米在用户的手机上静默安装任意APP。这个后门存在于预装的Analytics应用中,其在后台24小时运行,即便用户删除后任然会再次出现。
  刚好用的就是小米的手机,本着学习的态度,用了课余时间分析了一下,看看这个后门是咋回事。
  二. 具体分析
  通过小米手机的“设置”-> “其他应用管理”,在“全部 ”标签栏中可以查看系统中的全部应用,仔细找确实发现了名叫analytics的应用。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-2-技术控-ffffffff,小米手机,在线投稿,system,技术

  同时通过adb连接后,用ps命令也可以看到这个应用正在运行。
  1. [email protected]:/ # ps|grep "analytics"
  2. u0_a75    1711  218   516248 39860 ffffffff 400d68b8 S com.miui.analytics
复制代码
由于这个应用是预装的系统应用,然后通过`adb pull`将`/system/app`目录中的AnalyticsCore.apk拿出来,这样就可以反编译apk文件看看这个应用到底做了什么,是不是真的有后门?
  由于apk文件也是一个zip结构的文件,我先用7zip打开看了一下,发现没有使用linux so文件,也就是都是java层的代码,没有native的。这样直接用JEB分析吧。
  用JEB打开后看到,一些包中的类名和方法都是a,b,c这样的名字,应该经过了混淆处理。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-3-技术控-ffffffff,小米手机,在线投稿,system,技术

  然后看Manifest文件中的声明的权限和服务
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-4-技术控-ffffffff,小米手机,在线投稿,system,技术

  其中有完全的网络访问权限,可以直接安装应用,获得手机状态等。还设置了receiver在手机启动和网络状态改变时获得通知。
  然后我通过JEB中Strings一栏查找一些可疑的字符串。发现了一个线程,在runnable接口中定义的run函数中有发送手机信息到远程服务器的行为。这个后来被证明也是后门的关键。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-5-技术控-ffffffff,小米手机,在线投稿,system,技术

  从代码中看到获取了imei,mac,package等信息,发送到[http://sdkconfig.ad.xiaomi.com/api/checkupdate/lastusefulversion](http://sdkconfig.ad.xiaomi.com/api/checkupdate/lastusefulversion)。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-6-技术控-ffffffff,小米手机,在线投稿,system,技术

  返回的是一个json格式的信息。其中关键的有url和md5字段。
  我们接下去看看代码是怎么处理这个url和md5的。
  1. g.a(this.B, v0_5.optString("md5"));
  2. g.b(this.B, v4);
  3. g.c(this.B).execute(this.B.bg);
复制代码
通过`g.a`,`g.b`分别将url和md5的值赋给`this.B`的成员变量,然后启动一个thread处理。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-7-技术控-ffffffff,小米手机,在线投稿,system,技术

  在这个thread中将上面的url去请求一个apk,将它下载到本地。本地保存的地址是自生的cache目录`/data/data/com.miui.analytics/cache/`。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-8-技术控-ffffffff,小米手机,在线投稿,system,技术

  在下载完后,还通过md5对下载的apk进行了校验。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-9-技术控-ffffffff,小米手机,在线投稿,system,技术

  但由于前面的请求是http,我们完全可以拦截改写url和md5的值,将url改写为自己服务器的地址,md5的值只要符合自己服务器中apk的md5即可。
  然后通过“g.h(this.B)”安装。最后安装apk的代码就是调用PackageManager进行安装。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-10-技术控-ffffffff,小米手机,在线投稿,system,技术

  可见,代码中虽然通过md5对下载的apk进行了校验,检查了下载apk文件的完整性,但没有检查签名的有效性,如是不是小米的签名。
  另外,由于之前的http不安全的传输,使得可以篡改url和md5的值,使得系统根据一个指向我们服务器的url下载恶意的apk,并被安装。
  上面的这个过程在系统启动后,网络状态改变,手机唤醒时,都会发生。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-11-技术控-ffffffff,小米手机,在线投稿,system,技术

  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-12-技术控-ffffffff,小米手机,在线投稿,system,技术

  只要满足下面的条件,即每每隔24小时触发一次。将上次检查的时间记录在updater.xml文件中。
  

【技术分享】一探小米Analytics后门

【技术分享】一探小米Analytics后门-13-技术控-ffffffff,小米手机,在线投稿,system,技术

  那么我们改写updater.xml文件中的updateTime值,让时间间隔大于24小时,通过抓包可以很明显的看到此现象。通过中间人攻击可以安装上自己的apk。
  1. [email protected]:/data/data/com.miui.analytics # cd shared_prefs
  2. [email protected]:/data/data/com.miui.analytics/shared_prefs # cat updater.xml
  3. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
  4. <map>
  5.     <long name="updateTime" value="1475032517252" />
  6. </map>
复制代码
三. 总结
  通过分析,这个“后门”可以实现静默安装任意apk。按更确切的是一个漏洞,有两个关键的缺陷,一是不安全的传输,使用http传输更新关键数据。二是虽然通过md5检查了完整性,但没有检查签名的有效性,确认是小米的签名。
  从功能上看,这个analytics更多的是分析数据,应该是小米用于增强用户体验的,但在更新部分的缺陷给了hacker可乘之机。当然是不是故意留下的,大家各自评说吧。
  本文由 安全客 原创发布,如需转载请注明来源及本文地址。
  本文地址:http://bobao.360.cn/learning/detail/3078.html



上一篇:Understanding "This" in JavaScript
下一篇:ImageMagick命令执行漏洞浅析
曼青 投递于 2016-10-3 17:21:38
冷艳高贵接地气
回复 支持 反对

使用道具 举报

江南 投递于 2016-10-22 11:17:38
男人嘴巴眯眯甜心都一把苣苣莲!
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表