威胁扫描丨攻击者利用微软 OneNote 文件发起网络钓鱼活动并伺机传播恶意软件

通告信息

近期,FortiGuard Labs (Fortinet全球威胁研究与响应实验室)在追踪几起网络钓鱼活动中均发现,攻击者通过网络钓鱼电子邮件向用户发送恶意 Microsoft OneNote 附件,肆意传播 AsyncRAT 恶意软件。

作为网络安全领航企业,Fortinet对这些网络钓鱼活动进行了深入剖析。从攻击者发送网络钓鱼电子邮件开始,到最终部署 AsyncRAT 并完全控制受害者设备的整个攻击过程进行了全面追踪。

本文将助您全面了解此次攻击过程,如攻击者利用何种形式的网络钓鱼电子邮件发起攻击活动,Microsoft OneNote 恶意附件在攻击活动中扮演了何种角色,攻击者如何利用该附件在受害者设备下载并执行恶意文件,攻击者逃避检测和分析所采用的攻击技术类型,恶意软件 AsyncRAT 如何与其 C2 服务器通信,以及该恶意软件支持哪些控制命令使受害者设备完全受控。

以下流程图简要描述了网络钓鱼活动交付和执行 AsyncRAT 的整个过程:

AsyncRAT 交付和执行流程图

网络钓鱼电子邮件

图 1.1 – 网络钓鱼电子邮件内容

图 1.1 为 Outlook 收到的网络钓鱼电子邮件截图。如图所示,FortiMail 服务已将电子邮件主题标记为垃圾邮件,提醒收件人警惕潜在安全风险。

攻击者将网络钓鱼电子邮件伪装成知名快递公司发出的紧急发货通知,引诱收件人打开文件名为“SHIPPING_DOC.one”的 Microsoft OneNote 附件,以确认送货地址是否正确。

Microsoft OneNote 附件

Microsoft OneNote 是微软 Office 套件中的一款数字笔记软件,用户可用其创建包含文本、图片、表格和绘图的笔记,并支持用户将可执行文件等附件插入OneNote(单击菜单“插入”->“文件附件”)。

图 2.1 – 使用 Microsoft OneNote 打开附件

图 2.1 左侧为使用 Microsoft OneNote 程序打开后添加至网络钓鱼电子邮件的 OneNote 文件附件。该附件包含一个“点击查看文档”图片按钮,引诱目标受害者点击查看文件内容。这个类似按钮的图片下方,实则隐藏了4个相同的 BAT 文件。当我们移开按钮图片后,便能清楚地看到这些文件,如图 2.1 右侧所示。

当受害者双击该类似按钮的图片时,即意味着攻击者开始执行图片下方藏匿的其中一个 BAT 文件(viewn.bat)。

相关批处理文件

批处理文件是一个“.bat”结尾的文本文件,也称为批处理脚本,包含由命令行解释器(如 cmd.exe)共同执行的一组命令。

viewn.bat 文件中的代码类似于以下内容:

一旦受害者双击 Microsoft OneNote 程序中伪装成“点击查看文档”按钮的图片时,OneNote 中嵌入的BAT文件即开始运行 Windows PowerShell 脚本命令,并从 Internet 下载另一个名为“ Io.bat”的BAT文件。该进程由“start Io.bat”命令启动。

下图 2.2 为编辑器中“Io.bat”文件内容截图。

图 2.2 – “Io.bat”文件内容

“Io.bat”文件的主要任务类似于上文提及的“viewn.bat”文件。该文件会运行一个 Windows PowerShell 脚本,并将名为“view.zip”的 ZIP 存档文件下载至受害者设备。继而该脚本从 ZIP 存档文件中解压缩 EXE 文件(view.exe),并使用“start view.exe” 命令执行该文件。

恶意软件通常采用复杂战术,以躲避安全研究人员的检测和分析。在本示例中,自动下载的 view.exe文件并非恶意软件有效负载,而是另一个批处理文件(“fresh.bat”)的Dropper(恶意软件投放程序)。

图 2.3 – “view.exe”从其RESOURCE部分投放的bat文件

图 2.2 为debugger(调试程序)中显示的“view.exe”页面截图。View.exe 调用 Windows 本地 API 从其RESOURCE部分中的“RCData”文件夹中加载名为“CABINET”的资源,该资源包含以 CAB 文件类型存储的压缩数据。View.exe 负责解压缩资源数据,并将其保存至文件 “%temp%\IXP004.TMP\fresh.bat”。继而调用 API CreateProcessA() 函数并使用“cmd /c fresh.bat”命令运行 fresh.bat 文件。

