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

简介

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

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

通过IBM的报告,我们比较了GM Bot样本和SlemBunk。基于这两个恶意软件家族的反汇编,我们认为GM Bot和SlemBunk有足够的代码相似性,他们很可能有共同的起源。有趣的是,我们的研究表明实际上有一个更早的恶意软件家族,名字叫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 SlemBunk恶意软件家庭的主要组件

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

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

 


 

图2 GM Bot和SlemBunk之间的代码结构比较

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

1. Main,两中样本的启动。

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

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

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

 


 

图3 GM Bot和SlemBot中的SDCardServiceStarter类中的方法

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

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

 


 

图4 GM Bot和SlemBunk中的MainService类

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

SimpleLocker 和 SlemBunk

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

最早对SimpleLocker的报告是在2014年由ESET公布的[6]。然而,在2014年5月份的时候,在我们的恶意软件库里面发现了一个更早的样本(SHA256 edff7bb1d351eafbe2b4af1242d11faf7262b87dfc619e977d2af482453b16cb),这个程序的编译日期是2014年5月20日。我们用相同的方法将这个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 SimpleLocker和SlemBunk样本的代码结构对比

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

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

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

 


 

图6 SimpleLocker和SlemBunk变体的代码结构对比

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

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

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

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

 


 

图7 SimpleLocker和SlemBunk的MessageReceiver 类

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

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

结论

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

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

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

本文转自d1net(转载)

时间: 2024-11-01 02:16:51

FireEye:恶意软件家族拥有共同的起源的相关文章

2017十大恶意软件家族

1994年起,每年5月15日被联合国定为国际家庭日.这是注重家庭在培养教育和终身学习方面所发挥作用的日子.通过强调家庭关怀的重要性,国际家庭日鼓励父母教导孩子有关可持续发展.人权.性别平等和组成多元文化与全球化公民基石的其他价值. 安全界也很看重这个日子,坚定认为是家庭是教育的土壤.看看恶意软件给了多少安全公司存在的理由,又激发了多少研究工作就会知道:恶意软件才是安全行业持续教育的源泉. 因此,如果没认识到那些最主流的恶意软件家族仍在欺辱我们的用户,从而刺激信息安全成为研究领域,作为安全行业从业

谷歌捣毁最大Android恶意软件家族之一Chamois

谷歌安全软件工程师Bernhard Grill.Megan Ruthven.Xin Zhao在官博上指出,他们是在常规广告流量质量评估中发现了Chamois. 他们对那些基于Chamois开发而出的恶意软件展开了分析,他们发现这些软件能够通过数种途径避开检测并尝试欺诈用户.于是,他们决定采用Verify Apps来屏蔽掉来自Chamois家族的恶意软件并将那些试图利用这些恶意软件破坏谷歌广告系统的人踢出去. 据了解,Chamois恶意软件看起来并不会出现在设备的软件列表中,更别提去卸载,这时候V

全球五大恶意软件家族曝光 黑客在利用各种攻击媒介和策略攻击技术

3月16日讯 安全公司Check Point表示, Hancitor下载器首次挤进最活跃恶意软件家族排行前5名. 全球五大恶意软件家族曝光 黑客在利用各种攻击媒介和策略攻击技术 - E安全 Hancitor下载器可以在被感染设备上安装银行木马和勒索软件.该软件的全球影响力在过去三个月里增加了2倍以上,排名荣升第至22位.Hancitor也被称为Chanitor,通过网络钓鱼电子邮件伪装成语音邮箱.传真或发票,通常作为启用宏的Office文档散播. 最活跃的恶意软件家族 总体而言,排名前三的恶意软

网络摄像机的四大恶意软件家族:相互抢地盘!

