一探小米Analytics后门 8090安适门户
按照 [The Hacker News]() 的报道,小米手机定制的ROM中存在后门,可以使得小米在用户的手机上静默安置任意APP。这个后门存在于预装的Analytics应用中,其在后台24小时运行,即便用户删除后任然会再次呈现。
恰好用的就是小米的手机,本着学习的态度,用了课余时间分析了一下,看看这个后门是咋回事。
二. 具体分析
通过小米手机的“设置”-> “其他应用打点”,在“全部 ”标签栏中可以检察系统中的全部应用,仔细找确实发明了名叫analytics的应用。
同时通过adb连接后,用ps命令也可以看到这个应用正在运行。
1
2
root@dior:/ # ps|grep "analytics"
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这样的名字,应该颠末了混淆措置惩罚惩罚。
然后看Manifest文件中的声明的权限和处事
此中有完全的网络访谒权限,可以直接安置应用,获到手机状态等。还设置了receiver在手机启动和网络状态转变时获得通知。
然后我通过JEB中Strings一栏查找一些可疑的字符串。发明了一个线程,在runnable接口中界说的run函数中有发送手机信息到长途处事器的行为。这个后来被证明也是后门的关键。
从代码中看到获取了imei,mac,package等信息,发送到[]()。
返回的是一个json格局的信息。此中关键的有url和md5字段。
我们接下去看看代码是怎么措置惩罚惩罚这个url和md5的。
1
2
3
g.a(this.B, v0_5.optString("md5"));
g.b(this.B, v4);
g.c(this.B).execute(this.B.bg);
通过`g.a`,`g.b`分袂将url和md5的值赋给`this.B`的成员变量,然后启动一个thread措置惩罚惩罚。
在这个thread中将上面的url去请求一个apk,将它下载到本地。本地生存的地点是自生的cache目录`/data/data/com.miui.analytics/cache/`。
不才载完后,还通过md5对下载的apk进行了校验。
但由于前面的请求是http,我们完全可以拦截改写url和md5的值,将url改写为本身处事器的地点,md5的值只要切合本身处事器中apk的md5即可。
然后通过“g.h(this.B)”安置。最后安置apk的代码就是挪用PackageManager进行安置。
可见,代码中虽然通过md5对下载的apk进行了校验,查抄了下载apk文件的完整性,但没有查抄签名的有效性,如是不是小米的签名。
此外,由于之前的http不安适的传输,使得可以篡改url和md5的值,使得系统按照一个指向我们处事器的url下载恶意的apk,并被安置。
上面的这个过程在系统启动后,网络状态转变,手机唤醒时,城市产生。
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/13006.html