导语:2016年末,一款名为Fanta SDK的安卓恶意软件攻击了俄罗斯联邦储备银行(Sberbank),并在攻击过程中采用了独特的防御措施。研究人员将这款app的主服务器跟其它恶意行动如传播Cridex、Ramnit和ZBOT银行木马的恶意行动的基础架构联系在一起
2016年末,一款名为Fanta SDK的安卓恶意软件攻击了俄罗斯联邦储备银行(Sberbank),并在攻击过程中采用了独特的防御措施。研究人员将这款app的主服务器跟其它恶意行动如传播Cridex、Ramnit和ZBOT银行木马的恶意行动的基础架构联系在一起。安全专家表 示,这款app的行为跟此前一个实施“Operation Emmental”行为的犯罪团伙有关,该团伙曾从位于瑞士、瑞典和奥地利的银行窃取钱财,该组织被认为来自俄罗斯。
不过,研究人员最近又发现了另一个专门针对俄罗斯银行的恶意软件,与Fanta SDK相比,它使用了分层混淆技术。目前趋势科技的研究人员将这个恶意软件暂时被命名为FakeBank,迄今为止研究人员收集的相关样本数量已经达到了数千个。这些样本显示,FakeBank的攻击目标不仅仅是俄罗斯联邦储备银行,还针对其它俄罗斯银行,比如Letobank和VTB24银行。研究人员的样本显示FakeBank的文件名是随机变化的,并且主要作为SMS / MMS管理软件来引诱用户下载它们。下表是样本的名称:
恶意软件样本的名称
事实上,这些介绍的短信管理功能就是针对受害者的攻击行为。恶意软件会在攻击开始时中拦截短信,通过他们的手机银行系统窃取受感染用户的钱财。
目前,FakeBank已经遍布俄罗斯和其他俄语国家。
样本的分布国家
拦截短信并将用户的钱财转移
恶意应用程序可以控制受感染用户的打开和关闭网络功能,也可以默默地连接到互联网。这意味着它可以在用户不知情的情况下将信息发送到其命令和控制服务器(C&C)。它还会检查设备是否安装有杀毒软件,如果检测到,则会退出而不执行任何恶意行为。这是一个防御策略,可以帮助它不被检测到,将攻击效果最大化。
恶意软件还会窃取设备中的信息并将其上传到C&C服务器,收集到的敏感数据包括:用户的电话号码,安装的银行应用程序列表,所有链接银行卡上的余额,甚至位置信息。
捕获的网络数据包
应用程序会收集所有链接银行卡上的余额
为了进一步保证数据收集的成功,恶意软件会禁止用户打开设备设置,也可能会阻止用户进行卸载。研究人员还在一些示例中检测到恶意软件还能篡改用户的管理员权限,这使恶意软件可以更多地访问设备。
一旦恶意软件被安装,应用图标就会出现在设备屏幕上并要求开放各种权限
一旦用户批准这个请求,图标消失,恶意行为开始
恶意软件甚至会进一步控制用户的短信,首先用它自己替换默认的SMS管理程序并隐藏图标。这样它可以上传和分析收到的任何短信,甚至可以在本地删除任何短信。这意味着从银行到用户的任何验证或查询都可以被截获和删除。它甚至可以拨打指定的电话号码,发送指定的短信,窃取通话记录和联系人列表。
最重要的是,所有这些对设备短信的访问都会让恶意软件悄悄地从用户的银行账户窃取资金。由于用户会将他们的银行帐户绑定到他们的设备,并在同一设备上接收银行的各种通知,恶意软件可以拦截敏感的帐户信息。然后可以通过收到的安全验证码信息重置银行账户密码并开始转账。
FakeBank也会阻止用户打开目标银行的官方应用程序,以防止对银行卡号和绑定的电话号码之间的关系进行任何修改。据此,研究人员可以判断出恶意软件开发人员对银行的消息传输模式和传输过程非常熟悉,因为所有的支付短信通知都是由C&C注明和加扰的。
值得注意的是,美国国家标准与技术研究院(NIST)正式拒绝使用SMS作为双因素认证。如果移动用户使用的是应用程序和服务,则应选择其他认证方式。
对恶意的有效载荷进化混淆
这种恶意软件的显着特点之一是将它的恶意效载荷进行隐藏的方式。恶意软件在不同的设备上具有不同的混淆行为,以使感染用户难以卸载它,并避免被安全解决方案检测到。
截止目前,研究人员发现它实际上使用了三种不同的方法来混淆恶意载荷,这些技术的复杂程度不一,开发者似乎采取了多层次的方法来避免被检测到。
第一种混淆方法是常用的外壳保护,这是一种常用的技术。实际上有一些开源工具或服务为APK提供shell保护。但是这也很容易被检测到,只需通过一个标准的内存转储就可能得到真正有意义的代码。
第二种混淆方法是恶意软件开发人员使用反射(一种应用程序收集信息或操纵自身的手段)来调用所有的系统调用,这可以使代码更难被理解。恶意软件还会对其所有字符串进行加密,包括类名称和功能,并将其标注为资产文件加入到文件夹中。它们通常使用标准的加密方法,如(DES / BASE64)或简单的位操作。下面是一些说明这些技术的代码片段:
反射调用系统调用的代码,在解密之前显示类名称和方法名称的基本字符串混淆
反射调用系统调用的代码,显示解密后类名和方法名称的基本字符串混淆
恶意软件使用运行时解密来查找特定的字符串,下面的代码显示了它如何通过引用asset文件夹中的加密文件的具体函数索引来定位精确字符串。
该函数隐藏恶意应用程序的图标
上述整个过程运行在一个本地的.SO文件中,这意味着代码更加灵活。同样为了去混淆它,动态分析和钩子是必要的。当恶意软件应用程序加载.SO文件时,它将解密该文件并在内存中生成字符串。
恶意软件解密并生成字符串的过程
同样,恶意软件会通过索引找到确切的字符串,并使用本地调用来执行具体攻击。
该函数再次隐藏了图标
尽管第一种混淆技术很容易被发现,但其它两种技术却是很难被发现的两种混淆方法。这表明开发人员将很多的注意力集中在了逃避检测的功能上,并尝试用不同的技术来实现这点。
C&C基础设施
恶意软件已经注册了大量的C&C域名,许多域名都是最近的,其中有些还在继续使用。这些C&C域名拥有共同的IP地址(195.22.126.81和195.22.126.160),位于波兰的Warmia-Masuria。其他IP地址(185.110.132.0和185.110.132.255)位于俄罗斯。
这些C&C地址具有相同的格式:hxxp://[domain]/[random str]/index.php。
根据C&C域名的Whois信息,研究人员发现绝大多数是用同一家公司注册的。据悉,该公司与其他欺诈性域名有关联,并已被披露过,注册服务商有可能为欺诈域名的注册人设置了隐私保护。
用户应该尽量避免从不受信任的来源下载应用程序,而且设备还应该配备全面的移动安全功防护程序。