一.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劫持木马威胁。

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

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

  1. App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法)

    App劫持病毒剖析:你的应用是如何被替换的(病毒防范方法) 一.App劫持病毒介绍 App劫持是指执行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数执行劫持等.本文将对近期利用A ...

  2. 你的应用是怎样被替换的,App劫持病毒剖析

    一.App劫持病毒介绍 App劫持是指运行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数运行劫持等. 本文将对最近利用Acticity劫持和安装劫持的病毒进行分析. 二.Acti ...

  3. Express4.x动态的销毁或者替换中间件(app.unuse)

    需求描述 expres4.x托管静态资源时以中间件的方式将server-static挂载到app上,正常的使用没有问题,但是有时候我们需要动态的托管一些静态资源,也就是静态资源的目录不确定的时候该怎么 ...

  4. vim替换命令

    转载:http://blog.csdn.net/glorin/article/details/6317098 替換(substitute) :[range]s/pattern/string/[c,e, ...

  5. 【转】vim替换命令

    vim替换命令 free:此文后面涉及了正则表达式,随便看了一下,觉得正则表达式有时间学一学对于在Linux下操作也是方便许多 替換(substitute) :[range]s/pattern/str ...

  6. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  7. ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由

    原文:Routing to Controller Actions 作者:Ryan Nowak.Rick Anderson 翻译:娄宇(Lyrics) 校对:何镇汐.姚阿勇(Dr.Yao) ASP.NE ...

  8. 【腾讯Bugly干货分享】Android性能优化典范——第6季

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d91208d80e49771f0a07c 导语 这里是Android性能优 ...

  9. bodyparser

    今天在用bodyparser时,遇到了如下问题: 首先科普下bodyparser的作用:它用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理. 现在继 ...

随机推荐

  1. PHP中的一些常用正则表达式

    匹配表单验证 验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z ...

  2. Java面试常见知识点总结(二)

    11.构造方法(构造器): 构造方法是一种特殊的方法,具有以下特点.    (1) 构造方法的方法名必须与类名相同.    (2) 构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类 ...

  3. SOUI开发者论坛

    http://www.lumaba.cn/forum.php?mod=forumdisplay&fid=2 需要的朋友可以上去交流.

  4. java中的throw与throws的区别

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  5. CSS实现小三角小技巧

    <style> .box{ width: 20px; height: 20px; background-color: #424; border: 10px solid #9C27B0; b ...

  6. python 处理视频输入输出

    视频的处理和图片的处理类似,只不过视频处理需要连续处理一系列图片. 一般有两种视频源,一种是直接从硬盘加载视频,另一种是获取摄像头视频. 0x00. 本地读取视频 核心函数: cv.CaptureFr ...

  7. C++ 代码优化

    1.类中所有的属性全部设置为private 然后在需要在外部调用的属性,每个都自己写Get方法返回,或者用Set方法设置 2.类成员变量采用m_前缀,代表类成员 3.采用单例模式 //设置类名为CCo ...

  8. 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 2012-04-25 16:29:04| 分类: 学习 |字号 订阅 在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE ...

  9. Mac无法写入移动硬盘

    1.使用mac 磁盘工具,格式化移动硬盘 频繁穿插于mac于pc之间者,大批量拷贝大型文件者,请用exfat 首先,排除Fat32,虽然这是兼容性最好的文件格式,但一个不支持4g以上文件的格式(现在随 ...

  10. tomcat发布脚本

    #!/bin/bash #发布相关目录Tomcat_log='/home/CodePub/tomcatlog'dev_package='/home/CodePub/package'old_packag ...