Rotexy:兼备银行木马及勒索软件功能的移动木马

原文:https://securelist.com/the-rotexy-mobile-trojan-banker-and-ransomware/88893/

0x00 概述

随着特洛伊木马活动的激增,我们决定进行深入分析,跟踪除Asacub之外其他一些流行恶意软件家族的演变过程。迄今为止我们发现的最为有趣和最为活跃的一个目标是来自Rotexy家族的移动木马。在2018年8月至10月的三个月内,该木马发起了70,000多起攻击,受害用户主要位于俄罗斯境内。

这个银行木马家族有个一个有趣的特征,就是同时使用三个命令源:

1、Google Cloud Messaging(GCM)服务:通过Google服务器)将JSON格式的小邮件发送到移动设备;

2、恶意C&C服务器;

3、SMS消息。

Rotexy的第一个版本中就具备这种“多功能性”,并且所有后续变种中都包含该特性。在我们的研究过程中,我们得出一个结论:这个木马源自于2014年10月首次发现的短信间谍软件,当时该恶意软件被检测为Trojan-Spy.AndroidOS.SmsThief,但后来的变种被归类为另一个家族:Trojan-Banker.AndroidOS.Rotexy

较新版的Rotexy结合了银行木马和勒索软件的功能,该恶意软件以AvitoPay.apk名称(或类似名称)传播,并从可以从youla9d6h.tkprodam8n9.tkprodamfkz.mlavitoe0ys.tk等网站下载。这些网站域名使用特定的算法生成:前几个字母带有热门分类广告服务的含义,其次是随机字符串,后面跟着两个字母的顶级域名。在详细介绍Rotexy最新版本及其特点之前,让我们先简要回顾一下该木马自2014年以来到现在的演化路径。

0x01 Rotexy进化历史

2014-2015

该恶意程序自2014年被发现以来,其主要功能和传播方法没有发生改变:都是通过网络钓鱼短信中包含的链接来传播Rotexy,提示用户安装应用程序。恶意软件在启动时,会请求设备管理员权限,然后开始与C&C服务器通信。

图 木马DEX文件典型类列表

直到2015年中期,Rotexy依然使用JSON格式纯文本与C&C进行通信。C&C地址会在代码中进行指定,也没有经过加密处理:

在某些版本中,恶意软件会使用动态生成的底层域名用作C&C地址。

在第一次通信中,该木马会将受感染设备的IMEI信息发送到C&C,服务器会返回用来处理SMS消息的一套规则(包含电话号码、关键字和正则表达式),这些规则主要适用于来自银行、支付系统和移动网络运营商的SMS信息。例如,该木马可以自动回复短信并立即将原始信息删除。

图 请求服务器返回SMS处理模板以及服务器返回的内容

随后Rotexy会将有关智能手机的一些信息发送给C&C服务器,其中包括手机型号、号码、移动网络运营商名称、操作系统版本和IMEI。

对于后续每个请求,恶意软件都会生成一个新的子域名。生成最底层域名的算法已经事先硬编码到木马的代码中。

该木马还会注册Google Cloud Messaging(GCM)服务,这意味着它可以通过该服务接收命令。木马可能使用的命令列表在整个生命周期中几乎保持不变,下文将详细介绍这些命令。

木马的assets文件夹中包含data.db文件,该文件中包含PAGE命令(用来下载指定网页)所对应的User-Agent字段值。 如果未能从C&C获取该字段值,则木马会使用伪随机算法从data.db文件中选择一个值。

data.db内容

2015-2016

从2015年年中开始,该木马开始使用AES算法来加密被感染设备与C&C之间的通信数据:

同样从该版本开始,相关数据会通过POST请求发送到格式为/[number]的相对地址(数字采用伪随机生成,范围为0-9999)。

从2016年1月开始,在某些样本中,攻击者已经实现了一种算法,用来从assets文件夹中提取经过加密的DEX可执行文件。在此版本的Rotexy中,攻击者并没有使用动态生成的最底层的域名。

2016

从2016年年中开始,网络犯罪分子重新使用动态生成的最底层域名。在木马的网络行为中没有出现其他重大变化。

图 木马向C&C发起请求

在2016年末,有些木马变种会在assets/www文件夹中包含card.html钓鱼页面。该页面的目的是窃取用户的银行卡详细信息:

