记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

FireEye:恶意软件家族拥有共同的起源

2016-03-17 16:35

简介

219日,IBM XForce研究者发布了一篇报告[1],是关于201512月份公布出来的恶意软件GM Bot的源代码。GM Bot是一款很繁杂的安卓恶意软件家族,2014年年末出现在俄罗斯的地下犯罪网络中。IBM声称,最近发现的好几款安卓恶意软件家族实际上都是GM Bot的变异体。其中包括Bankosy[2], MazarBot[3], 还有最近FireEye描述的SlemBunk恶意软件。

安全厂商可能对恶意软件的变体有不同的定义。恶意软件变体指的是和原来恶意软件的代码几乎相同或者有一些不同,但是这些从代码是看只有轻微的差别,但实际上差别的非常大。

通过IBM的报告,我们比较了GM Bot样本和SlemBunk。基于这两个恶意软件家族的反汇编,我们认为GM BotSlemBunk有足够的代码相似性,他们很可能有共同的起源。有趣的是,我们的研究表明实际上有一个更早的恶意软件家族,名字叫SimpleLocker——这是第一个已知的文件加密的安卓恶意软件[6] ——这和一些银行木马家族很相似。

GM Bot SlemBunk

我们的分析表明,有四个GM Bot样本都共同引用了SlemBunk的主要组件。图1是我们早期的报告,是SlemBunk的主要组件的代码部分,对应的类名如下:

1. 服务启动器ServiceStarter): 该服务是一个接收器,一个应用或者设备启动的时候,该服务就会后台启动监控服务MainService

2. 主服务MainService: 服务后台运行,可以监控设备所有正在运行的进程。它会正常的app提醒那样通过覆盖视图提醒用户同时这个监控服务会和远程主机进行通信,会发送设备的初始数据设备的状态信息以及应用程序首选项。

3. 信息接收器(MessageReceiver): 是一个安卓的信息接收器,可以处理输入的文本信息。一方面提供拦截银行的身份认证信息功能,另一方面作为客户端执行远程主机的控制命令

