0x1 引子

国庆要放假,我刚坐上回家的火车,突然看到群里在转发这个事情,说是很多学校都沦陷了,惊了,怎么好端端的就沦陷了呢,这是怎么回事:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

 

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

看到如此惨状,我不禁思考,是什么逼他用武力了结自己手机的生命。和师傅们了解到了情况,原来是各高校学生群中在传播一个名为送给最好的TA.apk的Android手机应用,说是安装了这个应用后,手机会发出巨大不可名状的声音,还关不掉。据说还有人在课堂上中招了(一看就没有好好听课啊喂),此时的我在车上也想看看这个程序究竟是何方神圣,却发现有的师傅已经开始分析了:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

很气,损害私有财产、窃取个人数据这么恶劣的行为,竟然有人在祖国即将庆祝诞辰之际肆意传播,就是赤裸裸的挑衅。这还能忍吗,虽然我很菜,但是也要试着逆向一波看看能不能溯源到犯人的痕迹,于是正式开始。

 

0x2 发展

首先我们对安卓的应用安卓包有一个基本概念,它的本质是一个zip压缩包,我们就可以直接将其内容解压出来:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

可以看到从中解压出的文件,如下图所示:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

在assert(应用的资源文件)文件夹中发现那段罪魁祸首,也就是这个0.mp3,顺便听一下,试下杀伤力。。。。除了这个MP3还有两个lua文件,之后会详细说明这两个文件。

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

直接上jeb,解包apk文件并且将dex反编译为class文件,程序没有加壳,只是做了一点混淆,观察AndroidManifest文件,这个文件中有各种信息:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

上面有人说这个app窃取个人隐私,但是在AndroidManifest文件没有看到android.permission.INTERNET这个权限的踪迹,犯人没有网络权限就能拿到数据?带着疑问,那就只好先看下程序的入口点,android:name="com.androlua.Main",去找下这里,反编译的结果为:


 

简单分析下可知,程序把main.lua这个文件加载到了内存里,简单介绍下Androlua:

Androlua是Github上一个开源项目,该版本只支持运行简单的lua代码。国内网友nirenr等,将它在原来的基础上进行改进,不仅支持创建安卓窗口程序,而且将它的运行速度翻了几翻,并集成了常用模块import,http,bson,xml,socket,zlib等等,使调用更加方便。不仅如此,最新的Androlua有支持高亮和关键字提示的文本编辑器,更值得高兴的是Androlua还支持将lua程序打包成apk。Androlua自带有帮助文档,可以使使用者快速上手。Androlua软件已更名为Androlua+,最新软件的版本为3.4.2,并衍生出许多版本,Androlua+可以在各大应用市场下载得到。AndroLua+可以在安卓平台上的用 Lua 开发安卓程序,不仅支持调用Java API,而且支持编写安卓界面程序,还可以将自己写的 Lua 程序打包成apk安装文件安装。Lua 语言的简单使没有任何编程经验的用户也能在短时间内开发出安卓程序,因此,在学习AndroLua+之前我们需要先学习 Lua 语言。

 

0x3 经过

学习新语言是不可能了,这辈子都不可能学那么多语言,先凑活着能看懂代码逻辑,等需要的时候再学吧。至此,知道了这个程序使用开源的Androlua框架,可以到github找到源码,java层代码是一样的:
AndroLua_pro Github网址

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

那么程序肯定和main.lua脱不开关系,看下这个文件,但是文件头不对啊,群里师傅说是lua文件被加密了,于是得去找下加密的操作在哪:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

首先com.androlua.Main,继承了com.androlua.LuaActivity

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

学习了一下androlua的调用lua文件的方式
https://blog.csdn.net/zz7zz7zz/article/details/15029261
com.androlua.LuaActivity调用了com.luajava.LuaState.LloadFile加载lua文件,LuaState加载libluajava.so,LloadFile可以使用native层的方法加载文件,于是找到\lib\armeabi-v7a下的libluajava.so,使用IDA打开分析一波:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

luaL_loadfilex函数调用了j_luaL_loadbufferx,而j_luaL_loadbufferx中就是lua脚本的加密方法。

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

将伪代码整理下可以看到比较清晰的逻辑,直接写个脚本来完成解密:

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

 

0x4 结局

解密出的lua文件,根据文件头53,使用unluac_2015_06_13来反编译出源码
参考文章:https://www.52pojie.cn/forum.php?mod=viewthread&tid=697540&page=1&authorid=765171

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

最终得到结果为:

主要功能大概是读取MP3,将音量调到最大,循环播放等,并没有截屏,窃取个人信息,更没有什么不能关机一说。直接将应用终止即可停止播放,上面的老哥还是处理不当啊,掰手机这种做法建议不要使用。

建议平时不安装未知的第三方应用,仔细阅读应用的要求权限,如果有与实际功能不符的权限请求,就停止安装。病毒,恶意程序并不可怕,可怕的是人的大意疏忽。

对高校927事件中的恶搞Android程序进行简易分析-Alkaid

0x5 后记

从别的师傅那拿到的Android逆向流程图,学习新姿势

对高校927事件中的恶搞Android程序进行简易分析-Alkaid