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

一.App劫持病毒介绍

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

二.Activity劫持病毒分析

2.1 Activity劫持病毒介绍

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

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

  • 伪装成系统短信应用,启动后请求激活设备管理权限,随后隐藏图标;
  • 利用Tor与C&C控制中心进行匿名通信,抵御流量分析;
  • C&C控制中心下发指令进行手机控制、update html、以及信息收集;
  • 通过服务器动态获取htmlData,然后实施界面劫持,获取用户账号信息;

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

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

2.2 界面劫持过程分析:

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

图axml信息

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

图后台监控

InjDialog Activity通过webView加载伪造的html应用界面,调用webView.setWebChromeClient(new HookChromeClient())设置html页面与Java交互,在伪造的Html页面里调用prompt把JS中的用户输入信息传递到Java,HookChromeClient类重写onJsPrompt方法,处理用户输入信息,最后将劫持的用户信息通过Tor匿名上传到指定域名。

图劫持用户信息

图上传劫持信息

三.应用安装劫持病毒分析

3.1安装劫持病毒介绍

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

3.2应用相关信息

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

3.3主要组件分析

.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进行安装劫持。

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

图安装劫持

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

四.怎么有效防治App劫持或安全防护建议

针对企业用户:

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

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

针对个人用户:

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

作者:逆巴@阿里移动安全,更多技术文章,请点击阿里聚安全博客

时间: 2024-10-26 17:50:04

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

基于Microsoft.Office.Interop.Word的替换文字

using MSWord = Microsoft.Office.Interop.Word; MSWord.Application app = null; MSWord.Document doc = null; //将要导出的新word文件名 string physicNewFile = @"C:\Users\HYYX\Desktop\上行20180608\模板\深圳正大康F-HLH-2网内干扰分析报告.docx"; app = new MSWord.Application();//创建

Nodejs + MongoDb

一.搭建开发环境 进入 http://nodejs.org 下载开发环境 http://Expressjs.com 下载安装Express  npm install -g express 继续安装ejs:npm install ejs 如果要想运行Node.js程序,则现在只能够使用“node app.js”,而这样的运行方式,如果在app.js文件修改之后往往需要重新启动才可以加载新的内容,这对于开发是非常不方便的, 为此,可以使用一个supervisor组件包,它可以动态的加载修改之后的开发

Android基础入门教程——1.1 背景相关与系统架构分析

Android基础入门教程--1.1 背景相关与系统架构分析 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google I/O大会上推出的Android M,有趣的是Android系统的命名都是以点心来命名的,下述表是15个Android版本名称,对应API号以及发布时间! 系统版本名称 API版本号 发布时间 Android 1.5:Cupcake:纸杯

映像劫持

因使用电脑不当,这周电脑默默地不知道中了什么毒.每当电脑进入“是否允许该应用更改计算机”时就会发生黑屏然后死机,打开杀毒软件一查,发现问题是一个叫做“映像劫持项出现异常,部分软件不能正常使用”的什么鬼.于是乎我就上网百度了一下什么是映像劫持和解决方法,可是,呵呵,并没有用...... 映像劫持 就是Image File Execution Options(其实应该称为“Image Hijack”.)是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定.由于这个项主要是用来调试

[译]怎样在Vue.js中使用jquery插件

原文:http://gambardella.info/2016/09/05/guide-how-to-use-vue-js-with-jquery-plugins 使用Vue真的太棒了,但是也有可能使你头疼,当你试图使它与jquery插件混用的时候. 问题的原因是jquery与Vue是完全不同的东西,Vue是通过组件与数据绑定来进行渲染的,jquery则主要是用来做简单的单击处理和强大的操纵DOM的能力. 我试图寻找一些东西来帮助自己解决这个问题,但是我发现一些组件所做的工作不是很让我满意,所以

[置顶]JB开发之制作系统级Application

1.编译工程,生成xx.app 2.制作引导进程xx替换xx.app里面的xx进程 引导进程代码: ? 1 2 3 4 5 6 7 8 9 int main(int argc, char *argv[]) {     @autoreleasepool {         NSString* string = [[NSBundle mainBundle] pathForResource:@"xx_" ofType:nil];         argv[0] = (char*)[strin

NodeJS爬虫系统初探

NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文件,robots.txt是一个协议,不是一个命令.robots.txt是爬虫要查看的第一个文件.robots.txt文件告诉爬虫在服务器上什么文件是可以被查看的,搜索机器人就会按照该文件中的内容来确定访问的范围. 一般网站的robots.txt查找方法: 例如www.qq.com http://ww

走进Android系统

一.Android背景 [Android定义] Android是Google公司在2007年11月5日公布的基于Linux平台的开源手机操作系统. [发展历程] 2005年,Google收购企业Android,展开了短信.手机检索.定位等业务. 2007年,Google宣布推出基于Linux平台的开源手机操作系统,正式命名为Android. 2008年,Google发布了Android系统最早的版本--谷歌Android SDK1.0 . 2009年,Google推出了新版本Android 1.

微信小程序常见问题集合(长期更新)

程序问题: 森哥解答:1.找不到所要替换的文件  问题原因:开发工具版本不正确,老版本不支持 解决方案:确保下载的程序版本在0.9.092100以上  2.Failed to load resource: net::ERR_NAME_NOT_RESOLVEDhttp://1709827360.appservice.open.weixin.qq.com/appservice  问题原因:通常是由于系统设置了代理如Shadowsocks等. 解决方案:关闭代理,或者依次点击工具栏"动作"-