Fnut · 2016/03/18 10:38

0x00 前言


二月19号,IBM XForce的研究员发布了一个情报报告,这份报告声称GM BOT的源代码在2015年12月被泄漏到了一个恶意软件的论坛上。GM BOT是一个复杂的安卓恶意软件家族,它出现在2014年末俄语地区的网络犯罪地下组织。IBM同时声称几个在最近的安全会议上提出的Android恶意软件家族实际上也是GM BOT的变种,包括Banskosy,MazarBot,以及FireEye最近提到的恶意软件Slembunk。

安全厂商可能在一个恶意软件的“变种”定义上各不相同。这一术语可以指完全相同的代码仅仅做轻微的改动,也可以指表面相似然而其他地方非常不同的代码(比如有相似的网络通信)。

通过使用IBM的报告,我们分析了它们的GM BOT样本和SlemBunk的样本。基于这两个家族的反汇编代码,我们认为有足够多的代码相似性可以表明GM BOT和SlemBunk拥有相同的起源。有意思的是,我们的研究让我们也认为早期的一个恶意软件家族SimpleLocker(Android上最早为人所知的文件加密型勒索软件)也同样具有和之前两个家族相同的起源。

0x01 GM BOT和SlemBunk


我们的分析发现最近被IBM研究者提到的四个GM BOT样本都和SlemBunk拥有相同的主要组件。如下图所示,我们早期的报告展示了SlemBunk主要的组件以及相应的类名:

  • ServiceStarter:一旦一个应用被启动或者设备启动就会调用这个Android接收器。它的功能是在后台启动监控服务,MainService。
  • MainService:运行在后台并监控所有在设备上运行的进程的Android服务。当一个应用被启动后,它会为用户提供一个覆盖式的类似于合法应用的视图。这项监控服务会通过发送原始设备信息、告知设备状态和应用程序偏好来和一台远程主机进行通信。
  • MessageReceiver:处理进入的文本信息的Android接收器。除了拦截来自银行的验证码的功能之外,这个组件也充当着作为一个发送远程命令和进行控制的机器人客户端(C2)。
  • MyDeviceAdminReceiver: 当这个应用首次被启动之后,这个接收器就会请求这个Android设备的管理员权限。这会让这个应用更难被移除。
  • Customized UI views:呈现虚假登陆页面的Android类,这些虚假的登录页面都是模仿真正的银行应用 或者社交应用的,这样就可以进行钓鱼来获得银行或者社交账户凭证。

前三个GM BOT样本都和我们的SlemBunk样本有相同的包名。除此之外,这些GM BOT样本有5个相同的主要的组件,包括和上图的SlemBunk样本一样,拥有相同的组件名称。

第四个GM BOT有不同的初始化包名,但是会在运行时解压真正的payload。解压的payload拥有和SlemBunk相同的主要组件,只是在类名上有一些小的改变:比如MessageReceiver替换成了buziabuzia,以及MyDeviceAdminReceiver替换成了MDRA。

上图展示的是GM BOT样本(SHA256 9425fca578661392f3b12e1f1d83b8307bfb94340ae797c2f121d365852a775e)和一个SlemBunk样本(SHA256 e072a7a8d8e5a562342121408493937ecdedf6f357b1687e6da257f40d0c6b27)之间代码结构的相似性。从这张图中我们可以发现,我们之前讨论的5个主要的组件也出现在了GM BOT样本里。其他共同的类包括:

  • Main: 两个例子中的启动的activity。
  • MyApplication:两个例子中在任何其他的activity启动之前启动的应用的类。
  • SDCardServiceStater:另外一个监视着MainService的接收器,一旦MainService挂掉了就把它重启。

在上面所有的这些组件和类中,MainService是最重要的一个。它是在启动时被Main类启动的,并持续在后台运行来监控运行最多的进程,当一个受害者的应用(比如一些手机银行APP)被监控到时就将一个钓鱼页面覆盖上去。为了保持MainService持续运行,恶意软件作者添加了两个receiver——ServiceStater和SDCardServiceStater,以此来检查接收到特殊的系统事件时的运行状态。GM BOT和SlemBunk样本都有同样的结构。下图展示的SDCardServiceStater类的主要代码是为了说明GM BOT和SlemBunk使用了同样的机制来维持MainService运行。

从这张图中我们可以发现,GM BOT和SlemBunk使用几乎相同的代码来保持MainService运行。值得注意的是两个样本都在系统区域设置中检查了城市,如果是俄罗斯就不启动MainService。唯一的区别就是GM BOT对某些类名、方法和字段进行了重命名混淆。比如,GM BOT中的静态变量“MainService;->a”和SlemBunk中的“MainService;->isRunning”是同样的功能。恶意软件作者使用这种方式来让他的代码更难去理解。然而这并不会改变根本的代码是来自于相同的起源这一事实。

下图展示的MainService类的核心代码说明GM BOT和SlemBunk拥有相同的主服务逻辑。在Android中,当一个服务被启动,就会调用它的onCreate方法。在两个样本中的onCreate方法里,一个静态的变量都会首先被设置为“True”。在GM BOT中,这个变量被命名为“a”,而在SlemBunk中它被命名为“isRunning”。并且它们都会去读取应用程序偏好,并且在两个样本中有同样的命名:“AppPrefs”。这两个主服务的最后的任务也是相同的。如果一个受害者的应用在运行,一个钓鱼的页面就会覆盖到受害者的应用之上。

