QakBot银行木马变种使用html附件进行传播

QakBot银行木马变种使用html附件进行传播

Fortinet 的 FortiGuard 实验室捕获了一封网络钓鱼电子邮件,作为传播 QakBot 新变种的网络钓鱼活动的一部分。QakBot 也称为 QBot、QuackBot 或 Pinkslipbot,是一种信息窃取程序和银行木马,自 2007 年以来已被安全研究人员捕获和分析。

我使用捕获的电子邮件对该网络钓鱼活动和新的 QakBot 变体进行了深入分析。在此分析中,您将了解附加的 HTML 文件如何导致下载和执行新的 QakBot 变体,它在受害者的设备上采取的操作,以及它如何将收集到的数据从受害者的设备发送到其 C2 服务器。 

受影响的平台: Microsoft Windows
受影响的各方: Microsoft Windows 用户
影响:控制受害者的设备并收集敏感信息
严重级别:严重

网络钓鱼电子邮件和HTML附件

图 1.1 显示了黑客用来引诱收件人打开附加的 HTML 文件 (ScannedDocs_1586212494.html) 的网络钓鱼电子邮件。此网络钓鱼电子邮件已被 Fortinet 的 FortiMail 标记为垃圾邮件。

QakBot银行木马变种使用html附件进行传播
图 1.1 –捕获的网络钓鱼电子邮件截图

HTML 文件包含一段 javascript 代码,一旦收件人在 Web 浏览器中打开,该代码就会自动执行。它解码由局部变量保存的 base64 字符串。然后它调用内置函数 navigator.msSaveOrOpenBlob(),将 base64 解码数据(ZIP 存档)保存到名为“ScannedDocs_1586212494.zip”的本地文件中。图 1.2 显示了使用 base64 字符串和 ZIP 文件名定义的变量。

QakBot银行木马变种使用html附件进行传播
图 1.2 – HTML 文件中的 javascript 代码段

图 1.3 是 Microsoft Edge 浏览器打开 HTML 文件的屏幕截图。如您所见,ZIP 存档已自动保存到受害者的设备上。

QakBot银行木马变种使用html附件进行传播
图 1.3 – 在 Microsoft Edge 浏览器中打开的 HTML 文件

下载并执行 QakBot

接下来,我们将查看下载的 ZIP 存档中的内容。这是一个 Windows 快捷方式文件——“ScannedDocs_1586212494.lnk”。您可能知道,Windows 快捷方式文件可以通过将命令放入 Target 字段来执行命令。图 2.1 显示了此快捷方式文件及其属性的屏幕截图。 

QakBot银行木马变种使用html附件进行传播
图 2.1 – Windows 快捷方式文件和属性

该快捷方式伪装成 Microsoft Write 图标,以诱使受害者认为这是一个安全的文本文件,因此他们会打开它。至于其属性,目标字段中的一组命令将由“cmd.exe”执行。当受害者双击文件时,命令被执行。

根据图 2.1 中的命令,它主要运行“cURL”(客户端 URL)从 URL 194[.]36[.]191[.]227/%random%.dat 下载文件到本地文件“%ProgramData %\Flop\Tres.dod”。cURL 是一种流行的 Linux 工具,但自 Windows 10 以来,它也作为默认程序成为 Windows 的一部分。

下载的文件(“Tres.dod”)是一个 DLL 文件。根据我的分析,它是一种 QakBot 的加载程序。在这种情况下,“regsvr32”负责使用命令“regsvr32 %ProgramData%\Flop\Tres.dod”执行它。

QakBot银行木马变种使用html附件进行传播
图 2.2 – QakBot 加载器模块资源部分的视图

在“regsvr32.exe”中运行的 QakBot 加载器模块 (Tres.dod) 从其资源部分加载一个名为“AAA”的二进制块,如图 2.2 所示。它继续对二进制块进行解密,得到一个无文件的PE文件和一段动态代码,这是一种自我部署的功能。然后由加载器模块调用,以在“regsvr32”进程中部署作为 QakBot 核心模块的无文件 PE 文件。QakBot核心模块部署完成后,自部署功能的最后一个任务就是调用它的入口点。图 2.3 解释了自部署函数如何调用 QakBot 核心模块的入口点。

QakBot银行木马变种使用html附件进行传播
图 2.3 – 即将调用 QakBot 入口点的自部署函数

进程空心化

恶意软件通常执行进程空心化以将恶意代码或模块注入另一个进程。它这样做是为了逃避被发现。