4. 请求管理权限(MyDeviceAdminReceiver: app第一次运行的时候,该服务会向系统请求管理员权限,成功后,该app就更难从系统中移除。

5. 自动以UI界面Customized UI views可以自定义用户登录界面,可用于模拟一个假的银行应用程序登录界面或者社交网络登录界面,用于银行钓鱼或者盗取社交账号。

图片1.png

 1 SlemBunk恶意软件家庭的主要组件

前面三个GM Bot样本和提到SlemBunk样本具有相同的包名称。此外GM Bot样本具有的5个组件和图1SlemBunk样本具有相同的组件名

第四个GM Bot样本具有不同的初始但是,在运行起来后解压出真正的payload发现,解压后的payload其实和SlemBunk样本是一样的,同样也有一些改变的地方:MessageReceiver变成了buziabuziaMyDeviceAdminReceiver变成了MDRA

图片2.png 

 GM BotSlemBunk之间的代码结构比较

2展示GM Bot样本SlemBunk样本之间代码结构的相似性(其中SHA256 9425fca578661392f3b12e1f1d83b8307bfb94340ae797c2f121d365852a775eSHA256 e072a7a8d8e5a562342121408493937ecdedf6f357b1687e6da257f40d0c6b27分别是GM BotSlemBunk)。通过这幅图,我们可以知道我们以前文章中[4]讨论到的5重要组件也同样存在于GM Bot样本中。其他常见的类包括:

1. Main样本的启动

2. MyApplication,应用程序的类,比任何其他都早启动

3. SDCardServiceStarter另一个接收器,可以监控MainService的状态,并且如果MainService死了,可以重启它

上面提到的所有组件和类当中,最关键的是MainServiceApp启动的时候通过Main启动,并且在保持在后台运行并且实时监控正在运行的进程检测可以攻击的app运行的时候(e.g. 一些银行的移动应用程序)就会用模拟的登录界面覆盖真实的登录页面,进行钓鱼。为了保证MainService持续运行,恶意软件的作者增加了两个启动器——ServiceStarterSDCardServiceStarter用于检测软件的运行状态,防止特殊的系统时间发生。GM BotSlemBunk有相同的代码结构。3所示,我们可以看到SDCardServiceStarter的主要代码,以及GM BotSlemBunk如何通过同一种机制运行MainService

图片3.png

 图3 GM BotSlemBot中的SDCardServiceStarter中的方法

上图可以看出,GM BotSlemBunk使用相同的代码启动MainService。注意,当样本检测到系统的本地位置是在俄罗斯的时候,就会避免使用MainService启动。唯一不同的是,GM Bot样本将会对这些类方法和字段进行重命,例如:GM Bot中的静态变量“MainService;->a”SlemBunk中的MainService;->isRunning”实际上具有相同的作用。恶意软件作者这么做就是为了混肴视听,让他的代码更难以理解,但是这些无法从底层改变代码架构。

4向我们展示的是GM BotSlemBunk的核心代码类MainService,这表明两种恶意软件具有相同的逻辑结构安卓中,但一个服务启动时,onCreate方法就会被调用。两种样本中的onCreate方法,都是先把一个静态变量设置成trueGM Bot中,静态参数命名“a”然而在Slembu中命名为“isRunning”。然后,两个都继续移动到真实程序的正常设置中注意,两个样本有相同的设置“AppPrefs”。两个样本最后步骤做的任务也都是一样的。特别是,为了检测是否有可以攻击app在运行,调用了一个线程。如果可攻击的app相应的覆盖视图将会被加载到这个app的顶部。两个线程中唯一的不同仅仅是名字上的不同。GM Bot中是“d”,在SlemBunk中是“MainService$2”功能都是用来做凭证钓鱼。

图片4.png

 图4  GM BotSlemBunk的MainService

总之,我们通过分析二进制代码的相似度结果表明IBM结论没错,GM BotSlemBunk确实相同的起源。

SimpleLocker  SlemBunk

在我们的研究中,我们注意到一个更早的安卓恶意软件名叫SimpleLocker也有着和SlemBunkGM Bot相似的代码结构。不同的是,SimpleLocker要求受害者提供赎金。SimpleLocker在安卓设备上运行后,先是扫描设备中特定类型的文件,并且加密这些文件,然后向用户索要赎金之后,才给解密。在SimpleLocker之前,也有其他形式的勒索软件可以锁定屏幕,然而,SimpleLocker被认为是第一款文件加密型的安卓勒索软件。

最早对SimpleLocker的报告是在2014年由ESET公布的[6]。然而,在20145月份的时候,在我们的恶意软件库里面发现了一个更早的样本(SHA256 edff7bb1d351eafbe2b4af1242d11faf7262b87dfc619e977d2af482453b16cb),这个程序的编译日期是2014520日。我们用相同的方法将这个SimpleLocker样本和其中一个SlemBunk样本(SHA256 f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96)进行对比。

图5就是两种样本的代码结构对比图。注意,SimpleLocker变体也有主要的组件ServiceStarter 和MainService,而这两个组件在SlemBunk中也用到。然而,SimpleLocker中的主服务目的不是用于监控app的运行和钓鱼银行登录页面。反而,SimpleLocker的主服务是用于扫描设备中的特定文件,扫到了就调用加密算法对文件进行加密,然后索要赎金。SimpleLocker代码中最大的区别如下图红色框标志的部分:AesCrypt和FileEncryptor。其他的类如下描述的:

1. Main,样本的启动

2. SDCardServiceStarter另一个接受器,可以监控MainService的状态,同时,如果MainService死掉了,还可以重启它

3. Tor and OnionKit,私人通信的第三方库

4. TorSender, HttpSender and Utils,支持类提供CnC通信代码并且收集设备信息

图片5.png 

5  SimpleLockerSlemBunk样本的代码结构对比

最后,我们来看看另一个在20147月份发现的SimpleLocker样本

 (SHA256 304efc1f0b5b8c6c711c03a13d5d8b90755cec00cac1218a7a4a22b091ffb30b),大约是发现第一个SimpleLocker样本后2个月。这个新的样本并没有用Tor作为私密通信,但是,他和SlemBunk样本

(SHA256: f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96)由着四个相同的主要组件。图6向我们展示了两种样本的代码结构对比。

图片6.png 

6 SimpleLockerSlemBunk变体的代码结构对比

正如图6所示,新的SimpleLocker样本使用了和SlemBunk相似的包结构,都是把HttpSender Utils封装进“utils”包。它也添加了其他两个SlemBunk中的主要组件: MessageReceiver MyDeviceAdminReceiver。总的来说,SimpleLockerSlemBunk有四个主要的组件相似。

 7是之前样本的MessageReceiver的主要代码,这表明SimpleLockerSlemBunk使用的是基本相同的流程,并且,使用相同的逻辑结构进行CnC通信。首先,MessageReceiver类本身用来处理传入的短信,这将会触发onReceive函数。如下图所示,他们的逻辑结构基本上是相似的。他们都是先读取应用程序的key值。注意两个软件的key值的名字和preference的名字是相同的:key值是“CHECKING_NUMBER_DONE”并且preference值是 “AppPrefs”。

接下来的步骤就是调用retrieveMessage 方法来检索短信息。在这里,唯一一个不同点是SimpleLocker多了一个额外的名叫processControlCommand的控制流。

 SmsProcessor类定义了恶意软件提供的CnC指令。我们来看下SmsProcessor类,我就发现,越来越多的证据指向SimpleLockerSlemBunk有共同的起源。首先,SimpleLocker提供的CnC指令实际上是SimpleLocker提供的一个子集。在SimpleLocker中,CnC指令包括“intercept_sms_start”, ”intercept_sms_stop”, ”control_number” “send_sms”,这些指令在SlemBunk样本中也有提供。甚至,SimpleLockerSlemBunkCnC指令都有一个常见的前缀“#”。这也表明两种软件由着相同的起源。

图片7.png 

7 SimpleLockerSlemBunkMessageReceiver 

MyDeviceAdminReceiver类的任务是请求所在设备的管理员权限,这可以让恶意软件难以被清除,当然这方面两种软件也是高度的相似。

 在这一段中,我们可以看到SimpleLockerSlemBunk5个主要组件中有4个是一样的,并且提供相同的支持工具。唯一的区别在于他们的勒索方式,SlemBunk提供了银行认证钓鱼,而SimpleLocker是通过加密文件索要赎金。这让我们更加有理由相信这两种恶意软件起源于相同的代码库。

结论

我们的分析证明有还几款安恶意软件都有共同的起源,并且,已知的第一款文件安卓加密勒索软件——SimpleLocker——是以一些银行木马程序的代码修改而成。进一步研究就能发现其他相关的恶意软件。

地下网络犯罪中有很多个人开发者已经开始定制化写恶意软件。不管为了特殊目的还是普通的目的写出来的恶意软件,都可以共享一些基础的功能,例如:获取管理员权限,开启和重启服务,CnC通信。这些可以从GM BotSimpleLocker的对比中看出来。

随着GM Bot源代码的泄漏,基于该代码定制的安卓恶意软件家族也必然增加。

参考:

[1]. Android Malware About to Get Worse: GM Bot Source Code Leaked
[2]. Android.Bankosy: All ears on voice call-based 2FA
[3]. MazarBOT: Top class Android datastealer
[4]. SLEMBUNK: AN EVOLVING ANDROID TROJAN FAMILY TARGETING USERS OF WORLDWIDE BANKING APPS
[5]. SLEMBUNK PART II: PROLONGED ATTACK CHAIN AND BETTER-ORGANIZED CAMPAIGN
[6]. ESET Analyzes Simplocker – First Android File-Encrypting, TOR-enabled Ransomware

*参考来源:fireeye.com ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

知识来源: www.freebuf.com/articles/terminal/99156.html

阅读:110714 | 评论:0 | 标签:终端安全 GM Bot

想收藏或者和大家分享这篇好文章→复制链接地址

“FireEye:恶意软件家族拥有共同的起源”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云

本页关键词