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活动情况统计
在的子域中,托管有多个不同的数据库:
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:
将可执行文件添加到monApplicationData%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”注册表项中:
SOFTWAREMicrosoftWindowsCurrentVersionRun
结论
尽管使用Microsoft SQL查询来检索下一阶段有效载荷并不是一项新技术,但却很少被使用,而WhiteShadow恰好就是这样一种全新的下载器。
通过将下载器和Microsoft SQL Server数据库相结合,攻击者成功传播了包括远控木马、下载型病毒、键盘记录程序在内的多种恶意软件。
如此看来,想要避免电脑莫名其妙感染病毒,切记打开来路不明的电子邮件是不能少了,至少不应该随意在office文档中“启用宏”。