专栏首页FreeBuffireeyee解剖新型Android恶意软件

fireeyee解剖新型Android恶意软件

总结

你是否下载安装过体积很大但是UI或者功能很少的Android应用程序?最近,FireEye实验室移动安全研究人员发现了一种新型的手机恶意软件,在看起来普通的应用下内嵌着加密过的附件程序,很好的隐藏了其进行恶意活动。

恶意app程序会伪装成Google Play商店,尤其是其图标完全模仿了主屏幕上Google Play的图标。一旦安装成功,黑客使用一个动态的DNS服务器和通过SSL协议的Gmail来搜集Android设备上的文本信息、签名证书和银行密码。

下面是主程序、附件程序、恶意代码之间的关系图:

恶意程序的包名为com.sdwiurse,程序名为“google app stoy”。由于“卸载”功能被禁用,设备感染后Android用户不能卸载该程序,并且程序会继续以服务的形式在后台运行。这些服务能够手动停止但是会随着手机的重启而重启。

由于该恶意程序的独特打包压缩特性,截止2014年6月13日,该程序在Virus Total的识别率只有3/51。因为大多数公司只使用基于签名的算法来检测恶意软件,他们无法检测到隐藏在普通程序中的恶意内容。

我们注意到该恶意程序大小为1.7MB但只有711行代码。asset文件夹下的一个最大的单文件,名为“ds”并具有597KB的大小。在解压和解密后,真正的dex包文件将整个程序的大小扩大至2.2MB。黑客用少量代码的规避技术来掩盖其恶意程序的真正目的。

用户体验

安装完成后,主屏幕上会多出一个新图标“google app stoy”。该图标跟真正的“Google Play”一样,这样可以迷惑用户点击它。一旦点击,应用程序会要求获取设备的管理员权限,如图:

当我们继续观察应用程序的行为时,应用程序会弹出唯一的用户界面说:“程序错误”和“删除!“。接下来,程序终止并出现通知消息“Unfortunately, google app stoy has stopped.” 出现这种情况后,在主屏幕上的应用程序图标自动删除,欺骗用户认为它真的已经删除了。

然而,当打开“设置->应用程序,我们仍然可以在“下载”选项卡中找到应用程序和“运行程序”选项卡。此外,在“下载”选项卡中,应用程序不能被停止或卸载:

在“运行程序”选项卡中,恶意程序开始运行五个服务:

1.   uploadContentService
2.   UninstallerService
3.   SoftService
4.   uploadPhone
5.   autoRunService

加密

该文件是用如图所示的Java Cryptographic Extension (JCE)框架中的javax.crypto包来加密的。

加密算法是基于数据加密标准(DES)。strKey是“gjaoun”。在文件被解密后,它会以dex类加载:

所有的恶意行为都在这个dex文件中。

恶意行为

在恶意DEX包的源代码中,“class.dex”是从加密文件“x.zip”解压缩出来的。在分析这段代码时,我们发现从感染的Android设备窃取私人信息有三种方式。我们将介绍恶意软件的工作原理并分析网络流量中恶意行为的证据。

1. 窃取SMS信息

在代码中,ak40.txt是/storage/sdcard0/temp/文件夹中一个包含字符串的文件。当内容为1时,SMS消息会被发送到一个电子邮件地址。电子邮件地址和密码都存储在/storage/sdcard0/temp/目录下的文件中。黑客所用SSL协议的Gmail来规避大多数AV厂商在网络流量中的特征检测方法。

2. 窃取签名证书和密钥

变量v1是Android手机的电话号码,Url.getSDPath()是安装存储的temp目录:

同名的“all.zip”文件会被上传到服务器,并命名为“{PHONE_NUMBER}_npki.zip”附件通过Gmail发送。

3.窃取银行账号密码

网络流量

1.SMS消息发送

因为目标email地址和密码都是保存在手机中的,我们将其替换为一个测试账号,这样测试的SMS消息被截获后将重定向至模拟的测试邮箱账户中。下面是我们从测试账户中截获到的短信:

时间戳显示电子邮件地址接收到的内容(在9:39 pm)这距受害者的短信接收(在9:38 PM)的时间间隔在1分钟内。

2.签名证书和密钥传输

我们抓到的Pcap数据包显示,“all.zip”被上传到域名“dhfjhewjhsldie.xicp.net”:

同一文件更名为{PHONE_NUMBER}_npki.zip并以Gmail附件方式使用SSL加密发送。下面的图片显示,从附件解压后,恶意程序软件传输到SMTP服务器的签名证书文件和签名用到的密钥。

3.银行账户密码传输

我们发现了包含有受害者账户及密码的email证据并与Google的Gmail工作组通报了黑客的Gmail账户。

via fireeye

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 状态开关按钮ToggleButton

    页面设置 1 <ToggleButton 2 android:layout_width="wrap_content" 3 and...

    欢醉
  • Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤 1.第一步,写一个Receiver继承自BroadcastReceiver 1 import androi...

    欢醉
  • 实例演示Android异步加载图片

    本文给大家演示异步加载图片的分析过程。让大家了解异步加载图片的好处,以及如何更新UI。 首先给出main.xml布局文件: 简单来说就是 LinearLayou...

    欢醉
  • Android中EditText

    1.android:hint="只能输入指定数字",文本框中显示提示信息 2.android:password="true"该文本框是一个密码框 3.andro...

    欢醉
  • Android中TextView

    TextView:展示文本内容控件 要点: 1.android:textSize="20sp",设置字体的大小使用sp作单位 2.设置宽度高度等属性使用dp(d...

    欢醉
  • Android中动态更新ListView

    在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中。 实现...

    欢醉
  • Android中Button

    1.android:drawableTop="@drawable/accept"设置在按钮文本的上面绘制指定图片。可同时指定drawableLeft等其它方向 ...

    欢醉
  • 一些移动 Web 前端开发上的要点记录

    从五月份实习到现在快三个月了,这三个月的实习时段,按照leader 的要求,每天要写日总结发RTX 内部群,每周都要写周邮件群发整个部门——就这么坚持了三个月。...

    Jeff
  • 时钟AnalogClock与DigitalClock

    1. 获得当前年月日时分 1 Calendar cal = Calendar.getInstance(); 2 year = c...

    欢醉
  • 列表选择Spinner

    1.只用XML配置来显示列表 在res\values中添加一个arrays.xml 1 <?xml version="1.0" encoding="utf-8...

    欢醉

扫码关注云+社区

领取腾讯云代金券