Android.FakeInstaller 是一个广泛传播的移动恶意软件系列。它曾假冒奥运会赛事成绩应用程序、Skype、Flash Player、Opera 和许多其他流行应用程序。事实上,在移动恶意软件界,FakeInstaller 系列是我们所分析过的最猖獗的恶意软件之一。迈克菲所处理过的针对 Android 系统的恶意软件样本中,超过 60%是来自 FakeInstaller系列。随着其增加了服务器端多态、混淆、反逆向以及频繁重编译等伎俩用来逃避检测,这一威胁已逐渐加大。
Android.FakeInstaller 会向收费服务的电话号码发送消息,无需用户同意,便可将自身伪装成合法的安装程序。这一恶意软件有大量变体,通过数以百计的网站和假冒市场进行传播,且覆盖面逐日扩大。
Android.FakeInstaller 图标
在用户搜索流行应用程序时,如果通过搜索引擎或社交网络不慎访问了一个假冒的官方站点或假冒市场,就会遇到貌似合法的应用程序,包含截屏、用户评价、说明、视频等,以引诱受害者下载恶意软件。当用户在执行 Android.FakeInstaller 时,首先会显示一个服务协议,告诉用户将会发送一条或多条短信,这一界面足以迷惑很多人,当用户开始点击"同意"或"下一步"按钮,系统便开始强制性的给用户发送收费短信。我们还发现一些版本在受害者点击按钮之前,便已经发送了短信。
Android.FakeInstaller 有不同的版本,它会模拟合法应用程序的安装或下载界面
在用户点击按钮后,FakeInstaller 有时会显示一个虚假的下载进度条。最后,对话框关闭,受害者被重定向到另一个假冒市场。用户也不可能得到想要的应用程序。#p#
多态服务器
与此同时,我们还发现了FakeInstaller 的若干变体,它们的相同点都集中在有效载荷方面,主要区别在于代码实现。其中一些还带有额外有效荷载。一般情况下,每个系列都与一组服务器、域名和假冒应用程序市场相关联。
而由于多数FakeInstallers 是服务器端多态的,因此这种关系非常强大,这意味着服务器(根据其配置)可能会针对同一 URL 请求提供不同的 APK 文件。
如果受害者要从假冒市场下载应用程序,服务器会将浏览器(browser)重定向到另一个处理该请求的服务器,并发送定制好的 APK,该 APK 包含一个在生成的 URL 中关联的 ID。APK 文件与受害者的 IP 地址相关联。
例如:假冒的"Opera Mini 6.5" APK 文件会从一个 URL (http://[censored]loads.ru/tds?r=3967) 下载,而从两个 IP 地址(A 和 B)访问。因此,受害者被重定向到不同的 URL 并下载非常相似的 APK 文件,这些文件会在 file res/raw/config.txt 中包含一些差别之处,它们与重定向的 URL 相关。
下图显示了 file res/raw/config.txt 内部的差别,它们存在于下载自 IP地址 A 和 B 的.样本中。
因此,这一改动会导致数字签名(MANIFEST、MYKEY2.SF 和 MYKEY2.RSA)的变化。这一恶意软件的其他变体包含一个图片(或一个俄文笑话)以增加或改变 APK 文件的大小。
向收费号码发送消息
以前的 FakeInstaller版本都是针对西欧用户创建,如今,恶意软件开发者已经将其欺诈的触角延伸到了其他国家与地区--通过添加指令来获得设备的移动国家码和移动网络码。根据这类信息, Android/FakeInstaller 会选择收费号码并向其发生短信。最初版本的短信都包含在 DEX 文件中,而最新版本的短信则包含在 APK 中的加密 XML 文件里。迄今为止,我们已经发现最多发送达7条收费短信的 FakeInstaller 样本。#p#
逃避分析:Java 混淆和重编译
通常,在一个假冒市场,所有应用程序都包含相同的 DEX 文件。经过一段时间,会为所有应用程序变更 DEX 文件。恶意软件编写者会使用同一代码新的重编译版本来更改其 DEX 文件,或者实施新的功能并包含一些外观变化,假冒安装进度条动画、图标和文本等。
最新版本的 FakeInstaller 包含同一代码的不同重编译混淆版本,更改源文件名、行号、字段名、方法名、参数名和变量名等。
在下图中,我们可以看到同一变体的两个混淆版本,它们在两天时间里出现在同一假冒市场:
诸如 ProGuard 或 DexGuard 之类的混淆会删除调试信息并将所有名称替换为无意义的字符序列,这样就更难以对代码进行逆向工程。有些版本(如 Android.FakeInstaller.S)还包含反逆向伎俩,能够有效规避动态分析,防止恶意软件在模拟器中运行。#p#
僵尸网络伎俩
有一些版本的 Android.FakeInstaller 不仅仅向收费号码发送短信,还包含后门程序以便从远程服务器接收命令。FakeInstaller.S 使用"Android Cloud to Device Messaging" 来将受感染的设备注册到一个数据库,并从恶意软件编写者的Google 帐户向它们发送消息 (URL)。
传播伎俩
由于服务器端的多态性,我们还不得不考虑的一个问题是新的假冒网站和假冒市场每天都会涌现。这些站点将受害者的下载重定向到一组 IP 地址和域,如下图所示:
一些此类站点看上去相当具有迷惑性,并且能轻易地让受害者中招,原因在于它们被索引在诸如 Yandex 之类的搜索引擎中,在搜索结果排名中有着不错的位置。为了逃避检测,一些假冒站点会将来自恶意来源的应用程序下载链接重定向到无害的 APK 文件,然后再恢复链接。
我们还曾发现有的站点将 URL 通过 Twitter 由僵尸帐户和假冒 Facebook 配置文件进行共享。
结论
恶意软件编写者通过这类欺诈攫取了大量不义之财,因此,他们一定还会不断完善基础设施、代码和伎俩来试图规避防病毒软件。在迈克菲看来,这将是一场无休止的对抗,而我们能做的就是完善自身,不断提高本身的安全系数,来规避这些恶意软件。