趋势科技研究发现了一款Android恶意木马——Xavier。在谷歌Play应用市场中,超过800款Android应用感染了该恶意木马,影响数百万Android用户。感染的应用范围覆盖图片编辑器,墙纸和铃声转换器等。受感染的用户绝大多数来自亚洲东南部国家,如越南、菲律宾和印度尼西亚,美国和欧洲的感染人数较少。

对比此前恶意广告木马,Xavier的功能及特征更为复杂。首先他具备远程下载恶意代码并执行的能力。其次,它通过使用诸如字符串加密,Internet数据加密和模拟器检测等方法来保护自己不被检测到。

Xavier窃取用户数据的行为很难被发现,它有一套自我保护机制,来躲避静态和动态的检测分析。此外,Xavier还具有下载和执行其他恶意代码的能力,使它的威胁性大大增加。

Xavie进化史

joymobile

Xavier是恶意广告下载家族的成员之一,它的存在已有2年时间。第一个版本被称为joymobile,出现在2015年年初。joymobile这个版本已经具备执行远程代码的能力。

除了收集和泄露用户信息,它还可以安装其他应用,并在设备root的情况下实现静默安装。

它通过远程命令和C&C服务器来发送和接受信息,并对这些信息没有加密,但是对所有的常量字符串都进行了加密。

nativemob

第二个版本命名为nativemob,对比joymobile我们可以发现nativemob的代码重构了,并增加了一些新特新。主要是广告行为和实用程序。虽然没有静默安装,但是需要用户确认安装的程序仍然存在。

它比第一个版本收集更多的用户信息,并通过base64编码发送这些信息到C&C服务器。

nativemob的下一个变种出现在2016年1月左右,它缩减了字符串加密算法,加密了从远程服务器下载的代码,并添加了一些反射调用。

紧接着在2月份,它更新了各方面的广告模块设置,并出于某种原因删除了数据加密。

在接下来的几个月里进行了进一步更新。但是这些更新对于广告库没有进行重大更改。

Xavier技术分析

Xavier的变体出现在2016年9月,它的代码更加精简。第一个版本重去除了APK安装和root校验,但是加入了TEA加密算法。

很快它添加了避免动态检测的机制,其结构如下:

一旦加载Xavier,它将从C&C服务器hxxps://api-restlet[.]com/services/v5/得到初始化配置,并使其加密。

服务器还对响应数据进行加密:

解密后,我们可以看到它实际上是一个json文件:

V代表SDK版本

L代表SDK URL地址

G代表SDK Sid

S代表 SDK设置

Au与ad配置相关

Xavier将从hxxp://cloud[.]api-restlet[.]com/modules/lib[.]zip下载SDK并读取配置。但是,lib.zip不是一个完整的压缩包。

在得到lib.zip压缩包之后,Xavier在压缩包里加入0x50 0x4B头,并把它命名为xavier.zip的有效文件。

加入之前

加入之后

Xavier.zip包含加载和调用它的classes.dex文件。

这个dex文件将收集用户的的设备信息,并加密传输到远程服务器hxxps://api-restlet[.]com/services/v5/rD

如邮箱地址,设备ID,模型,操作系统版本,国家,手机制造商,SIM卡运营商,安装的应用程序等信息。

为了躲避动态检测,Xavier运行在模拟器环境下还会隐藏恶意行为。

它会检测设备是否包含产品名称、制造商、设备商标、设备模块、硬件名称、指纹等以下字符串。

  • vbox86p
  • Genymotion
  • generic/google_sdk/generic
  • generic_x86/sdk_x86/generic_x86
  • com.google.market
  • Droid4X
  • generic_x86
  • ttVM_Hdragon
  • generic/sdk/generic
  • google_sdk
  • generic
  • vbox86
  • ttVM_x86
  • MIT
  • Andy
  • window
  • unknown
  • goldfish
  • sdk_x86
  • generic_x86_64
  • phone
  • TTVM
  • sdk_google
  • Android SDK built for x86
  • sdk
  • Android SDK built for x86_64
  • direct
  • com.google
  • XavierMobile
  • TiantianVM
  • android_id
  • generic/vbox86p/vbox86p
  • com.google.vending
  • nox

Xavier还通过检查它是否包含以下字符串,来隐藏扫描用户邮箱的行为:

  • pltest
  • @facebook.com
  • tester
  • @google.com
  • review
  • playlead
  • agotschin
  • gptest
  • rxwave 15
  • rxplay
  • admob
  • gplay
  • adsense
  • gtwave
  • rxtest
  • wear.review
  • qaplay
  • test
  • rxtester
  • playtestwave