图 2.4 — fresh.bat 部分内容截图

如图 2.4 所示,Fresh.bat 经混淆处理。Fresh.bat 中的命令被拆分为多组变量,并在执行前在页面底部重新组合。组合后命令的目的是将 Windows PowerShell.exe 复制到当前文件夹,并将其重命名为“fresh.bat.exe”。继而使用此命令执行如下所示 PowerShell 代码。

PowerShell 代码经轻微混淆处理,如颠倒函数名称。然而,通过附加注释,我们能够轻松识别此类代码。

如图 2.4 所示,这段 PowerShell 代码从 fresh.bat(经转换的 PE 文件)中读取以“::”开头的字符串。请注意,以“::”开头的行是批处理文件(.BAT)中的注释。继而将 PE 文件通过动态解码、解密和解压缩至内存中,并调用 EntryPoint() 函数执行该文件。虽然该文件采用无文件攻击技术,但根据其编译信息,其初始被命名为 tmp72AF.tmp。

图 2.5 – 进程树页面截图

图 2.5 为进程树页面截图,显示从打开 OneNote 文件到运行“fresh.bat”和“fresh.bat.exe”,再到执行 PowerShell 代码的一整套工作流,同时揭示了相关进程间的关系。

.NET PE 文件无文件攻击

无文件.NET PE 文件(原名“tmp72AF.tmp”)是一款恶意软件加载程序,攻击者可从该文件的 .Net 资源部分解密两个可执行模块并启动进程。

1. 反分析

在 Main() 函数中,恶意软件调用 API CheckRemoteDebuggerPresent() 和 IsDebuggerPresent() 函数,检查其是否在调试器中运行。继而该软件会在 Debugger.IsAttach 中检查该评估值。如果发现其中任何一个值为“true”,恶意程序将立即停止运行。

Windows 系统涵盖一个名为“amsi.dll”(反恶意软件扫描接口)的系统模块,该模块具有一个名为AmsiScanBuffer() 的导出功能,可扫描数据缓冲区以查找恶意软件或恶意内容。Tmp72AF.tmp 可通过覆写 API 函数,使其始终返回 0x80070057 代码,该代码表示“参数不正确”。该覆写技术可阻止 API AmsiScanBuffer() 检测恶意软件。为此,Tmp72AF.tmp 需调用 API VirtualProtect(),将 AmsiScanBuffer() 的内存设置为可写状态。图 3.1 为原始 API AmsiScanBuffer() 和被覆写后的API函数比较。

图 3.1 – 原始 AmsiScanBuffer() 和覆写后的 AmsiScanBuffer() 函数比较

2. 解密 .Net 资源部分中的两个可执行模块

如前所述,.Net 资源部分中有两个模块会被解密。图 3.2 为两个模块中的 .Net 资源部分,即“payload.exe”和“runpe.dll”。

图 3.2 – .Net 资源部分中的两个模块

这两个资源模块通过 GZip 压缩命令进行加密和压缩,并被解密至正在运行进程的内存中(fresh.bat.exe和经复制的PowerShell.exe)。顾名思义,.Net 程序使用“runpe.dll”启动“payload.exe”。

下图显示当 tmp72AF.tmp 调用 runpe.dll 的 runpe.ExecutePE() 方法时,其中 string3 为 “runpe.RunPE”,string4 为 “ExecutePE”,array3 为解密后的 payload.exe 数据。

图 3.3 – 恶意程序如何使用 runpe.dll 运行payload.exe

ExecutePE() 通过调用其入口点函数,创建新线程并启动 payload.exe。

Process hollowing 进程注入技术

Payload.exe 是一个 64 位控制台程序,可执行 process hollowing 进程注入攻击,将 AsyncRAT 木马客户端植入目标进程 notepad.exe。

payload.exe 所采用的战术是,每次需调用未记录的 API 时利用“syscall”指令。此外,所有常量字符串均经过加密处理,且仅在引用前进行解密。

这种战术助其成功躲避防病毒软件检测,给安全分析师造成困扰。以下是 payload.exe 使用的syscall ID 和相应 API 列表。

下列“syscall”代码片段可用于调用 API NtOpenProcess() 函数,其中 eax 应为 0x26。

为了在受害者设备中维持目标进程持久性,payload.exe 伪装目标进程,使其看似由受害者启动,这意味着其父进程实际为 explorer.exe。为达成这一目的,payload.exe 使用SystemProcessInformation 作为参数 SYSTEM_INFORMATION_CLASS 的值调用 API NtQuerySystemInformation(),从当前进程列表中检索 explorer.exe 的进程信息。

