概述
QakBot,也被称为QBot、QuackBot和Pinkslipbot,它是一个已经存在了十多年的银行木马。它于2007年被在野发现,之后被其运营团队不断地维护和开发。
近年来,QakBot已成为全球流行的银行木马之一。它的主要目的是窃取银行凭证(如登录名、密码等),恶意软件本身也实现了一些功能,如监视金融业务、自我传播和安装勒索软件等,以便从受感染组织中获得最大收益。
QakBot的功能仍在不断发展,直到今天,它已经实现了更多的功能和新技术,如键盘记录、后门功能和逃避检测的技术。值得一提的是,其逃避检测的技术包括虚拟环境检测、定期自我更新和加密器/打包器(cryptor/packer)更改。此外,QakBot还试图保护自己不被分析人员和自动工具分析和调试。
该恶意软件另一个有趣的功能是窃取电子邮件的能力。这些后来被攻击者用来向受害者发送有针对性的电子邮件,获得的信息被用来引诱受害者打开这些电子邮件。
QakBot感染链
据了解,QakBot主要通过垃圾邮件活动感染受害者。在某些情况下,电子邮件与Microsoft Office文档(Word、Excel)或密码保护的附件一起发送。这些文件包含宏,受害者被提示打开附件,并声称这些附件包含重要信息(如发票)。在某些情况下,这些电子邮件包含了分发恶意文件的网页链接。
但是,还有另一种感染载体,即恶意的QakBot Payload通过目标主机上的其它恶意软件传输到受害者的机器上。
最初的感染载体可能会有所不同,具体取决于威胁者认为针对目标组织最有可能成功的方式。众所周知,各种威胁者事先会对目标组织进行侦查(OSINT),以确定最合适的感染载体。
QakBot 感染链
近期QakBot版本(2020-2021变体)的感染链如下:
用户收到一封带有ZIP附件的钓鱼邮件,该附件包含嵌入宏的Office文档、文档本身或下载恶意文档的链接。
用户打开恶意附件/链接并被诱骗点击 "启用内容"。
执行恶意宏。某些变体对请求“PNG”的 URL 执行“GET”请求。然而,该文件实际上是一个二进制文件。
加载的Payload(stager)包括另一个包含加密资源模块的二进制文件。其中一个加密的资源有DLL二进制文件(loader),该二进制文件后来在运行时被解密。
Stager 将"Loader "加载到内存中,它在运行时解密并运行Payload。从另一个资源中检索配置设置。
Payload与C2服务器进行通信。
将ProLock 勒索软件等其它威胁推送到受感染的计算机上。
QakBot的典型功能
在野外观察到的典型QakBot恶意活动包括:
收集有关感染主机的信息;
创建计划任务(提权和持久性);
收集凭证:
1.凭证转储(Mimikatz,exe access)*;
2.窃取密码(从浏览器数据和cookies);
3.针对网络银行链接(网络注入)*;
密码暴力破解;
注册表操作(持久性);
创建自身的副本;
进程注入以隐藏恶意进程。
C2通信
QakBot包含一个150个IP地址的列表,被硬编码到加载器二进制资源中。这些地址大多属于其它被感染的系统,它们被用作代理,将流量转发给其它代理或真正的C2。
与C2的通信是一个带有Base64编码数据的HTTPS POST请求,数据是用RC4算法加密的。静态字符串 "jHxastDcds)oMc=jvh7wdUhxcsdt2 "和一个随机的16字节序列被用来加密。数据本身采用JSON格式。
JSON 格式的原始消息
带有加密JSON 的 HTTPS POST 请求
通常情况下,在感染之后,bot会发送一个 "PING "消息、"SYSTEM INFO "消息和 "ASK forCOMMAND "消息,而C2则会回复"ACK "和 "COMMAND "消息。如果C2推送了其它模块,则bot会发送一个包含被模块窃取的数据的“STOLEN INFO”消息。
1.PING消息:bot向C2发送带有"BOT ID"的请求消息,以检查C2是否处于活动状态。
PING消息
2.ACK消息:C2响应消息,字段 "16 "包含受感染系统的外部IP地址,这是唯一有价值的信息。
ACK消息
3.SYSTEMINFO消息:bot向C2发送请求信息,并收集了关于受感染系统的信息。除了操作系统版本和位数、用户名、计算机名称、域名、屏幕分辨率、系统时间、系统运行时间和bot运行时间等一般系统信息外,它还包含以下实用程序和WMI查询的结果。
whoami /all
arp -a
ipconfig /all
net view /all
cmd /c set
nslookup-querytype=ALL -timeout=10 _ldap._tcp.dc._msdcs.{DOMAIN}
nltest/domain_trusts /all_trusts
net share
route print
netstat -nao
net localgroup
qwinsta
WMI QueryROOT\\CIMV2:Win32_BIOS
WMI QueryROOT\\CIMV2:Win32_DiskDrive
WMI QueryROOT\\CIMV2:Win32_PhysicalMemory
WMI QueryROOT\\CIMV2:Win32_Product
WMI QueryROOT\\CIMV2:Win32_PnPEntity
SYSTEM INFO 消息
4.ASKfor COMMAND消息:bot的命令请求信息发送到C2。在"SYSTEM INFO "消息发出后,bot开始向C2请求执行命令。其中一个主要字段是 "14" - SALT。这个字段是唯一的,在每个请求中都会发生变化。它是用来防止bot被劫持或接管的。C2收到此请求后,在签名过程中使用 SALT 并将签名放置在响应中,以便bot可以检查签名数据。只有有效的、经过签名的命令才会被执行。
ASK forCOMMAND消息
5.COMMAND消息:C2响应消息与执行的命令。当前版本的bot支持24条命令,其中大部分与下载、执行、投放附加模块和具有不同选项的模块配置文件,或设置/更新配置值有关。
这种类型的消息包含SALT的签名值(从机器人的请求字段 "14 "中获得)、COMMAND ID和MODULE ID,消息的其它值没有签名。在以前的版本中,bot 在感染后立即接收模块和命令并发送“SYSTEM INFO”消息。现在,C2用一个空命令来响应,大约一个小时,之后C2才会在响应中发送命令和模块。我们认为,这种时间延迟用于在隔离的受控环境中难以接收和分析新的命令和模块的情况。
COMMAND C2 响应与空命令
如果C2推送了一些模块,Base64编码的二进制文件将放入信息的 "20 "字段。
COMMAND C2 响应,带有要加载的附加模块
6.STOLEN INFO消息:发送给 C2 的bot消息,其中包含密码、帐户、电子邮件等被盗信息。被盗信息采用 RC4 加密和 Base64 编码。RC4加密的密钥是以不同的方式生成的,并且基于受感染的系统 ID(又名 Bot ID)值,而不是像流量加密那样基于静态字符串。
STOLEN INFO消息
一旦与C2服务器建立了通信,QakBot就会下载并使用其它模块来执行其恶意操作。
附加模块因样本而异,可能包括:”Cookie采集器"、"电子邮件收集器"、"凭证采集器"和 "代理模块 "等等。
下面是我们在研究中发现的一些模块。
附加模块
Cookie采集器:从流行浏览器(Edge、Firefox、Chrome、Internet Explorer)收集 cookie。
Cookie Grabber
HiddenVNC:允许威胁者连接到受感染的机器,并在用户不知情的情况下与其进行交互。
Hidden VNC
电子邮件收集器:尝试在受感染机器上查找 Microsoft Outlook,然后遍历文件夹并递归收集电子邮件。最后,该模块将收集到的电子邮件渗出到远程服务器。
攻击者在某个时候分发了电子邮件收集器模块的调试版本
Hooking模块:挂钩一组硬编码的WinAPI,Mozilla DLL Hooking用于执行web注入、嗅探流量和键盘数据,甚至阻止某些域的DNS解析。Hooking的工作方式如下:QakBot将Hooking模块注入适当的进程,该模块从硬编码集中查找函数,并修改函数,使它们跳转到自定义代码。
该模块包含一个加密的DLL列表和bot将挂钩的函数
Passgrabber模块:从各种来源收集登录名和密码:Firefox 和 Chrome 文件、MicrosoftVault 存储等。该模块使用自己的算法收集密码,而不是像以前的版本那样使用 Mimikatz。
从不同来源收集密码的程序
代理模块:尝试使用 UPnP 端口转发和二级C2查询来确定哪些端口可用于侦听。比较当前和旧的代理加载器版本发现了一些有趣的事情:威胁者从二进制文件中删除cURL依赖项,并使用自己的代码执行所有的HTTP通信。除了删除cURL,他们还删除了OpenSSL的依赖项,并将所有功能嵌入到单个可执行文件中,不再有代理加载器或代理模块,它现在是一个单一的文件。
UPnP端口转发查询构建
在尝试确定端口是否开放和机器能否作为C2二级代理后,代理模块还启动了一个多线程的SOCKS5代理服务器。SOCKS5协议被封装成QakBot代理协议,由以下部分组成:QakBot代理命令(1字节)、版本(1字节)、会话ID(4字节)、数据包总长度(dword)、数据(数据包总长度-10)。传入和传出的数据包存储在缓冲区中,可以逐个接收/发送,也可以在单个TCP数据段(流)中的多个数据包中接收/发送。
通常代理模块的执行流程如下:
1.与C2通信,尝试用UPnP转发端口,确定可用的端口并报告给C2。这里通常使用的C2通信协议是HTTP POST RC4-ciphered JSON数据。
2.下载OpenSSL库。QakBot不会保存下载的文件,而是测量下载速度并删除收到的文件。
3.设置外部PROXY-C2连接,该连接是通过命令37(更新配置)/模块274(代理)由Stager接收的。
与外部 PROXY-C2 通信:
1.发送初始代理模块请求。初始请求包含bot ID、被感染机器的外部IP地址、外部IP地址的反向DNS查询、网速(先前测量)和代理模块启动后的秒数。
2.与PROXY-C2建立连接(代理命令序列1->10->11)。
3.初始化会话,用登录名/密码执行socks5授权(使用命令10从PROXY-C2接收)。
4.开始类似SOCKS5的通信,并将其封装在QakBot代理模块协议中。
QakBot代理命令如下:
命令 | 描述 |
1 | Hello(bot->C2) |
10 | 设置身份验证凭据(C2->bot) |
11 | 确认凭据设置 (bot->C2) |
2 | 创建新的代理会话(C2->bot) |
3 | SOCKS5 认证(bot->C2) |
4 | SOCKS5 请求处理(适用于双方) |
5 | 关闭会话(适用于双方) |
6 | 更新会话状态/会话状态更新通知(适用于双方) |
7 | 更新会话状态/会话状态更新通知(适用于双方) |
8 | PING (C2->bot) |
9 | PONG (bot->C2) |
19 | 在注册表中保存当前时间(C2->bot) |
来自 C2 的解析数据包
跟踪单个代理
Web注入:hooking 模块的配置文件。
一旦与C2建立通信,下载的附加模块之一就是web注入模块。它通过将模块注入浏览器的进程并挂钩网络API来拦截受害者的流量。hooking模块从截获的API中获取执行流程,一旦受害者访问某些与银行和金融有关的网页,就会将额外的JavaScript 注入源页面。
注入Wells Fargo的登录页面源代码的 JavaScript 片段
QakBot统计
我们分析了从卡巴斯基安全网络(KSN)收集到的关于QakBot攻击的统计数据,卡巴斯基用户自愿提供的匿名数据在这里积累和处理。在2021年的前七个月,我们的产品检测到181,869次下载或运行QakBot的尝试,这个数字低于2020年1月至7月的检测数字,但受影响的用户数量比前一年增长了65%,达到17316人。
2020年和2021年1-7月受QakBot攻击影响的用户数
我们观察到 2021 年第一季度规模最大的活动,当时有12,704名用户感染了QakBot,其中 1 月有 8,068名卡巴斯基用户成为目标,2 月有 4,007 名。
结论
QakBot是一个已知的银行木马,其技术可能因二进制文件而异(旧版本和新版本)。它已经活跃了十多年,看起来不会很快消失。该恶意软件不断得到更新,运营者不断增加新的功能并更新其模块,以窃取信息并使收入最大化。
我们知道,QakBot开发团队会根据安全厂商的策略改变他们进行攻击的方式,使用复杂的技术来保持不被发现。尽管QakBot使用不同的技术来避免被发现,例如,进程枚举以便找到正在运行的反恶意软件解决方案,但我们的产品能够使用行为分析来检测威胁。该恶意软件通常检测为:
Backdoor.Win32.QBot
Backdoor.Win64.QBot
Trojan.JS.QBot
Trojan.MSOffice.QBot
Trojan.MSOffice.QbotLoader
Trojan.Win32.QBot
Trojan-Banker.Win32.QBot
Trojan-Banker.Win32.QakBot
Trojan-Banker.Win64.QBot
Trojan-Downloader.JS.QBot
Trojan-PSW.Win32.QBot
Trojan-Proxy.Win32.QBot
IoC
C2服务器地址
75.67.192[.]125:443 24.179.77[.]236:443 70.163.161[.]79:443
72.240.200[.]181:2222 184.185.103[.]157:443 78.63.226[.]32:443
83.196.56[.]65:2222 95.77.223[.]148:443 76.168.147[.]166:993
105.198.236[.]99:443 73.151.236[.]31:443 64.121.114[.]87:443
213.122.113[.]120:443 97.69.160[.]4:2222 77.27.207[.]217:995
105.198.236[.]101:443 75.188.35[.]168:44331.4.242[.]233:995
144.139.47[.]206:443 173.21.10[.]71:2222 125.62.192[.]220:443
83.110.109[.]155:2222 76.25.142[.]196:443 195.12.154[.]8:443
186.144.33[.]73:443 67.165.206[.]193:993 96.21.251[.]127:2222
149.28.98[.]196:2222 222.153.122[.]173:995 71.199.192[.]62:443
45.77.117[.]108:2222 45.46.53[.]140:2222 70.168.130[.]172:995
45.32.211[.]207:995 71.74.12[.]34:443 82.12.157[.]95:995
149.28.98[.]196:995 50.29.166[.]232:995 209.210.187[.]52:995
149.28.99[.]97:443 109.12.111[.]14:443 209.210.187[.]52:443
207.246.77[.]75:8443 68.186.192[.]69:443 67.6.12[.]4:443
149.28.99[.]97:2222 188.27.179[.]172:443 189.222.59[.]177:443
149.28.101[.]90:443 98.192.185[.]86:443 174.104.22[.]30:443
149.28.99[.]97:995 189.210.115[.]207:443 142.117.191[.]18:2222
149.28.101[.]90:8443 68.204.7[.]158:443 189.146.183[.]105:443
92.59.35[.]196:2222 75.137.47[.]174:443 213.60.147[.]140:443
45.63.107[.]192:995 24.229.150[.]54:995 196.221.207[.]137:995
45.63.107[.]192:443 86.220.60[.]247:2222 108.46.145[.]30:443
45.32.211[.]207:8443 193.248.221[.]184:2222 187.250.238[.]164:995
197.45.110[.]165:995 151.205.102[.]42:443 2.7.116[.]188:2222
45.32.211[.]207:2222 71.41.184[.]10:3389 195.43.173[.]70:443
96.253.46[.]210:443 24.55.112[.]61:443 106.250.150[.]98:443
172.78.59[.]180:443 24.139.72[.]117:443 45.67.231[.]247:443
90.65.234[.]26:2222 72.252.201[.]69:443 83.110.103[.]152:443
47.22.148[.]6:443 175.143.92[.]16:443 83.110.9[.]71:2222
149.28.101[.]90:995 100.2.20[.]137:443 78.97.207[.]104:443
207.246.77[.]75:2222 46.149.81[.]250:443 59.90.246[.]200:443
144.202.38[.]185:995 207.246.116[.]237:8443 80.227.5[.]69:443
45.77.115[.]208:995 207.246.116[.]237:995 125.63.101[.]62:443
149.28.101[.]90:2222 207.246.116[.]237:443 86.236.77[.]68:2222
45.32.211[.]207:443 207.246.116[.]237:2222 109.106.69[.]138:2222
149.28.98[.]196:443 45.63.107[.]192:2222 84.72.35[.]226:443
45.77.117[.]108:443 71.163.222[.]223:443 217.133.54[.]140:32100
144.202.38[.]185:2222 98.252.118[.]134:443 197.161.154[.]132:443
45.77.115[.]208:8443 96.37.113[.]36:993 89.137.211[.]239:995
45.77.115[.]208:443 27.223.92[.]142:995 74.222.204[.]82:995
207.246.77[.]75:995 24.152.219[.]253:995 122.148.156[.]131:995
45.77.117[.]108:8443 24.95.61[.]62:443 156.223.110[.]23:443
45.77.117[.]108:995 96.61.23[.]88:995 144.139.166[.]18:443
45.77.115[.]208:2222 92.96.3[.]180:2078 202.185.166[.]181:443
144.202.38[.]185:443 71.187.170[.]235:443 76.94.200[.]148:995
207.246.77[.]75:443 50.244.112[.]106:443 71.63.120[.]101:443
140.82.49[.]12:443 24.122.166[.]173:443 196.151.252[.]84:443
81.214.126[.]173:2222 73.25.124[.]140:2222 202.188.138[.]162:443
216.201.162[.]158:443 47.196.213[.]73:443 74.68.144[.]202:443
136.232.34[.]70:443 186.154.175[.]13:443 69.58.147[.]82:2078
原文链接:
https://securelist.com/qakbot-technical-analysis/103931/
声明:本文来自维他命安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。