2017-2018

从2017年初开始,木马的assets文件夹中开始包含bank.htmlupdate.htmlextortionist.html这些HTML钓鱼页面。此外,在某些版本的木马中,网页所使用的文件名为随机字符串。

2018年,Rotexy变种开始出现,该变种使用其IP地址与C&C服务器联系。“一次性”域名随之出现,该域名由随机字符串和数字组成,并且使用.cf.ga.gq.ml或者.tk作为顶级域名。

此时,木马开始积极使用不同的混淆方法。例如,DEX文件中包含垃圾字符串以及/或者垃圾操作,并且包含用来从APK解密主可执行文件的密钥。

0x02 最新版分析(2018)

让我们将视线回到当前时间点,开始详细介绍Rotexy变种的最新版本(SHA256:ba4beb97f5d4ba33162f769f43ec8e7d1ae501acdade792a4a577cd6449e1a84)。

启动应用

在第一次启动时,木马会检查自己是否在仿真环境中启动,以及处在哪个国家/地区。如果设备位于俄罗斯境外或者是模拟器环境,则应用程序将显示一个伪装页面:

在这种情况下,木马的日志中会包含使用俄语的一些记录,记录中还存在语法错误和拼写错误:

如果检查通过,Rotexy会向GCM注册并启动SuperService,以跟踪木马是否具有设备管理员权限。如果被停止运行,SuperService还会跟踪自己的状态并重新启动。木马每秒执行一次特权检查,如果不具备这个权限,木马会向用户无限循环请求这些权限:

如果用户同意并赋予应用程序所请求的权限,则木马会显示另一个页面,并且隐藏自身图标:

如果木马检测到用户试图撤销其管理员权限,则会立即关闭手机屏幕,尝试停止用户操作。如果成功撤销权限,则木马会重新不断请求管理员权限。

如果由于某种原因,当用户试图撤销木马设备管理员权限时,SuperService并没有关闭屏幕,那么木马会试图警告用户:

在程序运行时,Rotexy会跟踪以下操作:

1、打开并重启手机;
2、终止木马运行:在这种情况下,木马会重新启动;
3、应用程序发送短信:在这种情况下,手机将切换到静音模式。

C&C通信

默认的C&C地址已经硬编码到Rotexy代码中:

木马将以伪随机算法生成相对地址,将信息发送到该地址。对于不同的木马版本,有些变种还可以使用动态生成的子域名。

图 在这个木马样本中,Plugs.DynamicSubDomain的值为false,因此不会生成子域名

木马将与C&C服务器有关的信息以及从被感染设备收集的数据存储在本地的SQLite数据库中。

首先,木马会在管理面板中注册,并从C&C服务器接收操作所需的信息(即SMS拦截模板和将在HTML页面上显示的文本):

Rotexy会拦截收到的所有SMS消息,并根据从C&C服务器收到的模板来处理这些消息。此外,当收到短信时,木马会将手机置于静音模式并关闭屏幕,使用户不会注意到已到达的新短信。在需要时,木马会将拦截的SMS发送到指定的电话号码(在拦截模板中指定是否必须发送回复消息,以及应将哪个文本发送到哪个地址)。如果应用程序未收到如何处理SMS消息的规则,则只会将所有SMS保存到本地数据库,并将这些消息上传到C&C服务器。

除了关于当前设备的普通信息外,木马还会将正在运行的所有进程和已安装的应用程序列表发送给C&C服务器。攻击者可能会使用该列表来查找正在运行的防病毒或银行应用程序。

Rotexy收到相应的命令后会执行后续操作:

Rotexy的C&C服务器不仅可以由Web服务器来承担,还可以由任何可以发送SMS的设备来承担。 木马会拦截传入的SMS消息,并可以从这些消息中接收以下命令:

Rotexy执行的所有操作相关信息均记录在本地数据库中,并会发送到C&C服务器。随后服务器会返回响应数据,其中包含下一步要执行的操作。

显示HTML页面

现在让我们来分析一下Rotexy可以显示的HTML页面,以及木马会使用这些页面执行哪些操作。

1、木马显示一个伪造的HTML更新页面(update.html),可以长时间挡住设备的屏幕。

2、木马显示敲诈设备的敲诈页面(extortionist.html),并要求用户支付勒索赎金以解除设备阻止。该屏幕截图中的色情图片已被打上黑色马赛克。