然后,继续调用 API NtOpenProcess(),检索 explorer.exe 的进程句柄,并使用此句柄通过 API UpdateProcThreadAttribute() 将 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS 属性设置为 explorer.exe,从而允许子进程继承该属性。与此同时,该 API 函数使用从 explorer.exe 继承的信息填充属性列表。

图 4.1 – 利用从 explorer.exe 继承的信息创建 notepad.exe 进程

如图 4.1 所示,恶意软件即使用 notepad.exe 的完整路径调用 API CreateProcessW(),创建flag为 CREATE_NO_WINDOW |EXTENDED_STARTUPINFO_PRESENT |CREATE_SUSPENDED 以及含有explorer.exe 继承信息的 lpStartupInfo。

创建后,notepad.exe 进程成为 explorer.exe 的子进程,且看似由受害者启动。

如图 4.2 所示,使用 Process Explorer 软件,我们可看到,恶意程序创建的 notepad.exe 进程目前是Explorer.exe 的子进程,其状态为“已挂起”,而非“正在运行”。

图 4.2 – 恶意程序创建的 notepad.exe 进程

随后,notepad.exe 利用“syscall”调用 API函数,如 NtAllocateVirtualMemory() 和 NtWriteVirtualMemory(),以分配目标进程(notepad.exe)中的内存,并将一些数据传输至刚刚分配的内存中,其中包含AsyncRAT 加密木马客户端和一段负责AsyncRAT 木马客户端解密并将其部署至目标进程 notepad.exe 的 ASM 代码。

然后,继续创建一个 APC 对象,并通过 API NtQueueApcThread() 和指向已复制 ASM 代码的线程函数参数,将其添加至 notepad.exe 线程的 APC 队列。

最后,调用 API NtResumeThread(),以运行先前挂起的 notepad.exe 进程。

AsyncRAT

AsyncRAT 是一种远程访问木马(RAT),旨在通过加密的连接方式远程控制受害者计算机系统,并窃取敏感数据、监控用户活动以及在受感染设备上远程执行任意命令。

AsyncRAT 采用 C# 语言编写,在 .Net Framework 环境中运行。由于该木马在此次网络钓鱼活动中采用无文件攻击技术,因此我需要将其从 notepad.exe 进程中转储,以进行深入分析。

图 5.1 – 成功解密的设置信息

如图 5.1 所示,一旦 AsyncRAT 木马被启动,即解密其 Main() 函数中的一组设置值。已成功捕获的 AsyncRAT 设置值显示:

加密密钥用于解密以下设置值:

  • C2 服务器主机和端口为 95.216.102.32:6606、7707 和 8808

  • AsyncRAT 版本为“0.5.7B”

  • “If maintain persistence”设置为“false”

  • 互斥对象名称为“AsyncMutex_6SI8OkPnk”

  • “If support Pastbin”设置为“null”

  • “If perform anti-analysis detection”设置为“false”

  • “If make the process critical”设置为“false”

  • 组名称设置为“Default”

  • 使用受害者的硬件信息生成 HWID

  • 服务器签名和证书用于通过 SSL 协议与 C2 服务器通信

设置完成后,AsyncRAT 即可随时将从受害者设备收集的信息发送至 C2 服务器,并等待 C2 服务器发送控制命令,从而远程控制受害者设备。

为实现安全通信,AsyncRAT 使用 SSL 协议传递数据包。

以下为数据经 SSL 协议传递前,AsyncRAT 发送至 C2 服务器的第一个数据包页面截图。

图 5.2 – 包含 AsyncRAT 和受害者设备基本信息的数据包

数据包数据以唯一格式保存。AsyncRAT 及其 C2 服务器之间的所有数据包,均采用相同格式存储,包含值类型、值名称和值。下表为提取的数据包信息,用以解释数据包格式。

“Packet”的值为控制命令,其中“ClientInfo”命令用于将受害者设备和 AsyncRAT 客户端的注册数据包等基本信息发送至 C2 服务器。

此外,AsyncRAT 还支持其他控制命令,帮助攻击者远程控制受害者设备。

AsyncRAT 支持的多种控制命令:

"blankscreen+", "blankscreen-", "botKiller", "BotKiller", "chat", "chat-", "chatExit", "chatWriteInput", "ClientInfo", "close", "disableDefedner", "dos", "dosAdd", "Error", "executeDotNetCode", "fileManager", "GetXmr", "keyLogger", "limeUSB", "Logs", "pcOptions", "Ping", "Ping!)", "plugin", "pong", "processManager", "Received", "remoteDesktop", "reportWindow", "reportWindow-", "restart", "savePlugin", "sendFile", "sendMemory", "sendMessage", "sendPlugin", "shell", "shellWriteInput", "socketDownload", "thumbnails", "thumbnailsStop", "torrent", "uac", "uninstall", "visitURL", "webcam", "xmr" 等。