根据受影响机器的平台(32位或64位)和安装的杀毒软件,QakBot会从进程列表中选择一个系统进程作为执行进程空心的目标进程。此列表包括此变体的 OneDriveSetup.exe、explorer.exe、mobsync.exe、msra.exe 和 iexplore.exe。

在我的测试环境中,它选择了“OneDriveSetup.exe”。QakBot 然后调用 API CreateProcessW() 以使用创建标志 CREATE_SUSPENDED 启动一个新进程,因此它在启动时被挂起。然后它可以修改其内存数据,例如通过调用 API WriteProcessMemory() 将 QakBot 核心模块携带到新创建的“OneDriveSetup.exe”进程中。接下来,它在新进程的入口点修改代码以跳转到注入的核心模块。它最终调用 API ResumeThread() 来恢复新进程,然后 QakBot 在目标进程中执行。

图 3.1 显示了一个进程树,其中包含从下载 QakBot Loader(“curl.exe”)到“OneDriveSetup.exe”的所有相关进程。

QakBot银行木马变种使用html附件进行传播
图 3.1 – 相关流程的流程树概览

反分析技术

在分析 QakBot 的核心模块之前,我们先来了解一下 QakBot 用来防止自己被轻易分析的一些反分析技术。

常量字符串被加密

常量字符串是研究人员分析代码的有用信息。QakBot 保存加密的常量字符串,这些字符串在使用前仅由特定函数解密。图 4.1 是通过字符串索引 0xA8 处 609DD8 处的函数获取常量字符串“Mozilla/5.0 (Windows NT 6.1; rv:77.0) Gecko/20100101 Firefox/77.0”的示例。

QakBot银行木马变种使用html附件进行传播
图 4.1 – 一个由函数解密的常量字符串示例

动态获取关键 Windows API

大多数 Windows API 都是在 QakBot 运行时获得的。在执行指令之前很难猜测调用了哪个 API。下面是调用API CreateThread() 的实例,其中dword_61F818 是动态加载的函数表,其偏移量+74H 是CreateThread() 的函数。

xor ecx, ecx
lea eax, [ebp+var_4]
push eax
mov eax, dword_61F818 ; Function table of Kernel32.dll
push ecx
push ecx
push offset thread_fun
push ecx
push ecx
mov [ebp+var_4], ecx
call dword ptr [eax+74h] ; =>; CreateThread
mov dword_61F83C, eax
test eax, eax

检测分析工具

QakBot 有一个线程函数,每秒检查一次以查看是否有任何分析工具在受影响的机器上运行。为此,它预先定义了一些分析工具的进程名称列表,当然,它是一个解密后的常量字符串。一旦它们中的任何一个与正在运行的进程之一匹配,它将影响 QakBot 的工作流程(例如,不连接到 C2 服务器)。

这是预定义的进程名称列表:

frida-winjector-helper-32.exe, frida-winjector-helper-64.exe, tcpdump.exe,windump.exe, ethereal.exe, wireshark.exe, ettercap.exe;rtsniff.exe, packetcapture.exe, capturenet.exe, qak_proxy;dumpcap.exe, CFF Explorer.exe, not_rundll32.exe, ProcessHacker.exe, tcpview.exe, filemon.exe, procmon.exe;idaq64.exe, PETools.exe, ImportREC.exe, LordPE.exe, SysInspector.exe, proc_analyzer.exe, sysAnalyzer.exe, sniff_hit.exe, joeboxcontrol.exe, joeboxserver.exe, ResourceHacker.exe, x64dbg.exe, Fiddler.exe, sniff_hit.exe, sysAnalyzer.exe

根据以上流程列表,我确定分析工具包括但不限于:

Joe Sandbox, TcpDump, WinPcap, Wireshark, Ettercap, PacketCapture, CaptureNet, CFF Explorer, ProcessHacker, TcpView, FileMon, ProcMon, IDA pro, PETools, ImportREC, LordPE, SysInspector, SysAnalyzer, ResourceHacker, x64dbg, and Fiddler.

QakBot核心模块连接C2服务器

只要在目标进程(如“OneDriveSetup.exe”)中恢复QakBot核心模块,它就会开始使用除regsvr32.exe中的入口函数之外的另一个入口函数。

按照 QakBot 的传统,它使用许多线程来执行其任务。一种是收集有关受影响设备的信息并将其发送到其 C2 服务器。

