-
-
[原创]执行Lua脚本的Android恶意程序
-
发表于:
2015-5-26 19:27
9179
-
AVL移动安全团队近期发现一种会执行lua脚本的Android恶意程序,该程序会在本地代码创建Lua环境,联网下载脚本、运行,能够回调Java层代码实现私发短信、添加书签等操作,影响手机的正常体验。
Lua是一个小巧的脚本语言。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它作为一个强大、轻量的嵌入式脚本语言,可供任何需要的程序使用。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行。Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。
一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。很多应用程序、游戏使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
Android平台直接以JNI方式调用Lua解析引擎的接口十分麻烦,但目前已有开源项目AndroLua、LuaJava对这些JNI接口进行了很好的封装。AndroLua是一个包含了LuaJava的Android平台的Lua解析器,它提供一系列映射到Lua C实现函数的Java接口。
木马分析
该类型木马往往隐藏在“午夜视频”等极具低俗诱惑的APP中,诱惑用户下载安装使用,具有大范围传播的可能。
程序运行时,会加载libMS.so,而libMS.so加载Lua脚本前,会先解密msb文件,然后还添加一个mobile库,里面注册了sendsms、addbookmark等方法,这些函数是通过回调Java代码实现。运行流程详见图1。
图1 Lua环境
So中创建Lua环境
程序运行后,会将assets/module.zip文件拷贝到”/script/module/”目录下,并执行解压缩操作。之后会创建Lua接口指针,加载Lua通用扩展库(package、table、io、os、string、math、debug、md5、json、socket、mime、mobile、tea)。而mobile库会注册sendsms、addbookmark、getactiveapntype、messagebox、querymessageboxvalue、cleansmsreceiver、popsmsreceiver等方法。
图2 lua环境初始化
图3 要加载的lualibs
图 4 mobile库所声明注册的方法
解密运行smtm.msb脚本,获取相关配置信息
将assets/smtm.msb文件拷贝到”/script/cache/”目录下,解密获取一个Lua脚本,执行后返回smtmconfig和uid,并添加到一Vector容器中。从该容器中读出smtmconfig字段所对应的数据,解析获取相关配置。
图5 smtm.msb文件所对应的Lua脚本
登录远程服务器,更新配置信息、执行相应操作
运行LoadingActivity这个主Activity,联网smtmLoginUrl上传用户手机固件信息,解析返回值,并执行获取的msb脚本。其中smtmReg所对应的数据为发送注册短信的号码、smtmScan存放要拦截来信号码。
图6 解密运行smtmurl.msb,返回联网上传参数
图7 执行获取的msb脚本
屏蔽来自指定号码的短信
监听来信,屏蔽来自指定号码的短信,影响正常短信的接收,可能会导致用户资金损失。
图 8解密smtmScan对应的键值,与来信号码进行比对
图9屏蔽短信
后门程序,私自发送短信、添加书签等
该程序在so中搭建好了Lua环境,且在运行过程中会下载加密的Lua脚本即msb文件并执行。而mobile库所对应的函数中,注册了sendsms、addbookmark、getactiveapntype、messagebox、querymessageboxvalue、cleansmsreceiver、popsmsreceiver等方法。当联网下载的脚本会调用mobile.sendsms或mobile.addbookmark方法时,会回调java层的相关代码执行发送短信、添加书签等操作:
图10 回调Java层代码发送短信
图 11添加书签
目前AVL Pro已能识别查杀该木马家族。
AVL移动安全团队专注于移动互联网安全技术研究及反病毒引擎研发,提供强大的移动安全解决方案。欢迎关注我们的微信公众号AVLTeam,我们会定期发布一些移动安全相关资讯,希望能够对您有所帮助。 转载请注明来源:http://blog.avlyun.com/?p=2280
文章分享地址:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)