一、背景2015 年末,360移动安全团队不断收到用户反馈,手机中莫名其妙地被下载安装其他应用、手机自动订阅扣费服务等问题,手机还原出厂设置后,问题依旧无法解决。类似的用户反馈近期越来越多,经360移动安全团队的跟踪发现,引起此类症状的元凶为一linux系统层病毒。该病毒的核心模块包括一个ELF系统文件conbb(configopb)及一个伪装系统应用的APK文件core,通过这些文件,我们发现病毒提供了一整套完善的实现和接口,能够被不同的APK应用方便的打包调用,进而造成该病毒被广泛传播,影响恶劣。据后台数据分析,打包该病毒模块的应用达数百种之多,因此,我们该病毒命名为“百脑虫”病毒。
通过搜索引擎能够轻松的发现中招网友的反馈:
图1 “百脑虫”感染网友反馈
二、传播“百脑虫”病毒是以插件的形式嵌入各种应用程序里面传播的,其中又以本身就有很多问题的色情类应用和一些受欢迎的高广应用居多,这些被重打包的问题程序通过第三方电子市场或某些色情类网站进行疯狂传播。
1、色情视频类应用
嵌入百脑虫病毒的色情类APP的名称具有极高的诱惑性,如成人影院、媚娘影音、干姐姐视频、禁播视频等。一旦“宅男”用户对这些极其诱惑性的APP名称经不起其诱惑,点击安装此类应用即可中招。
图2 嵌入百脑虫病毒的色情类应用
2、高人气正常应用
具有较高人气的正常应用也是百脑虫病毒传播的重灾区。如千炮捕鱼新年版、极品时刻表、全名挖钻石等都被别有用心的病毒作者篡改,嵌入了百脑虫病毒。如用户安全意识薄弱,未通过官方或正规第三方电子市场下载安装此类应用,很容易被百脑虫病毒感染。
图3 嵌入百脑虫病毒的正常应用
三、病毒介绍百脑虫病毒模块关系如图:
图4 百脑虫模块关系
打包百脑虫的应用启动后,会提权释放一个无图标的APK到系统应用路径里,此APK在后台默默运行,用户难以发觉。此APK就是百脑虫病毒的核心模块,它主要功能有检查安全软件、劫取用户隐私、静默推广安装其他应用及病毒文件等。
百脑虫执行流程图如下:
图5 百脑虫执行过程
1、打包百脑虫的应用启动后,首先从assets文件夹中的加密数据文件中解密所有重要模块。其中包含第三方root提权工具、su文件、core核心模块、conbb病毒安装脚本、install-recovery.sh等。
2、判断用户手机是否处于root状态。如果不是root状态,将用户机型、系统版本等信息上报给云端,并从云端下载与机型、系统版本相应的已知漏洞的root提权文件,使用第三方工具执行root提权。
3、提权成功后将core模块复制到/system/app下成为系统应用,使用户无法通过正常方法卸载此应用。
4、core模块一直运行在后台,判断自己是否处于安全厂商沙箱环境中,如果是,则直接退出不做进一步行为。
5、core模块判断是否有安全软件服务在运行,如果是,尝试强制终止其服务进程。
6、core模块删除所有其他root工具及root授权管理应用,使其他应用无法获取root权限。
7、周期性地从后台静默下载安装众多其他应用及病毒文件。
四、详细分析1、百脑虫重打包代码
百脑虫病毒是被其他应用重打包后传播的,一个被重打包的应用,入口函数中会加入一行病毒的启动代码。此应用运行时,百脑虫病毒代码将获得执行权限。
图6 百脑虫病毒的启动代码
病毒代码执行以后,从assets文件夹的krLib(文件名可变)加密数据文件的起始64个字节获取密钥KEY及配置相关信息。
图7 获取密钥及运行相关配置信息
从实际病毒样本中获取的密钥为“10249832931963293212373431424213”,运行
相关配置信息为“00000000000000010000000000000336”。密钥会用在解密百脑虫病毒其他模块及字符串。 母包APP层的解密算法有两种:dn_1、dn_2。dn_1是用来解密其他百脑虫相关模块,dn_2是用来解密关键字符串。
图8 加密的关键字符串
图9 解密函数
用已取得的密钥配合解密算法,可以还原关键字符串:
图10 解密后代码片段
图11 解密后百脑虫文件
此后,百脑虫会检测运行环境是否真实,如果检测到沙箱环境,病毒会自动退出。
通过环境检测以后,病毒判断系统是否存在文件“/sytem/bin/conbb”、“/system/xbin/conbb”、“/system/bin/su”、“/system/xbin”中的任何一个或服务进程“com.android.browser.internal.server”。如果是,则说明手机已经处于root状态,检验结果上报给远程服务器并执行后面的流程,如果病毒判断手机未root,则加载librgsdk.so模块执行root提权。librgsdk.so原本是正规厂商的root提权模块,但由于对调用者的验证不严谨,导致把接口暴露给了病毒作者。
图12 百脑虫提权流程
成功root后,百脑虫便开始安装core核心模块到系统目录。首先复制core文件到系统路径下(“/system/app/ BrowserInfoServer.APK”),赋予系统应用权限644,使用户无法通过正常方式卸载此应用。并通过执行命令“am startservice -n com.android.browser.internal.server/com.android.phone.BrowserService”启动core服务。
图13 安装及执行core应用
2、百脑虫core模块
core模块是百脑虫病毒的核心模块,通过驻留在系统空间,实现其下载推广的恶意行为,它通过注册receiver实现随系统开机或网络状态改变时启动。
图14 core模块注册的receiver
core模块启动后会清理安装路径下的所有缓存的dex文件,并加载执行安装路径下所有JAR包的主入口“com.android.xb.init”。
图15 加载执行JAR包
为了更好地隐藏自己,core模块几乎所有的字符串都做了加密处理,并在执行过程中调用getSystemDecodeVaule动态解密的方式执行。
图16 动态解密关键字符串
图17 解密函数
因解密函数为静态函数,可以通过java反射机制加载core应用并调用getSystemDecodeVaule可以解密关键字符串。
图18 模拟调用解密函数的代码片段
图19 部分解密后的关键字符串
core初始化完毕以后,将执行其核心功能。首先会将用户手机信息及病毒运行结果上报给远程服务器ph1.opnixi.com。上传的信息包含病毒当前版本、手机imsi、当前病毒运行时间间隔、是否为内置rom、病毒运行环境是否安全、已安装的应用列表、已经下载的JAR包等等。
图20 百脑虫上传信息
云端根据手机上传信息选择返回内容。如果上传信息一切顺利,服务端将会返回JAR包下载列表。测试时返回的下载地址为“http://[removed]/download/modules/OPBUpdate_ 6000.JAR”。
图21 百脑虫下载JAR包
JAR包中包含APK及安装配置信息。通过配置信息病毒决定是否将APK安装为系统应用还是正常应用,如果一旦安装成系统应用将意味着很难清理。
图22 安装配置信息
图23 从下载的JPR包安装APK
此外,百脑虫还会将自己推广的APK及安装配置信息备份至目录“/mnt/sdcard/Android/com/usbdevice/dbinfo”下,以便被用户卸载后立即还原,因此,一般用户基本不可能手动将其清理掉。
图24 百脑虫备份自身文件
分析发现,“百脑虫”病毒除了在手机启动或者网络连接状态发生变化时,执行其恶意功能,它还设置了一个时间周期,即每隔一个小时,便连接病毒服务器下载应用执行,并对下载的文件进行备份,一旦发现被删除卸载则重新安装。
五、问题应用据后台数据分析,打包百脑虫的应用达数百种之多,这里我们分析一些传播量较广的问题应用做简单介绍,详细情况见附录一。
1、“禁播视频”:除了具有百脑虫的病毒功能之外其自身行为也极其恶劣。不仅恶意推广其他应用,还会未经用户允许后台偷偷订阅扣费业务给用户造成经济上的损失。因“禁播视频”运行时会屏蔽“成功订阅服务”、“验证码”之类的扣费相关敏感短信,用户难以第一时间察觉。
图25 禁播视频后台访问订阅服务的网站
图26 扣费验证码
2、“雷霆战机2015新年版”:此款游戏原本是正常且最近人气较高的射击类手游。一旦用户从非官方渠道下载安装嵌入“百脑虫”病毒的重打包应用, “百脑虫”病毒也跟随此应用被偷偷安装。因“百脑虫”病毒无图标,且伪装成系统应用户很难察觉它的存在。
六、查杀与修复随着360手机急救箱用户数的增长,被查杀到的木马越来越多,360手机急救箱独有的深度完整扫描,可以深度扫描和完美清除底层ELF病毒和APK病毒。目前市场上的主流手机安全产品几乎没有支持ELF完整深度扫描的功能。
目前,360手机急救箱已经支持对该木马的查杀与修复:
图27 360手机急救箱查杀修复界面
“百脑虫”病毒可以大范围传播的主要原因之一是由于用户的安全意思薄弱。为了防止被“百脑虫”病毒感染,提以下建议:
- 不要轻易下载安装所谓“色情类”相关视频应用。
- 下载应用时尽量通过官方或正规第三方电子市场下载安装。
- 如遇到被静默安装其他应用或恶意扣费等安全相关异常症状,立即反馈给正规安全
厂商。
手机急救箱下载地址:http://jijiu.360.cn/
附录一:部分包含百脑虫病毒的应用
| |
| cedca3abced18acef0ff0953cb162f4f |
| e0f7a130214877a4e8f73ae1b4acf2fd |
| 9d272f102949dd19b57e0a1c77918107 |
| 409b1c1356fd5a5b468f901a3b4b62e2 |
| 2cb438b6c73a7e98ae81a36f37af7549 |
| a78e2c08f54ecdae88fa3238d4677aaa |
| c33ff5de90a139ef67e8c7a2aebf9928 |
| bb9d20dd63f1375475ddf8eca344b5ba |
| 95708f24ddfb70194b5abff2705f78e1 |
| 3737891b83603f844b5de7c068d785bf |
| fcb22aed96d977c6168b864c331845db |
| ce47594720a7c4997f2da62f66c0d077 |
| cfc6326ea59147a3098b12250ee1c372 |
| b6440e161927ccc3ff0848d72426e941 |
| 31812f98ff7fe69b129e6d6764f3bc66 |
| 02524acb83cee4e5506348b6fd9521b1 |
| 96ba321e68adde0622ef95d4132d8dba |
| ad4e837f410947dd50cc1e8929b215ed |
| df5103929e41df3a9b84dd7a0fe4e3c9 |
| d114d1150160466835ff2e902f63e6d6 |
| ca8b63f2bcc34fca8e87633fe55c7160 |
| 8dbbbbaa60c81db4395422ee1982135f |
| 487edc48ddb19d8908fab870bed9dd6c |
| f633ed5dbe53f0c1090d38b5afa68e50 |
| 11004a50fe620e93697a77b143bd8e9a |
| 9e5e4b744bf2b9b9374a3203c2595ac3 |
| 85976b9dffa85e0e6a917da2e64671eb |
| 27a753751fb9505906cfd5b8dc515773 |