0x02 SimpleLocker和SlemBunk


IBM声称GM BOT出现在2014年末俄语地区的网络犯罪地下组织。在我们的研究中,我们注意到更早的名为“SimpleLocker”的Android恶意软件也有和GM BOT、SlemBunk相似的代码框架。然而,SimpleLocker有不同的目的:从受害者处索要赎金。在安装到一个Android设备以后,SimpleLocker会扫描设备的特定文件类型,对它们进行加密然后向受害者索要解密的赎金。在SimpleLocker出现之前,也有其他的Android恶意软件会将屏幕锁住;但是SimpleLocker是第一个Android上的文件加密型的勒索软件。

我们知道的更早的关于SimpleLocker的报告是ESET发表于2014年6月的(Links)。然而,我们也在我们2014年5月的恶意软件数据库中发现了一个更早的样本(SHA256 edff7bb1d351eafbe2b4af1242d11faf7262b87dfc619e977d2af482453b16cb)。这个APP编译的时间是2014年5月20号。我们把这个SimpleLocker的样本和其中一个SlemBunk的样本(SHA256 f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96)用比较GM BOT和SlemBunk的方法进行了比较。

下图展示的是两个样本代码结构的比较。值得注意的是这个SimpleLocker的变种也有主组件ServiceStater和MainService,这两个也都被SlemBunk所使用。然而,这里的主服务的目的不是监视进程的运行并进行钓鱼来获取银行信息。SimpleLocker的主服务组件会扫描设备来查找受害者的文件,然后会调用文件加密类来对文件进行加密进而进行勒索。SimpleLocker代码中主要的不同如下图红框所示:AesCrypt和FileEncryptor。其他共同的类包括:

  • Main, 两个样本中的启动的activity。
  • SDCardServiceStarter,另一个receiver监视MainService的状态,当它死掉之后会把它重启。
  • Tor and OnionKit,第三方的lib库文件用来进行私密通信。
  • TorSender, HttpSender and Utils,支持类来提供代码以进行CnC通信,以及收集设备信息。

最后,我们定位到了另一个2014年6月的SimpleLocker样本(SHA256 304efc1f0b5b8c6c711c03a13d5d8b90755cec00cac1218a7a4a22b091ffb30b),大约在第一个SimpleLocker样本被发现两个月之后。这个新的样本没有使用Tor来进行私密通信,但是和之前的SlemBunk样本(SHA256: f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96)的5个主要的组件有四个是相同的。下图展示了两个样本的代码结构的比较。

正如我们在上图中看到的那样,新的SimpleLocker样本使用了和SlemBunk相似的打包机制,把HttpSender和Utils打包到了名叫“utils”的子包中。它也添加了两个其他的最初只在SlemBunk中看到的主要组件:MessageReceiver和MyDeviceAdminReceiver。总的来说,这个SimpleLocker的变种木马和SlemBunk在5个主要组件里有4个是相同的。

下图展示的是上个例子中MessageReceiver的主要的代码,来证明SimpleLocker和SlemBunk基本上使用了相同的进程和逻辑来和CnC服务器进行通信。首先,MessageReceiver类会先register来处理收到的短消息,这些短消息的到达会触发onReceive方法。正如图中所示,这里的主逻辑基本上是和SimpleLocker和SlemBunk一样的。他们首先会从应用偏好设置中读取一个特殊的键的键值。这个键的名字和共享的偏好设置对于这两个不同的恶意软件家族来说是一样的:键名为“CHECKING_NUMBER_DONE”,偏好设置名为“AppPrefs”。下面的步骤调用retriveMessage方法来检索短消息,接下来会把控制流传到SMSProcessor类。这里唯一的不同就是SimpleLocker添加了一个额外的方法processControlCommand来进行控制流传输。

SmsProcessor类定义了恶意软件家族支持的CnC命令。通过对SmsProcessor的观察,我们发现了更多的证据证明SimpleLocker和SlemBunk是有相同的起源的。首先,SimpleLocker支持的CnC命令实际上是SlemBunk支持的命令的子集。在SimpleLocker中,CnC命令包括“intercept_sms_start”、“intercept_sms_stop”、“control_number”和“send_sms”,所有的这些都在SlemBunk样本中出现过。并且,在SimpleLocker和SlemBunk中都有共同的前缀“#”在实际的CnC命令前。这也是SimpleLocker和SlemBunk有相同起源的非常重要的证据。

MyDeviceAdminReceiver类的任务是请求设备管理员权限,这会让这些恶意软件很难被移除。SimpleLocker和SlemBunk在这个方面极其类似,支持一套相同的设备管理相关函数。

我们可以发现这些SimpleLocker和SlemBunk的变种木马在主要控件上基本相同,和对相同的设备支持性上的相似性。唯一不同的就是最后的payload,SlemBunk是为了对银行信息进行钓鱼而SimpleLocker是为了加密文件索要赎金。这也让我们相信SimpleLocker和SlemBunk来自于相同的作者之手。

