2019-09-27 13:59:0211922人阅读
概述
Cobalt恶意组织是一个针对财务发起攻击的网络犯罪组织,自2016年以来一直活跃。该恶意组织主要对银行发动攻击,试图访问银行的内部网络并接管敏感组件,例如ATM控制服务器或银行卡处理系统。尽管欧洲刑警组织在2018年逮捕了Cobalt恶意组织的领导人,但该恶意组织仍然活跃至今。
Check Point Research最近发现了Cobalt组织的一次恶意活动,这次恶意活动是以哈萨克斯坦的一家银行为目标,精心制作了一个带有该银行标识的恶意文件,具有较强的迷惑性。不仅如此,该文件本身可以从银行的官方网站下载到,这样就更增加了文件的迷惑性,使潜在受害者不会认为这是一个可疑的文件。在本篇文章中,我们将对此次攻击的完整感染链进行分析,并详细分析本次攻击过程。
诱饵文件
我们在Kassa Nova银行的活动网站上发现了一个恶意文件,由此开始对此次攻击开展调查。根据其描述,该网站面向公众和位于哈萨克斯坦的小型企业提供金融产品和服务。
恶意文件被托管在银行的文档存储库中,很容易与合法文档相互混淆:
https://kassanova[.]kz/files/docs/T47188445.doc
在下载并运行后,该文档以俄语显示诱饵信息,要求受害者启用其内容。在文档的正文中,附带有Kassa Nova的LOGO,这种社会工程学的方式很容易诱导受害者运行嵌入式的恶意宏。
诱饵文档(MD5:7f0f3689b728d12a00ca258c688bf034):
在用户启用宏后,就开始一个多阶段的感染链,最终下载并执行Cobalt Strike信标,为攻击者提供在目标组织内的立足点。
感染链:
众所周知,许多威胁组织都会在攻击中使用通用的渗透测试工具,Cobalt恶意组织也是如此。这种做法不仅可以为恶意组织节约大量的开发时间,而且还会让研究人员更难定位到具体的恶意组织身份。
混淆后的宏代码:
恶意宏
一旦用户点击“启用宏”(Enable Macros)的按钮后,Document_Open宏功能将由Word自动触发。攻击者所使用的代码经过严重混淆,变量名称似乎是随机生成的。在代码中,包含随机单词组合而成的注释。
恶意宏的作用是将XSL文件写入到本地磁盘C:\Windows\Temp\aA3jY9HP.xsl上,并使用被称为“Squibly Two”的执行技术来运行该文件。
使用WMIC执行Jscript的Shell:
该技术使用合法的WMIC实用程序,攻击者只需要运行以下命令,就可以从XSL文件调用Jscript或VBScript代码:
wmic os get /format:[XSL_FILE_PATH]
在我们的示例中,XSL文件中包含Jscript代码,该代码从远程服务器地址下载下一阶段的可执行文件,运行该文件,并最终删除XSL文件,从而不留痕迹。
XSL文件中嵌入的Jscript的片段:
托管下一阶段Payload的域名是myovs[.]de,归属于Otto Schmidt,这是一家德国媒体公司,主要面向税务、商业和公司法律市场。显然,该公司的网站在攻击前也遭到了入侵。
Payload分析
我们下载的“file.exe”Payload是已经签名的可执行文件,该文件具有Sectigo的有效证书。
下载的Payload具有签名,MD5为a26722fc7e5882b5a273239cddfe755f:
可执行文件与185.61.149[.]186/rpc进行通信,从而下载并解密Cobalt Strike信标。随后,信标与同一IP地址的下列URL进行通信:
http://185.61.149[.]186/owa/?wa=UdHv7kfAh0akFkK7uZW2P721Wm-ceiYOj1wqEiX7QBO6kvCNkDwV_Pbukex3OZnbJ6vDEY3ipA9ZLnKXnzKobrVlsrak93OoUclN-ofsPEHv_7_1CT1Jcqtcwxiv6rQO53GpZd5hTYG4hfP4s96PWTb3IkM9H3VTbu8RnaSplGs&path=/calendar
值得关注的是,该通信类似于查看Office 365 Outlook日历时发出的合法请求。通过搜索这一独特请求的标题,我们发现了一个名为“Malleable C2 Profiles”的GitHub项目,该项目提供了能模仿各种通信模式的“配置文件”,可以使用这些配置文件来模拟合法服务、已知恶意软件家族,甚至是APT组织。
这样的模拟方式,可以作为逃避检测和从受感染系统中泄露数据的有效方法,而不会引起怀疑,因为监控网络的人员很可能会将这样的告警视为是合法的Office 365流量。
Cobalt恶意组织发动攻击的证据
在此次攻击活动中,存在与Central Asian银行相关联的Cobalt Strike信标,这样一来就将怀疑的恶意组织缩减到一个非常小的范围。但是,目前仍然需要更多证据,才能证明Cobalt恶意组织是此次活动的幕后黑手。
在对可执行文件进行分析的过程中,我们可以通过查看“Rich Headers”来深入了解开发人员(或恶意组织)用于编译可执行文件的工具。
有时,我们可以根据开发环境的信息推断出样本是否有可能来源于同一个威胁行为者。相同恶意软件变种的多个编译版本往往可能会使用相同的编译环境。
Payload解码后的Rich Headers(使用PE-bear):
我们利用这种技术找到类似的文件,最终能够发现大量相似的Cobalt Strike加载工具。我们对加载工具的逻辑进行比较,最终证明了我们的假设,这些样本确实存在关联性。
这两个样本都依赖于类似的算法,使用当前月份或年份作为解码的偏移量,以便正确地提取下一阶段的Shellcode。如果月份或年份与预期的操作窗口不匹配,那么攻击的下一阶段将无法正确执行。
“file.exe” Payload:
相匹配的样本:
此外,我们在找到的样本中,发现其中一个样本的调试信息中包含独特的项目名称:BATLE_SOURCE。
C:\Users\d\Documents\тр\shell\BATLE_SOURCE\ONLY_EXE\SMRS-30.10.2018\smrs\Release\smrs.pdb
MD5:02c11b8697aeec84249316733c2a0c2d
在2016年曾经发现的Cobalt恶意组织的加载工具中,同样可以找到确切地项目名称(以及类似的文件夹路径):
C:\Users\DNS\Documents\тр\shell\BATLE_SOURCE\SampleService_run_shellcode_from-memory10-02-2016\Release\SampleService.pdb
MD5:af82af8f5d540943aaba20920d015530
在考虑了TTP、目标、攻击技术在相似性方面的重合之处后,我们能够高度确信,这一恶意活动与Cobalt恶意组织相关,他们正是此次恶意活动的运营者。
宏生成器工具包
除了可执行的Payload之外,在我们的调查过程中,我们还尝试使用相关套件的独特功能来进行搜寻。值得关注的是,我们在搜寻过程中发现了几个恶意样本。
在Kassa Nova恶意文档中,宏进行VBA调用的方式与另一个恶意文档非常相似,唯一的区别在于随机函数名称,但二者的名称长度是一致的。
此次恶意活动中VBA调用方式:
其他恶意活动中VBA调用方式:
此外,这些文档投放的XSL文件,几乎与我们此前发现的攻击中所投放的文件完全相同,甚至包括相同的注释和代码格式。但是,只有这些XSL文件才可以将二者联系起来,因为它们最终会投放注入Dridex、IcedID和Ursnif这样的银行木马。
使用不同恶意活动中用过的Payload这一事实说明,Cobalt恶意组织再次使用了在地下犯罪论坛上销售的宏生成器工具包。在过去,Cobalt恶意组织被观察到利用其它“商业版本”的漏洞利用构建框架,例如“ThreadKit”和“Microsoft Word Intruder”。
历史攻击活动
众所周知,Cobalt恶意组织在东欧和中亚地区尤为活跃。事实证明,这甚至不是Kassa Nova银行首次被Cobalt恶意组织攻击。2018年12月,攻击者使用该银行员工的电子邮箱,向该银行金融部门的其他潜在受害者员工发送了携带恶意附件的钓鱼邮件。
从Kassa Nova银行发送到合作伙伴的恶意电子邮件:
Cobalt恶意组织的已知TTP是通过发送自可靠合作伙伴的恶意电子邮件,对另一家公司发起攻击,以便攻陷另一家公司。
其中,恶意的电子邮件利用新公开的CVE-2018-15982漏洞,安装Cobalt恶意组织使用的经过签名的侦查工具。该攻击活动仅在360CoreSecurity披露有关0-Day漏洞在野外被利用后的一天之内就发生。
总结
在此次攻击活动中,攻击者攻陷银行网站,创建定制化的恶意文档用于伪装成合法文档,并使用有效证书对Payload进行签名,种种线索都表明这是一个经过精心策划的、针对特定目标的攻击活动。我们看来,Cobalt恶意组织并没有因为其领导者被逮捕而一蹶不振,反而是正在扩大其工具集,并开始寻找新的目标。
在发现攻击活动后,Check Point第一时间联系到Kassa Nova银行的代表,随后他们确认内部系统确实检测到攻击,并成功进行了恢复。
威胁指标(IoC)
恶意文档投放位置:https://kassanova[.]kz/files/docs/T47188445.doc
恶意文档MD5:7f0f3689b728d12a00ca258c688bf034
下载的Payload MD5:a26722fc7e5882b5a273239cddfe755f
Cobalt Strikt信标C2:185.61.149[.]186
Cobalt信标配置
{ 'PROTOCOL': '0', 'SPAWNTO_X64':'%windir%\\sysnative\\gpupdate.exe', 'SLEEPTIME': '30000', 'C2_VERB_GET': 'GET', 'DNS_SLEEP': '0', 'MAXGET': '1398102', 'USERAGENT': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)', 'PORT':'80', 'DNS_IDLE': '134744072', 'C2_POSTREQ':" [('_HEADER',0,'Accept */*'),('BUILD',('BASE64URL',)),('PREPEND',0,'wla42='),('PREPEND',0,'xid=73 0bf7;'), ('PREPEND', 0,'MSPAuth=3EkAjDKjI;'),('PREPEND',0,'ClientId=1C0F6C5D910F9;'),('PREPEND', 0, 'MicrosoftApplicationsTelemetryDeviceId=95c18d8-4dce9854;'), ('HEADER', 0, 'Cookie')]", 'WATERMARK': '3', 'PUBKEY': '30819f300d06092a864886f70d010101050003818d00308189028181008f8c237f7f407fcf5f4 7e2d76c589982b2595ead0d45d4e4ea875b2d07f2b8283f64786c7a142d3ce78baa01d1bb14479162d1 4520cc8ba15b1dc0b5e57850ab7bccb95838156dec5b58097a007d0180e358e144653d80381ac240efe 9b789adf5f319515651bdfc3eb160b411f5cba2b8e7e21cb2cbc743b5ffb6fba5d2b8ff0203010001', 'SPAWNTO_X86': '%windir%\\syswow64\\gpupdate.exe', 'C2_REQUEST': "[('_HEADER',0,'Accept: */*'),('_HEADER',0,'Cookie:MicrosoftApplicationsTelemetryDeviceId=95c18d 8-4dce9854;ClientId=1C0F6C5D910F9;MSPAuth=3EkAjDKjI;xid=730bf7;wla42=ZG0yMzA2KjEs'), ('BUILD' ,('BASE64URL',))]", 'CRYPTO_SCHEME': '0', 'JITTER': '20', 'C2_CHUNK_POST':'96', 'PIPENAME': '', 'C2_VERB_POST': 'GET', 'SUBMITURI': '/OWA/', 'DOMAINS': '185.61.149.186,/owa/', 'MAXDNS': '235' }
本文翻译自:
原文链接:
翻译作者:41yf1sh