3、木马显示一个网络钓鱼页面(bank.html),提示用户输入银行卡详细信息。该页面模仿合法的银行页面,并挡住设备屏幕,直到用户输入所有信息为止。木马甚至拥有自己的虚拟键盘,假装可以保护受害者不受键盘记录器的影响。

{text}标记的区域中,Rotexy会显示从C&C服务器收到的文本。通常该字段为一条消息,声称用户已收到汇款,必须输入用户的银行卡详细信息,才能将钱转移到用户的帐户中。

然后木马会检查用户输入的数据,还还根据C&C服务器命令中发送的数据来检查银行卡号的最后四位数字。具体攻击中可能会出现以下这种情况:根据收到的SMS消息的处理模板,Rotexy会拦截来自银行的消息,该消息中包含与用户电话号码绑定的银行卡的最后四位数字。木马将这些数字发送给C&C服务器,C&C服务器又会返回命令,显示伪装的数据输入窗口以检查这四位数字。如果用户提供了另一张卡的详细信息,则会显示以下窗口:

图 显示提示消息:“您输入的卡片不正确,请输入尾号为1234的银行卡“

这样一来,用户只能输入正确的卡号,因为木马会检查输入的号码是否与攻击者之前收到的银行卡详细信息相匹配。

当用户输入所有必要的银行卡详细信息,并且恶意软件通过卡号检查后,会将所有信息上传到C&C服务器。

0x03 如何解锁手机

现在还是有一些好消息可以告诉大家:Rotexy并不具备一个设计精良的模块,用来处理包含在SMS消息中命令。 这意味着在某些情况下,当手机被上述几个HTML页面锁定时,我们还是可以解除手机锁定状态。 我们可以通过SMS消息将“3458”文本发送到被锁定的设备来解锁,这将撤销木马的管理员权限。之后,我们还需要将“stop_blocker”文本发送到相同的号码:这将禁止设备显示敲诈并锁定屏幕的HTML页面。Rotexy可能会通过无限循环再次请求设备管理员权限,在这种情况下,请以安全模式重启设备并删除恶意程序。

但是,如果攻击者能够对尝试删除木马的行为快速做出反应,则这种方法可能无法奏效。在这种情况下,我们首先需要通过SMS消息将文本“393838”发送到被感染的设备,然后重复上述操作。这条短信会将C&C服务器地址更改为“://”,这样一来手机将不再接收来自实际C&C服务器的命令。

请注意,这些解锁指令只适用于当前版本的Rotexy,并已做过解锁测试。但是,在未来版本的木马中,所使用的命令集可能会发生变化。

0x04 Rotexy攻击的地理区域

根据我们观测到的数据,98%的Rotexy攻击针对的都是俄罗斯用户。实际上,这个木马明确针对的是以俄语为母语的用户。乌克兰、德国、土耳其和其他几个国家的用户也会受到影响。

适用于Android系统的Kaspersky Internet Security和Sberbank Online应用程序可保护用户免受此木马攻击。

0x05 IOC

SHA256

0ca09d4fde9e00c0987de44ae2ad51a01b3c4c2c11606fe8308a083805760ee7
4378f3680ff070a1316663880f47eba54510beaeb2d897e7bbb8d6b45de63f96
76c9d8226ce558c87c81236a9b95112b83c7b546863e29b88fec4dba5c720c0b
7cc2d8d43093c3767c7c73dc2b4daeb96f70a7c455299e0c7824b4210edd6386
9b2fd7189395b2f34781b499f5cae10ec86aa7ab373fbdc2a14ec4597d4799ba
ac216d502233ca0fe51ac2bb64cfaf553d906dc19b7da4c023fec39b000bc0d7
b1ccb5618925c8f0dda8d13efe4a1e1a93d1ceed9e26ec4a388229a28d1f8d5b
ba4beb97f5d4ba33162f769f43ec8e7d1ae501acdade792a4a577cd6449e1a84
ba9f4d3f4eba3fa7dce726150fe402e37359a7f36c07f3932a92bd711436f88c
e194268bf682d81fc7dc1e437c53c952ffae55a9d15a1fc020f0219527b7c2ec

C&C服务器地址

2014–2015:

2015–2016:

2016:

2017–2018:

源链接

Hacking more

...