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文档中"启用宏"。