网络安全公司Trend Micro近期揭露了针对网络摄像机的大量恶意软件家族.随着厂商日益加强安全措施,黑客也创建了更为复杂的病毒来反抗.这就是所谓的"道高一尺,魔高一丈". 四大恶意软件家族 不知E安全读者是否耳闻过Persirai?2016年,Persirai借助大规模DDoS攻击使大量网络摄像机沦陷,自此之后,另外三个恶意软件家族出现,一起互相争夺空间.Trend Micro发布博文表示,这三大恶意软件包括: DrvHelper Mirai The Moon 一旦其中任意一个成功

谷歌捣毁安卓恶意软件家族 Chamois:已感染上百万台设备

近日,谷歌捣毁了一个可对安卓设备展开大规模广告欺诈的恶意软件家族 -- Chamois,据谷歌统计,基于 Chamois 开发出的恶意软件已致使上百万台设备受到感染. 谷歌的工程师披露,他们是在进行常规广告流量质量评估时发现了 Chamois,随即,他们对基于 Chamois 开发出的恶意软件进行了分析,他们发现这些软件可以用过各种途径避开检测并欺诈用户.于是,他们最后决定采用 Verify Apps 将 Chamois 家族的恶意软件屏蔽,并把那些企图利用恶意软件破坏谷歌广告系统的人给请出去.

2017恶意软件情况报告

一.概述 在2016年,网络攻击给世界带来了重大影响,甚至成为美国大选中的一个关键因素.在这方面,2016年你可以看到每一个人.甚至是从来没有登录过网站的人都受到了网络攻击和黑客行为的影响. 二.报告研究基础 我们的报告以下面的数据为基础: 几乎十亿恶意软件的检测/发生. 2016年6月到11月期间的数据. 近1亿个Windows和Android设备. 超过200个国家. 来源于企业和消费者环境. 我们的报告关注六类威胁:勒索软件.广告欺诈恶意软件.Android恶意软件.僵尸网络.银行木马和恶

无需解密:在TLS加密连接中揭开恶意软件的面纱

思科一组研究员认为,TLS(传输层安全)隧道中的恶意流量可在不解密用户流量的情况下,被检测并封锁. 企业环境下,这可谓是个大好消息,因为当今的防护都依赖于终止加密来检查流量这种争议性的方法. 在文章中,几位研究员解释称,恶意软件会在TLS流中留下可识别的痕迹. 他们的研究涵盖了18类恶意软件的几千个样本,从某企业网络中捕获的数百万加密数据流中识别出了数万恶意流量.他们指出,这种检测可能只企业网络有效,而对诸如服务提供商之类的无效. 在研究人员数据集中的深度包检测,其主要应用是嗅探出客户端和服务器

安全专家挖掘出新型POS恶意软件NitlovePoS

恶意软件家族真是花样百出,现如今,又出现了一个新的恶意软件–NitlovePoS,它可以捕获和跟踪支付卡行为,并扫描已经感染的机器. 新瓶装旧酒,钓鱼带来的POS恶意软件 FireEye宣称,黑客们搞了一个新花样来钓鱼,他们使用带有敏感字眼的邮件主题来吸引人们的眼球:如找工作.空缺职位.实习.招聘.简历之类云云.这些钓鱼邮件从5月20号的表白日开始,向众多屌丝的邮箱批量轰炸.在邮件里可能会附带一个CV_XXXX(四位数字)格式的doc文件,或者My_Resume_xxxx(四位数字)的doc文件

在Linux系统中安装使用恶意软件扫描工具及杀毒引擎的教程

  恶意软件是指任何旨在干扰或破坏计算系统正常运行的软件程序.虽然最臭名昭著的几种恶意软件如病毒.间谍软件和广告软件,但它们企图引起的危害不一:有的是窃取私密信息,有的是删除个人数据,有的则介于两者之间;而恶意软件的另一个常见用途就是控制系统,然后利用该系统发动僵尸网络,形成所谓的拒绝服务(DoS)攻击或分布式拒绝服务(DDoS)攻击. 换句话说,我们万万不可抱有这种想法"因为我并不存储任何敏感数据或重要数据,所以不需要保护自己的系统远离恶意软件",因为那些数据并不是恶意软件的唯一目标