核心模块在其资源部分有两个二进制数据块,分别命名为“102”和“103”。资源“103”的数据是RC4加密配置。解密后就是字符串“10=obama189\r\n3=1655107308\r\n”。“obama189”是该变种的 QakBot ID,“1655107308”是 Unix Epoch 时间。

“102”资源数据是一个RC4加密的C2服务器列表。“\System32\WindowsPowerShel1\v1.0\powershel1.exe”是一个常量字符串,它生成一个 Rc4 密钥缓冲区来解密 C2 服务器数据。

QakBot银行木马变种使用html附件进行传播
图 5.1 – 部分解密的“102”资源截图

图 5.1 的上半部分显示它将调用 API FindResourceW,资源名称为“102”,而下半部分是解密后的 C2 服务器的二进制 IP 和端口的部分列表。此变体中有 123 个 IP 和端口对。

QakBot 逐一遍历所有列出的 C2 服务器,直到建立连接。然后它将受害者注册数据包(第一个数据包)发送到该 C2 服务器以注册受害者。注册表数据包的纯文本是:

 “{\”2\”:\”hrzpxm292261\”,\”8\”:9,\”1\”:18}”

键是字符串数字,如“2”、“8”和“1”。“2”的值是使用硬件信息生成的“hrzpxm292261”(受害者的ID),键“8”的值指定数据包类型(此数据包为9),“1”的值是18 ,即 QakBot 版本。

数据包经过 RC4 加密,然后使用 base64 算法编码为字符串。QakBot 和 C2 服务器之间的所有数据包都密封在 JSON 结构中。

然后,它使用 HTTP Post 方法将数据发送到其 C2 服务器,其中 URL “/t4” 和 base64 编码的注册表数据作为正文并通过 SSL 协议传输。图 5.2 显示了一个分析工具的屏幕截图,左侧是发送的数据包,右侧是响应数据。

QakBot银行木马变种使用html附件进行传播
图 5.2 – 分析工具中的注册表包视图

将响应数据恢复为纯文本采用反向路径,即base64解码和RC4解密。

“{\”8\”:5,\”16\”:3257495567,\”39\”:\”vLLO\”,\”38\”:1}” 是这种情况下的纯文本,它将设置或者更新一些局部变量的值。

向 C2 服务器发送敏感数据

QakBot 从受害者的设备收集敏感数据并将其发送到其 C2 服务器。类似地,黑客可以将相应的子模块传输到 QakBot 客户端以在受害者的设备上执行。

QakBot 利用 Windows API、Windows 命令和 WMI 查询语言 (WQL) 来获取信息。以下是详细信息。

Windows API

API函数描述
GetVersionEx()Windows 版本信息,包括内部版本号,例如我运行 Windows 10 的测试系统的“10.0.1.19043.0.0.0100”。
GetComputerNameW()计算机名称,例如“DESKTOP-P952NC4”。
GetSystemMetrics()获取屏幕尺寸(宽度和高度)。
NetGetJoinInformation()检索 AD 域,例如“WORKGROUP”。
LookupAccountSidW()用户名。
GetSystemInfo()处理器架构。
CreateToolhelp32Snapshot(),
Process32FirstW(), Process32NextW()
获取运行进程信息。
GetModuleFileNameW()QakBot 的完整路径和目标进程的完整路径。
CreatProcessW()执行 Windows 命令。

WMI 对象查询

请求参数描述
SELECT * FROM Win32_OperatingSystem操作系统信息。
SELECT * FROM AntiVirusProduct获取已安装的防病毒软件,例如 Microsoft Defender 或 FortiClient。
SELECT * FROM Win32_ProcessorCPU 处理器信息。
SELECT * FROM Win32_ComputerSystem系统环境信息,如模型、域、制造商等。
SELECT * FROM Win32_Bios设备的 BIOS 信息。
SELECT * FROM Win32_DiskDrive硬盘信息,例如分区、大小和型号。
SELECT * FROM Win32_PhysicalMemory物理 RAM 棒的详细信息,例如容量、时钟速度和通道。
SELECT Caption,Description,Vendor,Version,
InstallDate,InstallSource,PackageName FROM Win32_Product
安装的软件信息。
SELECT Caption,Description,DeviceID,
Manufacturer,Name,PNPDeviceID,Service,
Status
FROM Win32_PnPEntity
即插即用设备的属性,如键盘、鼠标、CD-ROM、网络适配器等。

Windows 命令