AsyncRAT 支持的多种攻击功能:

后门访问:攻击者可在受感染系统中远程执行任意活动。

运行可执行文件:攻击者可传输任意可执行文件并在受害者设备中运行。

凭据窃取:AsyncRAT 可从 Chrome、Firefox、Edge 和 Internet Explorer 等不同应用程序中获取各种用户凭据。

远程桌面控制:攻击者可实现对受感染系统的远程桌面控制。

文件管理器:AsyncRAT 允许攻击者完全访问受感染计算机上的文件,并且可执行移动、删除、复制或修改文件等操作。

文件搜索器:攻击者可随意搜索受感染系统上的文件。下图显示了该恶意软件如何在 AsyncRAT 服务器上启动文件搜索器功能。

图 5.2 – AsyncRAT 服务器上的文件搜索器功能

进程管理器:攻击者可检查并终止受害者设备上正在运行的进程。

键盘记录:该恶意软件具有键盘记录器功能,可实时跟踪受害者设备的所有键盘输入操作,全盘监控受害者离线和在线活动。

DDoS攻击:AsyncRAT 可从其控制的多个系统针对特定网站发起广泛的 DDoS 攻击。

录音:恶意软件可取消受感染计算机的麦克风静音状态并录制音频。

网络摄像头控制:AsyncRAT 可操控受害者设备的网络摄像头并捕获图像和视频。

总结

本文详细阐述了该网络钓鱼活动如何从发送垃圾邮件开始,到如何恶意利用 Microsoft OneNote 文件,以及利用哪些 BAT 文件下载更多恶意文件(如Io.bat,view.zip)的整个入侵过程。

我们还探索了攻击者用以躲避安全研究人员检测和分析的反分析技术,详细说明了攻击者如何利用复杂策略保护其代码执行,例如从 PE 资源部分加载可执行文件,使用无文件攻击技术始终确保关键模块操作不留任何痕迹,以及如何利用从 explorer.exe 继承的信息创建目标进程 notepad.exe。

最后,本文还详细说明了数据包格式,AsyncRAT 可从受害者设备中收集哪些基本信息,以及AsyncRAT 支持哪些控制命令以完全控制受害者设备。

Fortinet 为您保驾护航

凭借 FortiGuard 反垃圾邮件、Web 过滤和防病毒服务提供的以下防护优势,Fortinet 用户可免受此类攻击活动侵扰:

恶意软件下载 URL 和 C2 服务器时,FortiGuard Web 过滤服务可将其标记为“恶意网站”。

FortiMail 可精准识别网络钓鱼电子邮件,并标记为垃圾邮件。

FortiGuard 防病毒服务通过“MSOffice/Agent.OXZ!tr “、“BAT/Agent.OXZ!tr” 以及 “MSOffice/Agent.PLI!tr” 等防病毒签名,检测 OneNote 文件附件以及后续下载的 lo.bat 和 view.zip 文档。

FortiGate、FortiMail、FortiClient 和 FortiEDR 均支持 FortiGuard 防病毒服务。FortiGuard 防病毒引擎是上述解决方案的重要组件。因此,部署这些产品以及其他最新防护功能的用户均将受到全面保护。

在此,我们还建议读者积极参与有关互联网威胁防护的 Fortinet NSE 免费培训:NSE 1 —— 信息安全意识培训,帮助最终用户学习如何识别和保护自身免受网络钓鱼攻击。

如果您认为您所在的企业组织正遭受此类威胁或任何其他网络安全威胁,请随时联系我们的 FortiGuard 全球事件响应团队。

IOCs:

URL:

https://transfer.sh/get/IKRQSd/view.zip

https://transfer.sh/get/sxSJuL/lo.bat

C2 服务器列表:

95.216.102.32:8808

相关 SHA-256 样本:

[SHIPPING_DOC.one]

305D7962894C83EBFCC863FE129180F20E6144F1F59D70971249D14E6D178FA4

[lo.bat]

DE5331B71DC535F75DADE1FBD042120FE9732FA851700A54D5C423B45145C929

[view.zip]

66FBD626EAC4B285F093E5FBFF484DAA95D270E981EDA051836B5EE47EA7A01B

猜你喜欢

转载自blog.csdn.net/Fortinet_CHINA/article/details/129751840
今日推荐