背景
自从2018年10月25日起,360威胁情报中心连续捕获了多个专门盗窃俄罗斯语用户银行卡资金的定向攻击样本。这批定向攻击样本主要利用微软Office CVE-2017-11882漏洞配合钓鱼文档进行定向投递:漏洞文档最终释放的木马程序会不断监控用户的系统剪切板,如果发现具有银行账号或者yandex账号的特征,就会把剪切板里的银行账号替换为攻击者的MasterCard(万事达)银行卡账号。一旦用户通过拷贝的方式输入目标银行账号,则会把钱转向攻击者账户。并且木马程序还会下载一个俄罗斯著名的yandex.ru门户网站提供的键盘管理工具Punto Switcher 3.1,以用于窃取用户的键盘记录,借以躲避杀毒软件的查杀。
样本分析
执行流程
捕获到的样本的整个攻击流程如下:

Dropper
360威胁情报中心最初发现的样本是名为логотип.doc的RTF漏洞利用文档,该漏洞利用样本包含一个CVE-2017-11882漏洞的公式对象。漏洞触发后会通过执行mshta hxxp://xnz.freetzi.com/z.hta 命令来实现加载执行hxxp://xnz.freetzi.com/z.hta上的脚本:


Downloader
z.hta
下载执行的hta文件主要功能如下:

z.hta首先会使用tasklist命令结束winword.ext进程,紧接着判断:
%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Chromeupd.exe文件是否存在,如果不存在则利用Google Chrome浏览器去下载hxxp://xnz.freetzi.com/1.rar文件:

下载回来的1.rar其实是一个VBS脚本文件,1.rar会被移动到路径:%userprofile%\appdata\roaming\1.vbs,然后使用wscript.exe执行该VBS脚本:

1.vbs
1.vbs脚本执行后会首先下载hxxp://xnz.freetzi.com/1.zip到%APPDATA%/1.zip,接着下载hxxp://xnz.freetzi.com/p.zip 到%APPDATA%/p.zip,并解压到%APPDATA%目录下:

最后把1.zip压缩包里面的1.png移动到启动目录下:
%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\Chromeupd.exe来实现恶意样本持久化,最后删除1.zip和p.zip和1.vbs文件。
Backdoor(Chromeupd.exe)
被写入自启动项的Chromeupd.exe是该定向攻击木马的核心功能模块。样本是C#编写的程序,样本运行后会首先注册5个定时器实现其5个主要功能:
监控系统剪切板里可能出现的银行卡账号并替换成攻击者的MasterCard银行卡账号
隐藏程序窗口
安装下载回来的p.png(Punto Switcher 3.1版本,俄罗斯的一个正常的键盘管理工具)
上传键盘管理工具中的diary.dat到hxxp://apz.freetzi.com/upload.php
检查是否需要自删除和是否需要获取新的攻击者的银行卡账号
替换剪切板里可能出现的银行卡账号
其中一个定时器功能会判断当前系统剪切板里面的内容是否是字符串,如果是则判断是哪种类型的账号,然后将其中的账号替换为内置的攻击者账号:

其中的判断规则为:当剪切板中的字符串长度为16,则把这个16位的字符串做Luhn算法(见参考[2])校验。如果校验通过,则把剪切板中的字符串替换为内置的MasterCard卡号:

而如果剪切板中的字符串长度在10到17之间,且字符串起始数字是410开头,并且字符串全为数字字符串,则试用内置的yandex账号替换:

而对于字符串中有‘-’或‘ ’分割的情况,同样也会做Luhn算法校验,校验通过则替换为内置同样格式的MasterCard卡号:


隐藏窗口
而当2号定时器执行时,则调用hide()函数实现当前窗口隐藏,之后让该定时器失效:

|