Xavier如何避免检测?

1、对所有常量字符串进行加密,使得静态检测和动态分析更加困难

2、它通过HTTPS进行网络传输,以防止流量被捕获,还对数据进行加密:

3、它使用了大量反射调用方法,其中类名和方法名都进行了加密

4、它会根据运行环境隐藏其行为。下面是谷歌播放器的示例,嵌入了一个Xavier恶意广告库:

保护措施

1、提防可疑和陌生的应用软件,即便是从官方应用市场下载的。尽量下载知名的应用软件。

2、在下载应用程序之前,查看应用程序需要授权的权限,并了解其他用户的评论。

3、建议在手机上安装安全软件,可以有效检测并阻止恶意软件,及时升级系统和app的版本。

* 本文翻译自trendmicro,更多安全类热点资讯及知识分享,请持续关注阿里聚安全博客

 

“Xavier”安卓木马分析:可静默收集数据并远程代码执行的更多相关文章

  1. thinkphp5.0.22远程代码执行漏洞分析及复现

    虽然网上已经有几篇公开的漏洞分析文章,但都是针对5.1版本的,而且看起来都比较抽象:我没有深入分析5.1版本,但看了下网上分析5.1版本漏洞的文章,发现虽然POC都是一样的,但它们的漏洞触发原因是不同 ...

  2. Spring框架的反序列化远程代码执行漏洞分析(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. ECShop全系列版本远程代码执行高危漏洞分析+实战提权

    漏洞概述 ECShop的user.php文件中的display函数的模版变量可控,导致注入,配合注入可达到远程代码执行.攻击者无需登录站点等操作,可以直接远程写入webshell,危害严重. 漏洞评级 ...

  4. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

  5. Nexus Repository Manager 3(CVE-2019-7238) 远程代码执行漏洞分析和复现

    0x00 漏洞背景 Nexus Repository Manager 3是一款软件仓库,可以用来存储和分发Maven,NuGET等软件源仓库.其3.14.0及之前版本中,存在一处基于OrientDB自 ...

  6. CVE-2012-1876Microsoft Internet Explorer Col元素远程代码执行漏洞分析

    Microsoft Internet Explorer是微软Windows操作系统中默认捆绑的WEB浏览器.         Microsoft Internet Explorer 6至9版本中存在漏 ...

  7. CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析

    漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc ...

  8. Apache Log4j 远程代码执行漏洞源码级分析

    漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...

  9. s2-029 Struts2 标签远程代码执行分析(含POC)

    1.标签介绍 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件 ...

随机推荐

  1. 牛客小白月赛13 小A的最短路(lca+RMQ)

    链接:https://ac.nowcoder.com/acm/contest/549/F来源:牛客网 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个 ...

  2. angular如何引入公共JS

    一.现象 在项目的开发中,总会用到一些公司的脚本方法,同时,不希望在每个页面用到时又得需要引用,有点麻烦. 二.解决 1.在src文件夹下新建文件夹 utils: 2.在utils下新建文件 comm ...

  3. linux wc使用详解

    转载:https://www.cnblogs.com/peida/archive/2012/12/18/2822758.html Linux系统中的wc(Word Count)命令的功能为统计指定文件 ...

  4. ASP.NET Core Web API 如何 数据分页 以及遇到'OFFSET' 附近有语法错误

    最近领导叫我做的一个B/S端的小项目,突发奇想想用到core web api 今天写数据分页的时候,就想着 用linq分页查询吧,直接上代码 _context.Skip(Size * (PageNum ...

  5. Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;

    异常:Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.co ...

  6. WinForm DotNetBar 动态添加DataGridView

    DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; dgv.Location = new System.Drawing. ...

  7. experiment 3

    #include <stdio.h> int main() { int number, max, min, n; n=; printf("请输入%d个数: ", n); ...

  8. iOS dispatch_semaphore_t(信号量)和 2.dispatch_group_t (组)

    2017年,回望过去,前半年还致力于iOS开发,后半年就开始了python的漫漫之路,一路上走走停停,不过还好,总的来说,2017是收获的一年,也是付出的一年.2018加油! 话题转回来,关于线程执行 ...

  9. BSOJ3760||洛谷P1453 城市环路 题解

    城市环路 Description 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域——城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环 ...

  10. wzyxidian Scanner 与 Readable 的read()方法

    Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用. Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的 ...