2019 年 8 月,网络安全公司 Proofpoint 的研究人员监测到一波恶意电子邮件分发活动,旨在传播包含内嵌恶意宏代码的 Microsoft Word 和 Microsoft Excel 附件。
进一步的分析显示,内嵌在恶意文档中的宏代码组成了一种全新的下载器(被 Proofpoint 研究人员命名为“WhiteShadow”),能够连接到由攻击者控制的 Microsoft SQL Server 数据库,进而以执行 SQL 查询的方式下载下一阶段有效载荷。
图 1.恶意电子邮件示例
感染链分析
WhiteShadow 的启动需要收件人执行两个动作:一是打开恶意文档,二是启用宏。
值得一提的是,如果你的电脑总是莫名其妙中毒,多半也是因为你没头没脑地执行了这两个动作。
WhiteShadow 启动后,便会连接到由攻击者控制的 Microsoft SQL Server 数据库,然后执行 SQL 查询来检索在数据库中存储为 ASCII 编码长字符串的下一阶段有效载荷。
一旦检索到,它就会将对字符串进行解码,并将数据分成数组(分隔符有“!”和“,”两种)写入一个 PKZIP 压缩文件,然后写入硬盘。
图 2. 用分隔符“!”将数据分成数组
图 3. 用分隔符“,”将数据分成数组
PKZIP 压缩文件包含一个可执行文件(即下一阶段有效载荷),一旦被提取,便会开始在系统上运行。
图 4.完整感染链
下载器分析
WhiteShadow 使用 SQLOLEDB 连接器连接到远程 Microsoft SQL Server 数据库,执行查询,并将结果以保存为 Zip 压缩文件。
SQLOLEDB 连接器默认包含在许多 Microsoft Office 安装程序中,一旦安装,Windows 子系统的各个部分以及 Microsoft Office 文档中的宏都可以使用它。
到目前为止,被提取的有效载荷包括 Crimson、Nanocore、njRAT、AgentTesla、Formbook 以及 AZORrult 等,具体如下:
图 5.2019 年 8 月至 9 月的 WhiteShadow 活动情况统计
在 mssql.somee.com 的子域中,托管有多个不同的数据库:
- antinio.mssql.somee[.]com
- bytesdata.mssql.somee[.]com
- fabancho.mssql.somee[.]com
在每个数据库中,WhiteShadow 访问的数据都是保存在一个名为“Data”的表中,该表仅含三列:
- Id_No:有效载荷的主键“int”标识符;
- Byte_data:有效载荷数据的 ASCII 编码;
- Net_ver:有效载荷的“customer”标识符或版本字符串
有效载荷分析
在分析有效载荷时,Proofpoint 公司的研究人员发现 Crimson 出现了多次更新。更新的命令如下:
cownar:
将可执行文件添加到 Environment.SpecialFolder.CommonApplicationData\\\\%install_folder%\\\\updates\\\\中,并通过 Process.Start(exe_path)执行。
cscreen:
获取受感染计算机的 JPEG 格式屏幕截图,并使用 C&C 响应命令“ capScreen”上传到 C&C 服务器。
getavs:
创建一个拼接的进程字符串,格式如下:
>%process-id%>%process_module_name%><
针对系统中正在运行的每一个进程,通过以下方式枚举:
Process[]processes = Process.GetProcesses();
putsrt:
该函数的输入是一个字符串,它会将该字符串与当前正在运行的进程可执行文件路径进行比较。如果路径不同,则会通过以下命令移动可执行文件:
File.WriteAllBytes(text, File.ReadAllBytes(executablePath));
然后,它会将修改后的路径安装到“CurrentVersion AutoRun”注册表项中:
SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run
结论
尽管使用 Microsoft SQL 查询来检索下一阶段有效载荷并不是一项新技术,但却很少被使用,而 WhiteShadow 恰好就是这样一种全新的下载器。
通过将下载器和 Microsoft SQL Server 数据库相结合,攻击者成功传播了包括远控木马、下载型病毒、键盘记录程序在内的多种恶意软件。
如此看来,想要避免电脑莫名其妙感染病毒,切记打开来路不明的电子邮件是不能少了,至少不应该随意在 office 文档中“启用宏”。