一种新型高级的银行木马被IBM安全团队X-Force发现并命名为“师傅”(Shifu)。该木马直到2015年4月被发现前一直很活跃。IBM的反欺诈平台通过对全世界的客户终端进行监测保护才挖掘出此木马。 “师傅”目前针对日本14家银行和整个欧洲的电子银行平台。然而,现在只有发现了针对日本的主动攻击行为。
由于“师傅”展现了其能力,因此被视为一个高度复杂的银行木马。我们的分析表明,此恶意软件的功能和模块是从其他一些已经开源的银行木马,包括Shiz、Gozi、Zeus和Dridex借鉴而来的,使其变成一个东拼西凑的强大木马。
“师傅”木马是一个新的怪兽,但它的内部运行机制并不陌生,该恶意软件来自于其他臭名昭著的犯罪软件的代码和一些已经被使用的真实的木马运行机制。看来,“师傅”木马的内部构成是由一个非常熟悉并精通其他银行恶意软件的人所编写的,最后将它打造成一个从一些更恶毒的功能中选择而组成的木马。
1.域名生成算法(DGA):“师傅”使用了Shiz木马的DGA,已泄漏的算法很容易在网上找到,“师傅”的开发者在隐藏的僵尸网络中使用这个算法生成随机的域名。 2.盗取银行的应用程序:通过Java applets程序盗取密码和认证令牌文件,用户证书密钥以及敏感的数据是“师傅”的主要机制之一。这种作案手法在Corcow和Shiz木马中使用过。这两种木马利用这种机制瞄准了俄罗斯和乌克兰的银行业务应用。 3.反杀软:“师傅”利用的字符串混淆和反调试技术取自Zeus VM,包括anti-VM和禁用安全工具和sandbox。 4.隐身术:“师傅”的隐身技术部分是取自唯一采用过此技术的Goiz/ISFB木马。在Windows文件系统中,它依旧使用了和Goiz完全一样的命令执行计划。 5.配置:“师傅”木马采用了类似于Dridex木马的配置技术,使用了XML格式的配置文件,这对木马来说并不是常见的格式。 6.擦除系统还原:“师傅”木马在受感染的主机上擦除了本地系统的还原点,这种技术类似于流行于2009年的Conficker蠕虫。
在更小的技术方面,“师傅”通过使用自签名的证书技术并建立一个HTTPS进行安全通信,不过这个有点像Dyre木马。
另外,“师傅”还具备一些附加的模块,这些是由它所连接的C&C服务器补充的。
anti-reseach,anti-VM和anti-sandbox; HOOK 浏览器和web 注入解析器; 键盘记录; 屏幕截图; 证书采集; 端点分类,监控感兴趣的应用程序; 远程控制和bot-control模块。
对于被定为高级的银行木马,通常需要具备各种实时监控和端点控制和感染的功能。包括RDP/VNC来进行用户级别的控制。“师傅”似乎在这些方面也有不少花样。
该木马盗取了大量的各种信息,受害者使用的身份验证,涵盖了各种不同类型的身份验证。例如它的键盘记录,不仅记录密码还会截取用户提交HTTP表单的密钥,窃取私有证书,擦除一些银行应用程序使用的外部验证令牌。这些功能使得“师傅”的操纵者可以使用用户的机密凭证,并能够控制大量的各种金融服务提供商的银行账户。
“师傅”也会在用户将智能卡插入到终端机的读卡器时扫描,分析,过滤智能卡中的数据,并窃取被感染的受害者的加密账户。
它除了对窃取银行账户感兴趣之外,也会针对支付卡中的数据进行窃取。该恶意软件扫描终端机的字符串可能表明它已经感染到了POS机终端。如果那一类的字符串在终端机中被扫描到,“师傅”会部署一个擦除RAM的插件(RAM-SCRAPING)去收集支付卡的数据。该插件会擦除信用卡和借记卡的磁道1和磁道2的数据,这个功能主要被用于重要目标的突破。
虽然webinjections是一种常见的木马功能,但是很少有木马针对银行平台。这种攻击技术类似于Shiz,Shiz曾被用于俄罗斯已知的银行平台。“师傅”也有类似的目标,不过是基于Java applet的平台,它会HOOK Java进程并扫描.toks文件。之后,“师傅”会用作外部认证机制的短期认证令牌。
此外,“师傅”会查找商业银行业务认证机构认证的用户,尤其是意大利的数字签名证书。通过重置证书上的PIN码,师傅的操纵者可以使用有效的数字签名模仿受害者欺诈银行业务。
瞄准银行的应用,而不是特定的网站,在攻击的好处的意义上,它将适用于更多的目标。
如果恶意软件的开发者找到了一种可以在一种情况下通用的应用程序和平台,它很可能会在使用该平台的其他银行进行相同的攻击。
让人联想到另外一种高级的银行木马——Dyre。“师傅”在配置文件中隐藏了webinjections。相反,它会从远程服务器中实时获取。为了在合适的时候使用注入,“师傅”的开发者,已经想到了一个名为round-robin的办法,在本地受感染的主机上开启PHP服务器。
当“师傅”感染了一个新的终端,它会建立一个文件夹,并将这个文件夹放到本地的HTTP服务器中,本地的Apache服务器会被用于解密从远程“师傅”服务器接收到的已经被感染的JavaScript代码并进行web injections。
事实上,请求是被模糊处理的,而不是在Web浏览器中请求的。“师傅”会先请求本地的PHP服务器进行反混淆。本地的服务器有一个HEXtoString函数来解释这个请求,然后以适当的形式把真实的数据发送到浏览器中。
“师傅”的injections会根据目标进行有选择性的改变。在某些情况下,它会取代银行的整个WEB页面,并制作一个看起来和真的一样的假页面,“师傅”的操纵者之后就会获取到用户输入的数据。在其他情况下,该木马会使用社会工程学手段,使用Javascript代码注入到HTML页面,告知受害者要进行额外的身份验证。如:PII码和一次性口令。
入侵者:滚开!
“师傅”的操纵者似乎不愿意与他们的团伙以外的任何人分享战利品。一旦“师傅”感染了一个新的机器,它就会启动反病毒的功能,通过禁止其他可疑文件的安装来让其他所有的恶意软件退出“游戏”。
“师傅”会监控每一个联网的应用程序,HOOK掉URLDownloadtoFile这个API函数,并会密切关注传入的文件,这些文件可能包含有恶意软件的文件,如果其他联网程序有如下行为:
1.来自不安全的连接(HTTP) 2.是一个可执行文件 3.未签名的文件
一旦这种文件是由浏览器下载的,“师傅”会将下载的文件复制到本地磁盘并重命名为“infected.exx”,之后,会过滤这个程序的C&C服务器,最后,通过提示“内存不足”的消息,来进行文件下载的答复。
这是我们第一次看到恶意软件能够为可疑文件建立“规则”,以确保它对受感染机器的独占控制。如果终端机器已经感染了其他恶意软件,“师傅”没有发现并删除其他恶意软件,但是它会停止新的恶意文件的传入,这样可以防止其他恶意软件接受新的版本进行更新,也切断了这个恶意软件与它的主人的联系。
“师傅”的可能起源
那么是谁“拼凑”了高超的“师傅”?
在“师傅”的分析中,发现了一些用西里尔字母写入的特殊字符,但是这些字符在俄语中是有一定的意思的。例如:
BUH:可以参考俄语中的“会计师” KASSA:可以参考俄语中的“出纳” FINOTDEL:在公司中俗称“会计部” ROSPIL:俄罗斯政府最突出的反对党
“师傅”的服务器位于不同的国家,托管的IP地址C段有很多.Ru的域名,这可能或可能不会指向同一个犯罪团伙。
“师傅”是一个复杂而有趣的恶意软件。此时,它正在积极的攻击日本的银行,但是它有一个潜在的传播位置目标列表。其主要的诈骗方法是基于凭证的抓取,webinjections和证书窃取。已经构建了其他恶意软件的代码库,“师傅”也保护了受感染的主机,禁止了其他恶意软件的竞争。
IBM安全团队X-Force已经发布“师傅”的完整报告,并在未来一周发布。
“师傅”的样本的 MD5为 b9bc3f1b2aace824482c10ffa422f78b ,目前有19/56(34%)的杀毒引擎检测为通用恶意软件。