0x03 结论


我们的分析确认这几个Android恶意软件家族拥有共同的来源。更多的研究可能会发现更多相关的恶意软件家族。

网络犯罪地下组织的独立的开发者在编写和定制恶意软件方面是很熟练的。正如我们所知,带有特殊或者多样化目的的恶意软件可以建立在对一些通用功能的共享代码上实现,比如获取管理员权限、启动以及重启服务、以及CnC通信。

随着GM BOT代码的泄露,基于这些代码定制的Android恶意软件家族必然会增多。

0x04 Reference


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

拥有相同的起源的Android恶意软件家族——GM BOTSlemBunk相关推荐

  1. Android恶意软件模拟器检测技术

    前言 下面的报告来自SophosLabs实验室的Android安全专家陈宇,还有来自Android组的成员William Lee, Jagadeesh Chandraiah and Ferenc Lá ...

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

    简介 2月19日,IBM XForce研究者发布了一篇报告[1],是关于2015年12月份公布出来的恶意软件GM Bot的源代码.GM Bot是一款很繁杂的安卓恶意软件家族,2014年年末出现在俄罗斯 ...

  3. 目前的Android恶意软件分类

    本文总共列出了119类恶意软件家族 列表列出了截止日期是2013年2月28日的Android平台上的木马以及在mobile-sandbox-system上的检测结果.这个表会一直更新,每个家族选取一列 ...

  4. Android恶意软件检测

    原创稿件征集 邮箱:edu@antvsion.com QQ:3200599554 黑客与极客相关,互联网安全领域里 的热点话题 漏洞.技术相关的调查或分析 稿件通过并发布还能收获 200-800元不等 ...

  5. Android恶意软件偷取Uber凭证

    近期,一种新的Android恶意软件变种Android.Fakeapp被研究人员所披露.据了解该Android恶意软件主要目标是窃取Uber用户的凭证信息,然后使用合法的Uber app的深层链接来隐 ...

  6. yara 模式匹配 android,恶意软件模式匹配利器 – YARA

    YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具(由virustotal的软件工程师Victor M. Alvarezk开发),使用YARA可以基于文本或二进制模式创建恶意软件家 ...

  7. android如何添加透明图片按钮,如何拥有透明的ImageButton:Android

    如何拥有透明的ImageButton:Android android:layout_width="wrap_content" android:layout_height=" ...

  8. Android恶意软件特征及分类

    针对Android的恶意软件,除了熟知的木马.病毒,还有勒索软件(ransomware).广告(adware)和间谍软件(spyware). 要研究Android的恶意软件,首先需要知道,软件的哪些行 ...

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

    网络安全公司Trend Micro近期揭露了针对网络摄像机的大量恶意软件家族.随着厂商日益加强安全措施,黑客也创建了更为复杂的病毒来反抗.这就是所谓的"道高一尺,魔高一丈". 四大 ...

最新文章

  1. SQL server2000数据库备份和还原语句
  2. 三菱gxworks3安装失败_三菱电梯nexway故障表
  3. 5gnr帧结构特点有哪些_真空离子束刻蚀设备的结构特点有哪些
  4. 长沙城南学院的计算机科学,长沙理工大学城南学院计算机科学与技术专业2016年在云南理科高考录取最低分数线...
  5. android gesture,Android Gesture 手势创建以及使用示例
  6. Sketch项目安装缺失字体
  7. ASP.NET商贸进销存管理系统源码(带数据库文档)源码免费分享
  8. 双11,一大波建站优惠,你还不来网站建设吗?
  9. 大鱼吃小鱼java程序设计
  10. 计算机进入pe快捷键,华硕笔记本电脑快捷键进入u盘启动教程
  11. 2022下半年软考成绩即将公布,预约查分提醒,查分快人一步
  12. 香港主机如何设置网站404页面
  13. 6-1 判断顺序表是否有序(Java语言描述)
  14. 用Java代码编程实现模拟机器人对话
  15. flutter显示图标_flutter 引入第三方 Icon 图标(以阿里图标库为例)
  16. ElementUI的el-tree实现懒加载查询和直接全部查询出来
  17. yolov7正负样本分配详解
  18. 以太坊解析:默克尔树、世界状态、交易及其他
  19. B2c购物网(一) 数据库关系图
  20. 支持MOC的协议(不大好使呀)

热门文章

  1. matlab内存不足的情况解决方案
  2. 【报告分享】2021年上半年母婴食品行业“新”观察-数据威(附下载)
  3. 访黏度计算公式_FactSage粘度模块Viscosity的基本使用方法(一)
  4. 手机吃鸡语音服务器异常错误,为什么我手机吃鸡游戏语音说不了话 | 手游网游页游攻略大全...
  5. 必看:28条经典职场语录
  6. Pjsip conference分析
  7. B站,正在变成下一个“公众号”?
  8. Webkit 文字和背景效果
  9. 祝贺各位腊八节节快乐,也祝贺驰骋BPM签订山东义里
  10. 关于电子、通信专业学生、工程师学习方法分享