时间 : 2021年02月06日 来源: 安天CERT
安天CERT基于安天态势感知系统监测发现,Qbot银行木马自2020年4月开始进入活跃状态。安天CERT从版本迭代、传播方式、规避手段等多个维度,对该木马的前导代码和载荷模块进行了全面分析与梳理。
Qbot银行木马也被称为Qakbot、Quakbot或Pinkslipbot,该木马家族自2008年首次出现至今已经运营长达12年之久,在此期间始终保持高度结构化、层次化且不断迭代更新插件以扩展其功能,主要被用于攻击全球各地的政府和企业、窃取用户数据和银行凭证等相关信息。
Qbot银行木马主要通过垃圾邮件进行传播,邮件附件通常为OFFICE宏文档或者VBS脚本,邮件内容主旨为诱使用户执行该程序。与此同时,多个攻击组织实施过该木马的分发,例如,Emotet家族的运营组织在2018年开始分发该木马;TA551黑客组织在2021年1月开始分发该木马。
安天CERT发现该木马在TTP(战术、技术&程序)中以多种方式实现对抗杀毒软件和防火墙设备等。安天智甲终端防御系统能够有效防御该银行木马威胁。
本报告中涉及事件为攻击者针对目标系统投放Qbot银行木马,通过梳理该事件对应的ATT&CK映射图谱,揭示攻击者在该事件中使用的技术点,如下图所示。
图 2-1 事件对应的ATT&CK映射图谱
具体ATT&CK技术行为描述如下表所示:
表 2-1 事件对应的ATT&CK技术行为描述表
ATT&CK阶段/类别 |
具体行为 |
注释 |
初始访问 |
网络钓鱼 |
利用鱼叉式钓鱼邮件和钓鱼网站链接进行传播 |
执行 |
使用命令和脚本解释器 |
使用VBS脚本下载攻击载荷,通过命令创建指定名称文件夹并将载荷放置其中 |
诱导用户执行 |
利用社工邮件或钓鱼网站诱导用户执行恶意代码 |
|
持久化 |
创建或修改系统进程 |
用自身覆盖系统自带的计算器程序calc.exe;将自身所有数据从内存中复制到”explorer.exe”系统进程中 |
利用自动启动执行引导或登录 |
将主进程添加注册表自启动项,实现自启动 |
|
利用计划任务/工作 |
添加计划任务,实现每5小时启动一次 |
|
防御规避 |
删除主机中的信标 |
在网络共享攻击完成后,删除创建的远程服务和复制到共享文件夹下的样本 |
反重构/解码文件或信息 |
加密编码混淆可执行文件 |
|
虚拟化/沙箱逃逸 |
检测并避免运行在虚拟化沙箱分析环境中 |
|
凭证访问 |
获取密码存储中的凭证 |
资源”307”是一个动态链接库文件,主要功能是窃取凭证 |
输入捕捉 |
利用Hook,获取恶意代码下载的远控工具生成的ID和密码 |
|
发现 |
发现文件和目录 |
查询系统中文件和目录 |
查询注册表 |
查找指定注册表项值并对其进行添加或修改 |
|
虚拟化/沙箱逃逸 |
检测虚拟化沙箱分析环境 |
|
横向移动 |
利用远程服务 |
调用API函数在远程计算机上启动服务 |
污染共享内容 |
枚举网络共享,与其他计算机建立连接后,将攻击载荷自身复制到共享文件夹中 |
|
收集 |
自动收集 |
自动收集受感染主机中的软件信息、证书和私钥 |
收集本地系统数据 |
收集用户本地系统数据信息 |
|
收集电子邮件 |
针对多个邮件客户端收集邮件信息 |
|
命令与控制 |
使用应用层协议 |
使用标准HTTP协议与控制端C2服务器进行连接 |
数据渗出 |
通过C2信道回传 |
通过C2信道回传数据 |
(1) 采取终端防护措施:安装反病毒软件,建议安装安天智甲终端防御系统。
(2) 部署入侵检测系统(IDS):部署流量监控类软件或设备,便于及时发现恶意代码并追踪溯源。建议部署安天探海威胁检测系统(PTD),该系统以网络流量为检测分析对象,能够精准检测出已知海量恶意代码和网络攻击活动;经过验证,该系统可在网络中监测到Qbot木马的传播与入侵行为。
(3) 提高口令强度:避免使用弱口令,建议使用16位以及上长度的口令,包括大小写字母、数字和符号在内的组合,同时,避免多个服务器使用相同口令;
(4) 及时更新补丁:建议开启自动更新功能并及时安装系统补丁,尤其是服务器类终端;
(5) 关闭高危端口:在不影响工作使用的前提下,建议关闭135、139、445、3389等高危端口;
(6) 关闭PowerShell:若一定时间内不使用PowerShell命令行工具,建议将其关闭;
(7) 主机加固:对系统进行渗透测试和安全加固;
(8) 安天安全服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查与处置;安天7*24小时服务热线:400-840-9234
(1) 接收邮件时要确认发送来源是否可靠,避免打开可疑邮件中的链接或附件;
(2) 建议使用沙箱环境(如安天追影威胁分析系统,简称PTA)执行可疑的文件,在确保安全的情况下在使用主机执行。安天追影采用深度静态分析与沙箱动态加载执行的组合机理,可有效分析鉴定各类已知与未知威胁;
(3) 不要轻易启用OFFICE宏(默认配置为禁用所有宏);
目前,安天智甲终端防御系统可实现对该银行木马的查杀与有效防护。如下图所示:
图 3-1 针对样本及其载荷进行查杀
图 3-2 样本运行后有效拦截
通过安天态势感知系统2020年监测到的数据发现:Qbot银行木马于3月份开始出现,4月份开始进入活跃状态,此后几个月持续流行。从传播方式来看,Qbot银行木马在2008年出现,主要通过服务器消息块(SMB)进行蠕虫传播,在2016年增加了利用浏览器漏洞工具包传播。此后主要通过垃圾邮件进行传播,2018年开始,Qbot银行木马也常被嵌入到Emotet木马中作为后续下载的窃密插件使用。2020年3月开始Qbot在垃圾邮件中也会使用诱饵URL链接的方式来直接或者间接下载载荷。2020年12月,安天CERT发现其有效载荷从exe程序变为dll程序。2021年开始,安天监测到Qbot银行木马被嵌入TA551黑客组织的网络活动中分发使用。随着近几年具备“低成本、高破坏、高收益”特点的勒索软件广泛流行,Qbot银行木马从2020年4月开始也尝试下发不同的勒索软件,实现“窃密+勒索”的运营模式。
图 4-1 QBot银行木马演变时间轴
4.1.1 垃圾邮件传播
该银行木马主要通过垃圾邮件进行传播,主要通过以下两种方式:
邮件+压缩包附件+OFFICE宏
垃圾邮件附件中包含一个压缩包文件,解压后为带有恶意宏的OFFICE文档,打开该文档提示启用宏,当宏被启用后,会下载Qbot银行木马到本地并执行。例如,在美国选举时期,有监测到邮件附件中使用“ElectionInterference”作为附件名,翻译成中文为“选举干扰”,邮件内容主要为“所有人不要忘记周三的会议”。
图 4-2 Qbot银行木马垃圾邮件示例(1)
图 4-3 Qbot银行木马垃圾邮件示例(2)
文档中的内容主要是诱使受害者启用宏,以便执行恶意宏代码在受害者计算机上安装Qbot银行木马。Qbot运营团队使用风格化的文档模板,伪装成可信赖的组织,以便诱骗受害者。
图 4-4 Qbot垃圾邮件附件中带有宏的文档
邮件+URL链接+下载VBS脚本
垃圾邮件内容中带有恶意URL链接,一旦受害者点击该链接,便会下载一个.zip格式的压缩包文件,压缩包中包含VBS脚本文件,执行该脚本文件后,会下载Qbot银行木马到本地并执行。
图 4-5 带有恶意URL链接的垃圾邮件
该种方式从2020年4月开始流行,此前攻击者使用的方式多数为利用带有经过简单混淆和字符串编码宏的Word文档,而现在的VBS脚本不仅高度混淆,而且通过尾部内容填充空字节的方式使得文件大小超过35MB,进而绕过通常设置为忽略体积过大文件样本的防护软件的查杀,以此作为免杀手段。此外,该脚本还会调用系统API函数Sleep延迟执行,同样也可以达到规避查杀的目的。
图 4-6 恶意VBS脚本内容
4.1.2 Emotet银行木马分发Qbot
安天CERT在分析Qbot传播源时,发现另一款流行银行木马Emotet在传播Qbot,此类事件最早发现于2018年。Emotet使用垃圾邮件进行传播,邮件中包含下载恶意XML文档的链接,如果受害者点击了该链接,会下载XML文档,后缀为.doc,默认情况下会从Word中打开。文档带有宏病毒,受害者一旦启用宏,宏代码执行后会下载Emotet木马,之后Emotet木马会下载Qbot。
Emotet在2014年首次以银行木马的形式出现,但在随后的几年演变成了非常活跃的信息窃取类僵尸网络。2021年1月,据外媒报道称,欧洲网络刑警组织破坏了Emotet僵尸网络,并控制了几乎所有的网络基础设施。执法部门已开始向受感染的设备分发“自毁模块”,将于2021年4月25日开始从受感染的设备上自动卸载Emotet。
图 4-7 Emotet垃圾邮件中的链接下载的XML文档
4.1.3 TA551黑客组织分发Qbot
TA551黑客组织(也称为Shathak)主要是通过垃圾邮件分发恶意软件。安天在以往的监测中发现,TA551组织相继分发过不同种类的信息窃取型恶意软件,其中包括Ursnif和Valak恶意软件。Ursnif是属于银行木马类型的恶意软件,也被称为Gozi或IFSB。Valak被归类为一种加载器,曾多次用于针对美国的网络攻击活动中。在2020年7月中旬以后,TA551开始放弃使用Ursnif和Valak恶意软件,转而分发IcedID恶意软件。IcedID是一种银行木马,该木马在浏览器上执行Web注入,并作为监测并操纵流量的代理。该木马能够窃取受害者的凭据等信息,将被窃取的信息发送到远程服务器中。在2021年1月中旬以后,TA551组织弃用IcedID银行木马,开始分发Qbot银行木马。因本次发现时间线比较早,还未看到TA551大面积分发Qbot,故初步怀疑TA551开始逐步放弃分发IcedID,转向分发Qbot。
图 4-8 TA551垃圾邮件附件中带有恶意宏的文档
附件压缩Word文档绕过检测
Qbot在垃圾邮件中传播都会用到一个相同的技术点,在.zip格式的压缩包中包含OFFICE文档或VBS脚本,这样做可以绕过CDR(内容撤防与重建)技术。在大规模网络钓鱼攻击活动期间,CDR会对进入的文件进行解构,并检查其中是否包含恶意组件。如果包含恶意组件,它会删除这些恶意组件,重新构建一个全新的版本传递给网络上的最终用户。Qbot正是利用了该技术的缺陷,不会在邮件中直接包含恶意组件,而是将恶意组件进行压缩投递,可以绕过CDR检测技术。
防火墙规避检测
垃圾邮件中包含的都是Qbot的下载器,它们执行或启用后都会连接网络下载Qbot并最终执行,安天CERT在分析这些下载域名时发现大部分是一些正常的网站,不排除被Qbot组织团队攻陷后上传的可能性。因下载的域名有极大可能是正常网站,所以很多防火墙设备可能不会拦截。
在分析时发现Qbot的C2也很有特点,大多以png和gif等为后缀,在流量上Content-Type也标记image/png或image/gif,但实际上下载的是一个完整的PE文件。这种技术手段同样也可以规避一些流量分析检测。
图 4-9 流量上下载Qbot银行木马规避监测
安天CERT在分析Qbot时发现,从2020年5月开始,ProLock勒索软件会借助Qbot进行传播。安天曾在此前一个月发布过《勒索软件ProLock藏身图片,安天智甲有效防护》的分析报告[1]。ProLock借助Qbot的传播方式与安天2020年3月发布的《多起攻击工业企业的勒索软件Ryuk分析及防御建议》中提到的传播方式如出一辙[2],即先窃密后进行加密勒索,实现“窃密+勒索”的运营模式。这种方式大大提高了攻击者获得勒索赎金的可能,并且利用勒索后的明显行为掩饰其窃密动作。
安天CERT在2020年9月监测到Qbot银行木马放弃了与ProLock勒索软件的捆绑,转而与Egregor勒索软件进行合作。值得一提的是,Maze勒索软件的制造者在2020年9月宣布退出恶意软件领域,其客户开始转向另一个勒索软件Egregor。Egregor的传播方式和ProLock一致,最开始都是采用垃圾邮件附件中包含压缩包的形式,解压后为带有宏病毒的Excel文件,当受害者执行宏后,会下载并执行Qbot银行木马,Qbot在获取权限后进而投放Egregor勒索软件,当Egregor获取受害者网络访问权限后,会借助Qbot银行木马下载Cobalt Strike工具进行传播,之后对所有攻陷的系统进行窃密,窃密后对系统上的文件进行加密。
随着RaaS(勒索软件即服务)模式的盛行,在巨额非法利益的驱动下,Qbot攻击活动有了新的变化。RaaS模式具体表现为,恶意代码作者负责开发勒索软件,运营人员维护专门的勒索支付网站,再通过联盟计划招募同伙进行攻击和勒索,最终赎金由各方分赃,进而形成一条完整的黑色产业链。该产业链的形成,不但加剧了恶意代码的传播,也为相关团伙提供了更广泛的收入来源,这使得同源威胁不断泛化。安天CERT发现,Qbot攻击者将多种勒索软件随同银行木马分发,推测其已经加入了某个勒索软件联盟计划。
Qbot银行木马的攻击前导主要分为两种:OFFICE文档宏病毒和VBS脚本两种方式下载载荷。攻击者前期常利用含有恶意宏文档附件的钓鱼邮件作为攻击入口,诱导受害者启用宏,从而执行恶意宏代码并下载后续载荷。从2020年4月开始,攻击者传播的垃圾邮件不再使用带有宏的恶意文档,而是指向压缩文件的URL,该文件中包含用VBS编写的下载脚本。
5.1.1 常见OFFICE文档诱饵举例
(1) 伪造Windows Defender防病毒主题文档
攻击者通过制作以Windows Defender防病毒警报为主题的文档,结合多家知名安全厂商图标,提升攻击目标对该文档的信任,并在文档中进一步引导目标点击“启用内容”按钮,实现宏代码的运行。
图 5-1 伪造Windows Defender的防病毒附件
(2) 伪造DocuSign加密文档
攻击者伪造了DocuSign(电子签名领域的企业)的图标,试图误导收件人使其认为该文档经过加密处理,需要根据文档中的指示进行解密,从而启用宏并执行恶意宏代码,下载后续有效载荷。
图 5-2 伪造DocuSign加密文档
图 5-3伪造DocuSign加密文档
(3) Emotet文档传播Qbot
Emotet文档传播Qbot,诱导启用宏并执行恶意宏代码,下载后续有效载荷。
图 5-4 Emotet文档传播Qbot
5.1.2 攻击前导代码分析
(1) 伪造受保护的Word文档的宏代码分析
曾经捕获到的某OFFICE Word文档中包含一个恶意宏,打开文件后将要求受害者单击“启用内容”按钮。单击“启用内容”按钮后,如图所示,试图误导受害者让其以为文档正在加载数据,从而等待宏执行完成。
图 5-5 恶意宏文档
图 5-6 启用宏后弹出窗口
恶意宏在“C:\Users\Public\”中创建“tmp.bat”文件,向该文件中写入如下图中的命令并执行,其功能为创建“tmpdir”文件夹。
图 5-7 创建“tmpdir”文件夹
恶意宏从五个URL中的随机选取一个存活的URL下载Qbot有效载荷,下载的有效载荷会保存到“C:\Users\Public\tmpdir\”目录下,命名为file*.exe(*代表随机字符串)并执行。
图 5-8 下载Qbot有效载荷
表 5-1 恶意宏下载QBot的URL
下载QBot的URL |
http[:]//pickap.io/wp-content/uploads/2020/04/evolving/888888.png |
http[:]//decons.vn/wp-content/uploads/2020/04/evolving/888888.png |
http[:]//econspiracy.se/evolving/888888.png |
http[:]//enlightened-education.com/wp-content/uploads/2020/04/evolving/888888.png |
http[:]//kslanrung.com/evolving/888888.png |
(2) 2020年12月新的攻击方式宏代码分析
攻击者在2020年12月新攻击中放弃使用exe文件以下载后续有效载荷,转而使用dll文件作为后续载荷。本次宏病毒利用了Excel 4.0宏在Excel文档中的存储方式,并结合了字体颜色、工作表隐藏和列隐藏等技巧隐藏Excel 4.0宏代码。详细分析过程如下:
因为伪造的DocuSign图片单元格名称框被设置成了Auto_Open,所以受害者在打开此表格并执行宏后,此表格会自动将表格中的内容当成Excel 4.0宏执行。
图 5-9 自动执行Excel 4.0宏
此次宏病毒还利用了工作表隐藏、列隐藏和字体颜色等技巧。宏病毒将名为Files和Flors的两个工作表隐藏。查看方式为将隐藏的列显示,字体颜色改为黑体,即能看到在两个工作表中隐藏的宏代码。
图 5-10 Files工作表中宏代码
图 5-11 Flors工作表中宏代码
将两工作表中的宏代码进行整理拼接,实际上该宏代码主要有两个功能。第一个功能为通过拼接后得来的网址下载Qbot恶意载荷并放到指定文件夹目录下,该载荷现已更新为dll格式;第二个功能是利用系统程序Rundll32.exe执行该恶意载荷。
图 5-12 拼接后宏代码功能
(3) 压缩包内为大容量高混淆的VBS脚本分析
为逃避沙箱检测,VBS文件在有效载荷末尾填充大量NULL字节,总大小超过35MB,并且脚本中调用Sleep函数延迟执行时间。
图 5-13 VBS文件
图 5-14 调用Sleep函数休眠30s
VBS脚本中包含多种混淆方法,最终从6个硬编码的URL中选择一个URL下载Qbot有效载荷。
图 5-15 解混淆后的URL及执行语句
表 5-2 恶意宏下载QBot的URL
下载QBot的URL |
http[:]//kiesow-auto.de/foojapfsyds/5555555.png |
http[:]//test.africanamericangolfersdigest.com/kkmthjsvf/5555555.png |
http[:]//frankiptv.com/liehyidqtu/5555555.png |
http[:]//klubnika-malina.by/utgritefmjq/5555555.png |
http[:]//centr-toshiba.by/wogvynkombk/5555555.png |
http[:]//marokeconstruction.com.au/hhmzmlqct/5555555.png |
(4) TA551分发Qbot的恶意宏文档分析
TA551组织最常见的攻击方式为垃圾邮件附件带有一个压缩包文件,压缩包文件解压需要口令,而口令会在垃圾邮件的内容中。解压缩后是一个名字中带有日期的OFFICE文档文件,文档大致内容是这个文档创建时间比较早,需要启用编辑,主要是诱使受害者启用宏。
图 5-16 诱使受害者启用宏
调试宏代码后发现,会在C:\ProgramData目录下创建名为aZe4I.hta的文件。
图 5-17 创建名为aZe4I.hta的文件
aZe4I.hta文件是一个HTML文件,其中重要部分已被base64编码。
图 5-18 aZe4I.hta文件内容
解码后内容主要是访问网址下载名为aZe4I.tmp有效载荷,该载荷实际文件格式为DLL文件,使用regsvr32.exe [文件名]的形式执行,最后删除C:\ProgramData目录下的aZe4I.hta文件。该载荷经判断,属于Qbot银行木马最新的有效载荷。
图 5-19 下载Qbot最新载荷
5.2.1 载荷简介
Qbot运营团队频繁更新版本,通常会在几个小版本后迎来一个大版本的更新,每次更新都会增加一些功能。安天CERT从2020年至今陆续捕获到海量Qbot样本,对每个样本进行分析发现,Qbot的开发人员在每次更新完版本后都会对样本的版本进行标签标注,如下图所示,可通过数据段对开发的主版本、次版本进行识别。截至2020年11月末,Qbot运营团队的有效载荷都是exe文件格式,2020年12月之后Qbot运营团队的有效载荷改成dll文件格式。
在发本次报告之前,分析的exe文件格式最新载荷主payload版本为325/37,次payload版本为325/43。
图 5-20 exe文件格式最新版本payload
安天CERT在2020年11月末开始陆续捕获到Qbot的有效载荷变为dll文件,最新的dll文件格式版本payload为401/78。
图 5-21 dll文件格式版本payload
5.2.2 载荷版本梳理
安天CERT对多批次的载荷版本梳理情况如下表所示:
表 5-3 载荷版本梳理
主版本 |
次版本 |
Payload次版本 |
时间戳 |
描述 |
324 |
44 |
8 |
2020年1月22日 |
未见较大变化 |
324 |
353 |
53 |
2020年3月3日 |
未见较大变化 |
324 |
375 |
65 |
2020年3月13日 |
未见较大变化 |
324 |
379 |
70 |
2020年3月20日 |
增加hVNC模块 |
324 |
383 |
74 |
2020年4月1日 |
未见较大变化 |
324 |
385 |
75 |
2020年4月1日 |
未见较大变化 |
324 |
388 |
79 |
2020年4月8日 |
增加终止指定名称进程模块 |
324 |
390 |
126 |
2020年4月10日 |
未见较大变化 |
324 |
390 |
127 |
2020年4月10日 |
未见较大变化 |
324 |
393 |
136 |
2020年4月29日 |
移除JS Updater资源,调整JS Update命令 |
324 |
399 |
141 |
2020年5月7日 |
增加分析程序黑名单,增强反虚拟机能力 |
324 |
401 |
142 |
2020年5月28日 |
未见较大变化 |
325 |
5 |
7 |
2020年7月29日 |
增加新的反虚拟机技术 |
325 |
7 |
13 |
2020年7月31日 |
未见较大变化 |
325 |
8 |
14 |
2020年8月3日 |
未见较大变化 |
325 |
35 |
42 |
2020年8月7日 |
未见较大变化 |
325 |
37 |
43 |
2020年8月11日 |
此报告发布前的exe文件格式最新版本 |
401 |
29 |
|
2020年11月24日 |
最新载荷改为dll文件格式 |
401 |
78 |
|
2020年12月11日 |
此报告发布前dll文件格式最新版本 |
1、 样本被受害者手动执行时,会通过一些命令行参数,如“/C”、“/W”、“/I”、“/P”、“/Q”等执行相应的功能。
2、 样本由PowerShell下载执行时,不需要提供参数,样本直接进入非参数分支,具体流程图与详细流程说明如下:
图 5-22 样本执行流程
[1]. 样本由PowerShell下载执行时,不需要提供参数。样本直接进入非参数分支,该分支首先使用命令行参数“/C”创建自身进程“file1.exe”,然后检测是否运行在虚拟机或分析设备中。如果不在虚拟机或分析设备中,样本将在“%AppData%\Microsoft\”文件夹下创建一个主文件夹,用来保存样本的数据。主文件夹的名称是随机命名。
[2]. 样本检查当前进程是否来自于主文件夹,如果不是,将利用PowerShell下载到“C:\Users\Public\tmpdir\”目录下的样本复制到主文件夹下。
[3]. 从当前进程加载名为“307”和“308”的资源。创建名为“beiuubc.dat”和“beiuubc.exe”副本文件用来保存加密的配置数据,并创建一个WMI对象执行不带参数的“beiuubc.exe”进程。
[4]. “file1.exe”进程创建任务计划,使用的命令为“C:\ Windows \ system32 \ schtasks.exe / Create / RU \“ NT AUTHORITY \ SYSTEM \” / tn qyuoeflyq / tr \“ C:\ Users \ Public \ tmpdir \ file1.exe \” / I qyuoeflyq / SC ONCE / Z / ST 22:48 / ET 23:00”。创建的任务名称为“qyuoeflyq”,执行命令“C:\ Users \ Public \ tmpdir \ file1.exe / I qyuoeflyq”,使用“/I qyuoeflyq”参数删除自身并替换为“calc.exe”,删除计划任务。
[5]. 调用API ExitProcess()退出进程。
[6]. “beiuubc.exe”首先执行“file1.exe”所有的功能,执行之后,它将从“explorer.exe”进程中执行恶意代码。
[7]. Qbot将自身所有数据从内存中注入到“explorer.exe”中。“explorer.exe”首先是加载和解密资源“307”到内存中,该资源是样本的核心模块。
[8]. 创建主线程,在线程函数中创建命名管道\\.\pipe\[可变字符串]sp。当有人连接到此管道时,将启动一个线程来监视和处理数据。
[9]. 将主进程添加注册表自启动项,实现自启动。创建计划任务每5个小时执行一次Qbot,不断刷新已加密的配置数据,包括变量ID、Qbot安装时间、受害者登录名和公网IP地址等。
[10]. Qbot不仅创建了主线程,还创建了许多子线程,并将这些子线程的优先级设置为低于正常。子线程的主要作用是在内网中进行传播扩散,与C2服务器建立连接,从受感染的主机上收集软件信息和证书,通过核心模块加载子模块等。
[11]. 首先,枚举受害主机上的网络共享,与一台网络计算机建立连接,并将Qbot自身复制到共享文件夹中,调用API函数在远程计算机上启动服务,最后,删除远程创建的服务和复制到共享文件夹下的Qbot样本。在所有网络共享上重复上述操作,传播Qbot。
[12]. 从核心功能模块中解密资源“311”,得到C2服务器列表。Qbot重复从该列表中循环选择IP地址并尝试连接,直到连接成功为止。更新配置数据,将其他子线程收集的所有数据发送到该C2服务器中。
[13]. 同时,Qbot的其他子线程会调用API函数从感染的主机上读取已安装的证书和私钥。收集感染的主机上已安装软件的信息,将收集的信息发送到C2服务器。C2服务器一旦收到数据,会下发其他子模块并使用注入模块到目标进程并加载。一旦注入模块在目标进程中执行,会对关键API进行挂钩,收集受害者数据并上传。
样本标签如下:
表 5-4 二进制可执行文件
病毒名称 |
Trojan/Win32.Qbot |
原始文件名 |
625986.png |
MD5 |
|
文件格式 |
BinExecute/Microsoft.EXE[:X86] |
文件大小 |
844.46 KB
(864,728 字节) |
时间戳 |
2020-10-05
11:44:40 |
数字签名 |
无 |
加壳类型 |
无 |
编译语言 |
Microsoft
Visual C++ |
VT首次上传时间 |
2020-10-09
10:21:01 |
VT检测结果 |
48/70 |
该样本中包含了大量的对抗分析技术,层层包裹阻碍分析人员逆向分析。第一层运用ShellCode技术规避检测;第二层是ShellCode解码后得到的样本核心PayLoad部分,该部分的主要功能是获取系统信息、检测杀毒软件、检测自身运行权限、检测自身所在目录、创建计划任务实现持久驻留等;第三层是根据不同参数执行不同操作,其中“/W”参数的主要功能是找到名为“307”的资源并加载,“/C”参数的主要功能是检测是否运行在虚拟机中,“/Q”参数的主要功能是直接退出进程,“/I”参数的主要功能是加载名为“307”、“308”的资源(配置数据)。“/P”参数的主要功能是测试运行环境并弹窗显示结果等;第四层主要是加载资源“307”,该资源提取后是一个动态链接库文件,主要功能是窃取凭证、连接远程服务器以及检测反病毒产品等。
5.4.1 第一层代码——解密ShellCode
该层主要功能是通过ShellCode技术规避检测,将ShellCode写入申请的内存空间并解码执行,解码后是一个PE文件。
图 5-23 解码ShellCode
5.4.2 第二层代码——多种手段反沙箱
解码后的PE文件会获取版本信息、环境变量信息、计算机名等系统信息。
图 5-24 获取系统信息
遍历窗口对比窗口类名,查看是否存在类名为snxhk_border_mywnd的窗口,以确定它是否在专为恶意软件分析而设计的隔离环境中运行。
图 5-25 遍历窗口
创建自身进程,并带参数“/C”,该参数功能是用来检查它是否在分析环境中运行。
图 5-26 创建自身进程
通过调用API函数SetupDiEnumDeviceInfo()枚举设备信息检查是否在虚拟机环境中运行,如果是,返回值为1;如不是,则返回值为0。主要检查虚拟机设备信息如下:
图 5-27 虚拟机设备相关字符串信息
通过调用API函数CreateToolhelp32Snapshot、Process32First、Process32Next枚举当前系统进程,查询是否有诸如Fiddler.exe、Autoruns.exe等分析工具。如果有,返回值为1,使用ExitProcess函数结束调用的进程及其所有的线程;如果没有,返回值为0,继续执行下一步反虚拟机/沙箱操作。
图 5-28 查询分析工具进程
通过检查沙箱中使用的ivm-inject.dll、SbieDll.dll文件,来确定样本是否运行在沙箱的环境中。如果检查是运行在沙箱中则样本退出,否则样本继续执行。
图 5-29 查询是否运行在沙箱中
通过检查沙箱常用样本名称来确定是否运行在沙箱中。主要有以下常见名:sample、nlwr_smpl和artifact.exe。
图 5-30 检查沙箱常用名
通过调用ASM指令CPUID来检查CPU信息,通过执行eax=1指令,根据返回值可以判断处理器是否处于虚拟机中。
图 5-31 检查CPU信息
检测自身运行权限,获取一个管理员权限的cmd窗口的句柄,以管理员权限使用cmd窗口用“/C”参数重启。
图 5-32 检测自身运行权限
5.4.3 第三层分析——加载“307”资源
表 5-4 各参数执行操作
参数 |
操作 |
/W |
加载资源307 |
/C |
反虚拟机 |
/Q |
直接退出进程 |
/I |
加载资源307、308,降低Windows Defender防病毒拦截等级,让阻止功能失效。删除自身。 |
/i(参数2) |
释放副本,并运行,并创建计划任务实现自启动。删除自身。如果存在参数2,则删除由参数2指定的计划任务。 |
/P |
测试运行环境并弹窗显示结果。包括测试资源是否加载成功,seh,是否启用随机基址,是否检测到vmware环境,带参数/Q创建进程是否成功 |
/t |
查找是否存在窗口名和窗口类名为自身文件名的窗口,如果存在则发送消息37204到该窗口。否则,向所有顶级窗口发消息 WM_KILLFOCUS,使其失去焦点。 |
/s |
连接程序主线程到服务控制管理程序,服务名为PID和当前时间经过编码后的值。 |
样本会根据不同的参数进行跳转到各个参数对应的操作,下图为判断参数是否为/Q、/P、/C和/W四个参数,如果是以上四个参数任意一个,则跳转到该参数的功能模块。
图 5-33 判断参数(1)
判断参数是否为/t、/s和/i,如果是,则跳转到该参数对应的功能模块。
图 5-34 判断参数(2)
参数/W的功能是加载名为“307”的资源。
图 5-35 加载“307”资源
参数/C主要检测是否运行在虚拟机中,会遍历进程,查找vmnat.exe进程,检测自身是否运行在虚拟机中。
图 5-36 检测虚拟机
参数/i主要是获取C盘驱动器类型,加载307、308资源、释放副本并运行、创建计划任务实现自启动。
图 5-37 参数/i功能
在C:\Users\XXX\AppData\Roaming\Microsoft\Dyyb下释放副本文件。
图 5-38 释放副本(1)
创建名为“beiuubc.dat”和“beiuubc.exe”的副本文件用来保存加密的配置数据。
图 5-39 释放副本(2)
5.4.4 第四层分析——解密“307”资源释放最终DLL载荷
解密名为“307”的资源,解密后其实是一个PE文件,查看PE结构后发现是一个动态链接库文件。
图 5-40 解密“307”资源
获取加密相关函数地址
图 5-41 获取加密相关函数地址
创建命名管道 \\\\.\\pipe\\%ssp,当有人连接到此管道时,它将启动一个线程来监视和处理数据。
图 5-42 创建命名管道
获取公网IP地址。
图 5-43 获取公网IP地址
查询通信数据相关字符串。
图 5-44 通信数据字符串
查询通信相关功能字符串。
图 5-45 通信相关功能
查询反病毒产品字符串。
图 5-46 查询反病毒产品
收集计算机系统信息、Bios信息、磁盘驱动信息和内存信息等。
图 5-47 信息收集
从307模块中提取出资源308和311。
图 5-48 提取资源
资源“308”解密得到以下内容,是样本的相关配置:
b';|q\xb6|\xeb\xe5\x80\xdd1\xb3g\xde\xee\xb9\x98\xfd\xd80*10=abc014\r\n3=1601980173\r\n'
资源“311”解密得到以下IP地址,用于构建通信隧道:
表 5-6 解密后的IP地址
IP地址 |
IP地址 |
IP地址 |
190.30.185.80:443 |
47.44.217.98:443 |
141.158.47.123:443 |
75.136.40.155:443 |
24.71.28.247:443 |
203.106.195.67:443 |
151.73.118.54:443 |
72.204.242.138:443 |
2.51.221.138:995 |
24.138.77.61:443 |
108.5.34.248:443 |
175.211.225.118:443 |
84.247.36.26:443 |
68.190.152.98:443 |
66.222.88.126:995 |
80.240.26.178:443 |
2.89.114.20:443 |
61.2.171.191:443 |
69.11.247.242:443 |
197.133.117.15:443 |
50.244.112.106:443 |
71.163.222.203:443 |
70.168.130.172:995 |
24.27.82.216:2222 |
65.131.72.17:995 |
103.76.160.110:443 |
70.174.20.7:443 |
109.93.11.111:995 |
103.238.231.40:443 |
184.98.103.204:995 |
80.14.209.42:2222 |
73.228.1.246:443 |
72.204.242.138:20 |
173.245.152.231:443 |
207.255.161.8:995 |
96.18.240.158:443 |
173.70.165.101:995 |
24.122.0.90:443 |
35.134.202.234:443 |
173.70.165.101:995 |
78.97.3.6:443 |
74.105.52.200:443 |
185.246.9.69:995 |
184.180.157.203:2222 |
81.133.234.36:2222 |
2.7.65.32:2222 |
72.204.242.138:53 |
207.237.1.152:443 |
77.30.32.191:995 |
72.204.242.138:990 |
59.26.204.144:443 |
72.28.255.159:995 |
98.26.50.62:995 |
71.217.125.53:2222 |
69.40.16.109:443 |
93.113.177.152:443 |
95.77.223.148:443 |
108.46.145.30:443 |
86.163.174.33:2222 |
86.126.230.176:443 |
207.255.161.8:993 |
74.109.219.145:443 |
2.50.131.64:443 |
89.42.142.35:443 |
45.32.154.10:443 |
90.175.88.99:2222 |
199.247.22.145:443 |
66.215.32.224:443 |
68.225.60.77:443 |
24.43.22.220:993 |
39.36.218.78:995 |
77.31.120.194:995 |
45.32.155.12:443 |
117.218.208.239:443 |
67.170.137.8:443 |
71.187.170.235:443 |
134.228.24.29:443 |
24.139.132.70:443 |
74.75.237.11:443 |
72.204.242.138:32100 |
173.22.125.129:2222 |
71.126.139.251:443 |
217.162.149.212:443 |
71.80.66.107:443 |
2.50.159.48:2222 |
71.19.217.23:443 |
213.31.203.109:2222 |
172.78.30.215:443 |
72.190.101.70:443 |
59.96.167.209:443 |
190.85.91.154:443 |
207.255.18.67:443 |
197.210.96.222:995 |
86.97.184.46:2222 |
72.204.242.138:50001 |
5.193.181.221:2078 |
156.213.145.107:443 |
78.96.199.79:443 |
31.5.168.31:443 |
190.220.8.10:443 |
72.186.1.237:443 |
86.126.108.242:2222 |
74.73.27.35:443 |
67.60.113.253:2222 |
24.205.42.241:443 |
24.53.49.240:2222 |
95.179.247.224:443 |
174.110.39.220:443 |
184.97.132.62:443 |
199.247.16.80:443 |
5.12.218.57:2222 |
155.186.9.160:443 |
80.195.103.146:2222 |
5.12.255.109:443 |
86.126.17.13:443 |
66.26.160.37:443 |
203.198.96.200:443 |
195.138.42.49:50001 |
24.234.86.201:995 |
61.230.5.67:443 |
207.246.75.201:443 |
207.255.161.8:443 |
65.102.136.20:995 |
96.227.127.13:443 |
100.4.173.223:443 |
94.52.160.116:443 |
45.77.193.83:443 |
103.206.112.234:443 |
47.138.201.136:443 |
199.116.241.147:443 |
86.177.171.45:2222 |
73.225.67.0:443 |
95.77.144.238:443 |
216.201.162.158:443 |
24.255.176.233:443 |
96.30.198.161:443 |
144.139.47.206:443 |
31.5.21.66:443 |
208.99.100.129:443 |
31.215.193.110:443 |
95.76.109.181:443 |
72.204.242.138:32102 |
77.27.174.49:995 |
69.123.179.70:443 |
89.137.211.239:443 |
93.149.253.201:2222 |
24.28.183.107:995 |
72.204.242.138:443 |
2.50.57.36:443 |
108.30.125.94:443 |
5.4.5 下载窃密插件模块分析
(1) Cookie窃取模块
该模块主要针对当前主流浏览器IE、Edge、Chrome和Firefox进行窃取。
图 5-49 Cookie相关字符串
查询Cookie相关属性。
图 5-50 查询Cookie属性
窃取Chrome浏览器Cookie信息。
图 5-51 窃取Chrome浏览器信息
(2) 密码窃取模块
该模块会使用PowerShell命令下载Mimikatz以实现窃取密码的功能。
图 5-52 下载Mimikatz窃取密码
该模块还会收集系统目录和环境变量。
图 5-53 收集系统目录和环境变量
1CF408C683EE6EC83BC344C146EB6E8D37238D68
75107AEE398EED78532652B462B77AE6FB576198
674685F3EC24C72458EDC11CF4F135E445B4185B
9001DF2C853B4BA118433DD83C17617E7AA368B1
9D15E8A3CEC19E15482FF38F21A03FE67612C76E
9D96C4A48083DAD303FFAAD382F98B83331E5661
D025DC62E84C9B7DD1C758AABA2020A8FB8FD0D9
81D3E7C34C108EF05FEB58FA9EAD6901762D5570
B66AF11696C35B8D0D8581B26365665D7B4D55CC
[1] 勒索软件ProLock藏身图片,安天智甲有效防护
https://www.antiy.cn/research/notice&report/research_report/20200419.html
[2] 多起攻击工业企业的勒索软件Ryuk分析及防御建议
https://www.antiy.cn/research/notice&report/research_report/20200320.html
[3] An Old Bot’s Nasty New Tricks: Exploring Qbot’s Latest Attack Methods
https://research.checkpoint.com/2020/exploring-qbots-latest-attack-methods/
[4] Deep Analysis of a QBot Campaign – Part I
https://www.fortinet.com/blog/threat-research/deep-analysis-of-a-qbot-campaign-part-1
[5] Deep Analysis of a QBot Campaign - Part II
https://www.fortinet.com/blog/threat-research/deep-analysis-qbot-campaign