命令描述
“ipconfig /all”所有 TCP/IP 网络配置值。
“nslookup -querytype=ALL -timeout=12 _ldap._tcp.dc._msdcs.%s”从受害者设备的主 DNS 服务器查询域的 SRV 记录。
“nltest /domain_trusts /all_trusts”枚举域信任。
“net share”共享资源和名称。
“route print”活动路线表。
“netstat -nao”受害者设备中的活动连接。
“net localgroup”本地团体信息。
“qwinsta”受害者设备上的活动会话。
“arp -a”     ARP表项信息。
“net view /all”显示远程计算机上的所有共享。

一旦 QakBot 收集了上表中显示的所有信息,它会将信息密封在一个数据包类型为“8”:4 的数据包中。图 6.1 显示了这个数据包的 JSON 数据,即将调用 RC4 加密函数。

QakBot银行木马变种使用html附件进行传播
图 6.1 – 包含敏感信息的数据包“8”:4 的纯文本

虽然这个 QakBot 成功地与它的 C2 服务器建立了连接,但我没有收到任何子模块。我仍在监视通信,如果我得到一些有趣的信息,我会更新此分析。

结论

根据这个分析,我证明了附加的 HTML 文件并不比任何其他有风险的文件(如 MS Word、MS Excel、PDF 等)更安全。接收带有附件的电子邮件时,您必须格外小心。

然后,我解释了 HTML 文件如何通过一段自动执行的 JavaScript 代码删除 ZIP 存档。后来我重点介绍了一个伪装的Windows快捷方式文件是如何下载QakBot的loader模块的。

您还了解了加载器模块如何在选定的目标进程中解密和部署 QakBot 的核心模块(这次是“OneDriveSetup.exe”)。

最后,我们遍历 QakBot 启动线程,使用从 C2 服务器列表中选择的 IP 地址和端口对连接到其 C2 服务器,该列表已从其资源“102”中解密,以及它从受害者的数据库中检索到的敏感数据。设备,然后提交到其 C2 服务器..

侵害指标(IOCs)

网址:

194[.]36[.]191[.]227/%random%.dat

完整的 C2 服务器列表:

