天天看点

你的应用是如何被替换的,App劫持病毒剖析

app劫持是指执行流程被重定向,又可分为activity劫持、安装劫持、流量劫持、函数执行劫持等。本文将对近期利用acticity劫持和安装劫持的病毒进行分析。

activity劫持是指当启动某个窗口组件时,被恶意应用探知,若该窗口界面是恶意程序预设的攻击对象,恶意应用将启动自己仿冒的界面覆盖原界面,用户在毫无察觉的情况下输入登录信息,恶意程序在把获取的数据返回给服务端。

你的应用是如何被替换的,App劫持病毒剖析

以mazarbot间谍木马为例,该类木马有一下几个特点:

伪装成系统短信应用,启动后请求激活设备管理权限,随后隐藏图标;

利用tor与c&c控制中心进行匿名通信,抵御流量分析;

c&c控制中心下发指令进行手机控制、update html、以及信息收集;

通过服务器动态获取htmldata,然后实施界面劫持,获取用户账号信息;

以下是c&c控制中心指令列表:

你的应用是如何被替换的,App劫持病毒剖析

我们发现该木马能接受并处理一套完整的c&c控制指令,并且使用tor进行匿名网络通信,使得流量数据的来源和目的地不是一条路径直接相连,增加对攻击者身份反溯的难度。结下来我们将详细分析该木马界面劫持过程。

入口梳理首先看到axml文件。workerservice服务处理c&c控制中心下发的”update html”指令,同时后台监控顶层运行的activity,若是待劫持的应用将会启动injdialog acticity进行页面劫持。

你的应用是如何被替换的,App劫持病毒剖析

图axml信息

下图是后台服务对顶层acticity监控过程,若是待劫持应用则启动injdialog进行劫持。gettop函数做了代码兼容性处理,5.0以上的设备木马也可以获取顶层acticity的包名。

你的应用是如何被替换的,App劫持病毒剖析

图后台监控

injdialog activity通过webview加载伪造的html应用界面,调用webview.setwebchromeclient(new hookchromeclient())设置html页面与java交互,在伪造的html页面里调用prompt把js中的用户输入信息传递到java,hookchromeclient类重写onjsprompt方法,处理用户输入信息,最后将劫持的用户信息通过tor匿名上传到指定域名。

你的应用是如何被替换的,App劫持病毒剖析

图劫持用户信息

你的应用是如何被替换的,App劫持病毒剖析

图上传劫持信息

安装劫持病毒通过监听android.intent.action.package_added和android.intent.action.package_replaced intent实施攻击,包括两种手段,一种是卸载删除掉真正安装的apk,替换为攻击者伪造的应用;另外一种是借用用户正在安装的这个消息,悄悄的安装自己推广的其他应用。这个过程就像你平时喝的“六个核桃”,某天你居然喝到“七个核桃”。

该应用是一款名为”flashlight”的应用,程序包名:com.gouq.light,应用图标如下:

你的应用是如何被替换的,App劫持病毒剖析

.app 应用application类,加载assest目录下加密jar包,获取接口exchangeimpl对象,在jar里实现接口函数onapplicationcreate、triggerreceiver、triggertimerservice;启动核心服务lightservice;

.lightservice 应用核心服务,可外部调用启动lighttiservice,达到替换进程名,以及am启动服务以自身保活;

.lighttiservice 由lightservice启动,该服务会调用动态加载包里的triggertimerservice接口方法,完成对以安装应用的删除、当前设备信息上传、从服务器下载待安装应用;

.appreceiver 广播接收器,通过加载的jar包里triggerreceiver接口方法实现,处理android.intent.action.package_added和android.intent.action.package_replaced intent查看安装跟新应用是否是劫持应用,若是通过execcmd进行安装劫持。

下图安装劫持过程,通过监听应用的安装和更新,实施关联的其他应用的静默安装。

你的应用是如何被替换的,App劫持病毒剖析

图安装劫持

上图可以知道此恶意应用借用安装或更新intent,安装预设的关联应用,这样在安装完毕后用户并不清楚哪个是刚真正安装的应用,这样增加了推广应用点击运行的几率。

针对企业用户:

作为一名移动应用开发者,要防御app被界面劫持,最简单的方法是在登录窗口等关键activity的onpause方法中检测最前端activity应用是不是自身或者是系统应用。

当然,术业有专攻,专业的事情交给专业的人来做。阿里聚安全旗下产品安全组件sdk具有安全签名、安全加密、安全存储、模拟器检测、反调试、反注入、反activity劫持等功能。 开发者只需要简单集成安全组件sdk就可以有效解决上述登录窗口被木马病毒劫持的问题,从而帮助用户和企业减少损失。

针对个人用户:

安装阿里钱盾保护应用免受app劫持木马威胁。

阿里聚安全由阿里巴巴移动安全部出品,面向企业和开发者提供企业安全解决方案,全面覆盖移动安全、数据风控、内容安全、实人认证等维度,并在业界率先提出“以业务为中心的安全”,赋能生态,与行业共享阿里巴巴集团多年沉淀的专业安全能力。