103.207.85.8:995
85.101.222.222:443
202.134.152.129:2222
62.204.41.189:80
39.44.146.124:995
84.241.8.80:32103
93.48.80.252:995
143.0.219.206:995
86.195.158.74:2222
72.27.33.119:443
37.186.54.28:995
79.80.80.92:2222
62.204.41.214:443
40.134.246.113:995
176.67.56.242:443
24.43.99.118:443
62.204.41.44:443
63.143.92.15:995
39.52.38.138:995
82.41.63.12:443
189.253.206.147:443
24.139.72.7:443
62.204.41.42:443
189.146.87.45:443
109.12.111.164:443
148.64.96.20:443
82.152.39.188:443
71.24.118.86:443
47.156.131.168:443
69.14.172.132:443
148.0.55.16:443
179.158.105.122:443
86.97.247.37:1194
187.149.236.245:443
201.1.202.91:32101
103.116.178.90:995
197.94.94.151:443
77.200.155.4:443
89.101.97.148:443
191.112.21.50:443
189.223.102.36:443
106.51.48.249:50001
76.70.9.24:2222
173.174.216.181:443
32.221.224.85:995
62.204.41.239:2222
62.204.41.29:990
191.34.120.200:443
193.136.1.235:443
173.21.10.48:2222
208.101.82.29:443
41.84.249.203:995
121.7.223.226:2222
80.11.74.11:2222
125.24.187.182:443
62.204.41.110:61201
37.210.156.21:2222
180.129.108.125:995
70.51.135.31:2222
122.118.131.92:995
41.130.140.137:993
190.252.242.151:443
62.204.41.84:443
172.115.177.224:2222
197.87.182.226:443
200.100.126.43:32101
76.25.142.120:443
45.46.53.245:2222
41.86.42.135:995
62.204.41.214:995
217.165.84.66:993
189.37.80.236:443
177.209.202.64:2222
62.204.41.74:995
120.150.218.161:995
72.252.157.57:993
47.23.89.254:993
67.209.195.33:443
201.172.23.12:2222
108.60.213.90:443
91.177.173.144:995
186.90.153.121:2222
222.169.71.157:2222
187.189.168.182:22
1.161.123.45:995
62.204.41.135:2222
86.98.149.37:2222
58.105.167.175:50000
86.97.247.60:2222
62.204.41.150:443
109.178.178.236:995
89.86.33.195:443
120.61.0.123:443
24.178.196.10:2222
182.191.92.214:995
67.165.206.146:993
217.165.176.19:2222
114.137.226.186:443
175.145.235.67:443
39.41.116.203:995
90.120.209.121:2078
92.132.172.17:2222
187.207.131.228:61202
83.110.92.124:443
102.182.232.154:995
5.32.41.185:443
38.70.253.69:2222
96.37.113.67:993
41.228.22.14:443
37.34.253.132:443
86.97.9.125:443
47.157.227.84:443
117.248.109.253:21
62.204.41.46:2078
74.14.5.126:2222
39.49.82.155:995
109.228.220.147:443
37.208.135.243:6883
39.44.235.39:995
104.34.212.248:32103
174.69.215.53:443
41.38.167.252:995
94.36.193.121:2222
49.128.172.7:2222
39.44.151.234:995
197.89.17.87:443
217.165.157.202:995
72.252.157.93:993
94.36.193.176:2222
173.21.10.71:2222
1.57.114.95:2222
39.49.123.123:995
41.130.124.40:993
89.101.97.139:443
67.69.166.79:2222
191.34.121.84:443
103.116.178.85:995
24.139.72.117:443
37.186.58.99:995
172.115.177.204:2222
105.247.171.130:995
111.125.245.116:995
24.178.196.158:2222
63.143.92.99:995
86.195.158.178:2222
70.51.133.230:2222
217.165.146.249:993
187.208.115.219:443
76.25.142.196:443
94.59.15.180:2222
193.253.44.249:2222
174.69.215.101:443
68.204.15.28:443
201.172.20.167:2222
39.52.67.40:995
191.112.26.57:443
186.90.153.162:2222
83.110.94.105:443
78.180.100.59:443
113.53.152.11:443
67.165.206.193:993
86.97.209.157:2222
69.14.172.24:443
31.215.185.136:1194
70.46.220.114:443
90.120.209.197:2078
2.34.12.8:443
210.246.4.69:995
80.11.74.81:2222
89.86.33.217:443
101.50.67.7:995
120.150.218.241:995
84.241.8.23:32103
120.61.2.5:443
190.252.242.69:443
5.32.41.45:443
72.252.157.93:990
32.221.224.140:995
81.132.186.218:2078
45.46.53.140:2222
47.23.89.60:993
193.136.1.58:443
24.122.142.181:443
81.250.191.49:2222
93.48.80.198:995
87.109.229.215:995
185.56.243.146:443
67.209.195.198:443
38.70.253.226:2222
217.128.122.65:2222
187.250.202.2:443
148.64.96.100:443
182.191.92.203:995
177.45.18.42:32101
86.200.151.188:2222
188.211.181.237:61202
102.65.17.55:443
196.203.37.215:80
39.52.221.9:995
1.161.72.70:995
148.0.43.48:443
71.13.93.154:2222
31.215.67.68:2222
148.252.133.168:443
82.152.39.39:443
37.34.253.233:443
47.156.129.52:443
103.246.242.202:443
98.50.153.207:443
1.161.72.70:443
104.34.212.7:32103
173.174.216.62:443
109.228.220.196:443
40.134.246.185:995
91.177.173.10:995
184.97.29.26:443
39.53.124.57:995
108.60.213.141:443
24.55.67.176:443
121.7.223.45:2222
129.208.0.52:995
82.41.63.217:443
175.145.235.37:443
208.107.221.224:443
109.12.111.14:443
39.57.12.26:995
100.38.242.113:995
74.14.5.179:2222
189.253.171.206:443
41.228.22.180:443
179.158.105.44:443
117.248.109.38:21
41.84.249.56:995
39.41.82.68:995
41.84.224.109:443
197.94.94.206:443
47.157.227.70:443
201.176.6.24:995
31.215.98.8:443
187.251.132.144:22
106.51.48.188:50001
189.78.107.163:32101
191.250.120.152:443

参与活动的 SHA-256 示例:

[附加的 HTML 文件]

FE1043A63E6F0A6FAA762771FF0C82F253E979E6E3F4ADD1C26A7BD0C4B2E14C

【QakBot的加载器模块】

9C3D3CD9B0FCB39117692600A7296B68DDDF2995C6D302BC9D9C8B786780BA19

  [ScannedDocs_1586212494.lnk]

F5B6619E92D7C4698733D9514DF62AFACA99883DFAC8B9EE32A07D087F2800BF

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注