前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >针对哈萨克斯坦的基于多阶段 PowerShell 的攻击

针对哈萨克斯坦的基于多阶段 PowerShell 的攻击

作者头像
黑白天安全
发布2021-11-25 09:52:52
9590
发布2021-11-25 09:52:52
举报
文章被收录于专栏:黑白天安全团队

时间线

11 月 10 日,我们发现了一次多阶段 PowerShell 攻击,该攻击使用冒充哈萨克斯坦卫生部的文件诱饵,目标是哈萨克斯坦。

11 月 8 日,一个用户名为 DangerSklif(可能是指莫斯科的急诊医院)的攻击者创建了一个 GitHub 帐户(目前账号不存在)并上传了攻击的第一部分。

概述

攻击者在伪装成来自“哈萨克斯坦共和国卫生部”邮件,邮件中含有名为“Уведомление.rar”(“Notice.rar”)的 RAR压缩包。文件中包含一个同名的 lnk 文件,和伪装成来自“哈萨克斯坦共和国卫生部”的 PDF 文档。打开 lnk 文件后,将打开一个 PDF 文件以迷惑受害者,同时在后台执行此攻击的多个阶段。

pdf文件是对哈萨克斯坦国家卫生局发布的 Covid 19 政策的修订。

攻击过程

下图展示了这次攻击的全过程。

首先执行 lnk 文件,该文件调用 PowerShell 以通过运行多个Powershell脚本来操作注册表项和执行多种技术,例如权限提升和持久性。

这次攻击的所有阶段都托管在一个DangerSklif的用户于 11 月 8 日创建名为GoogleUpdate 的Github 存储库中 。该DangerSklif 用户注册于11月1日。可以看出这是一次针对性的攻击。

分析

嵌入的 lnk 文件被混淆,去混淆后我们可以看到它使用 cmd.exe 调用 PowerShell 从 Github 帐户(lib7.ps1)下载并执行攻击的第一阶段。

该 lib7.ps1 下载来自同一个帐户Github上,并将其存储在PDF文件目录中(其实可以下载在更隐蔽的目录中)。在下一步中,它会打开PDF 以迷惑目标,同时它会在后台执行其余过程,包括获取操作系统版本并根据操作系统版本下载下一阶段。

下载操作使用的是.net中的WebClient,比较常规的一种下载方法。获取操作系统版本的为win32_OperatingSystem.

如果操作系统版本为 7 或 8,则下载并执行 lib30.ps1 ,如果操作系统版本为 10,则下载并执行 lib207.ps1。检查操作系统的版本主要是为了进行提权。

这些提权技术在TA505在Srv Helper 的活动中使用过。

运行的 PowerShell 脚本包含一个 Base64 编码,解码后,在 CBC 模式下由三重 DES (3DES) 算法解密:

脚本的第一部分定义了一个名为 heller 的函数,作用是提升系统权限并允许绕过 UAC,在这里一共使用了2种技术:

技术 1 — 在任务计划程序中使用 SilentCleanup 任务:

SilentCleanup 可以由用户启动,在这种情况下,它会以提升的权限运行。可执行文件的路径是使用 %windir% 环境变量在其属性中指定的,例如,可以重置其值以触发 PowerShell 脚本的启动。在这种情况下,运行任务将导致 PowerShell 脚本以管理员权限启动,绕过 UAC。

该技术被黑客用于针对 Windows 8 和 Windows 10 系统。

该技术背后的代码与Metasploit 框架的模块实现相同。

技术 2 — 使用 sysprep.exe 系统实用程序和 DLL 劫持加载:

首先,创建一个帮助程序脚本以重新启动目录 C:\Windows\Temp 中的 PowerShell 脚本。然后创建一个包含辅助 DLL CRYPTBASE.dll(PowerShell 脚本包含 x86 和 x64 版本的库)的 CAB 存档。

然后使用 wusa.exe 系统实用程序将此存档解压缩到文件夹 C:\Windows\System32\Sysprep 中。

接下来,sysprep.exe 系统实用程序启动,加载先前解压的 DLL,然后 DLL 继续执行帮助脚本。然后PowerShell 脚本将以管理员权限重新启动,绕过 UAC。

代码语言:javascript
复制
http://www.labofapenetrationtester.com/2015/09/bypassing-uac-with-powershell.html
POC:
https://github.com/samratashok/nishang/blob/master/Escalation/Invoke-PsUACme.ps1

在这次的攻击中,攻击者使用使用任务计划程序中的 SilentCleanup任务绕过 Windows 10 中的 UAC:使用Lib207.ps1 绕过 Windows 10 中的 UAC。用于执行绕过的 PowerShell 命令使用 0x58 密钥进行 XOR 加密。

解密命令后,我们可以看到UAC绕过的过程,包括在Task Scheduler中创建一个SilentCleanup任务,调用PowerShell以更高的权限执行创建的vbs文件。

在 Windows 7 和 8 中使用 sysprep.exe 系统实用程序和 DLL 旁加载绕过 UAC:Lib30.ps1 用于执行此绕过。与 lib207.ps1 类似,此 PowerShell 脚本也是 XOR 加密的,但使用不同的密钥 (0x02)。

该过程首先在“ Windows/Temp ”目录中创建一个批处理文件 ( cmd.bat ) 。在下一步中,将创建一个包含 DLL(Windows 7 为 CRYPTBASE.dll 或 Windows 8 为 shcore.dll)的 cab 存档文件。然后使用 wusa.exe 将此 cab 文件解压缩到 C:\Windows\System32\Sysprep 目录中.

最后,sysprep.exe 系统实用程序启动哪一侧加载 Windows 7 的 CRYPTBASE.dll 或 Windows 8 的 shcore.dll。此 DLL 执行创建的cmd.bat文件,从而导致以高权限执行它,用来绕过UAC。

绕过 UAC 后,在所有操作系统版本中,都会下载并执行下一阶段的有效负载 ( lib106.ps1 )。

此阶段执行以下操作:

在ProgramFiles 目录中创建一个 vbs 文件 (cu.vbs), 并通过将此 vbs 文件添加到HKLM\Software\Microsoft\Windows\CurrentVersion\Run 注册表项来使这种多阶段攻击持久化 。

使用“Attrib.exe +h”命令隐藏 vbs 文件。

使用 PowerShell下载并执行最后阶段 ( updater.ps1 )。

最后一个阶段 ( updater.ps1 ) 是在 PowerShell 中执行 Cobalt Strike的payload。这个 PowerShell 脚本是 Cobalt Strike 的 PowerShell payload的免杀。

虽然经过免杀处理,但还是明显看出来是coabltstrike的powershell payload。采用 base64 编码并使用 35 密钥进行 XOR 加密。在解码和解密 ShellCode 后,它使用 VirtualAlloc 将其分配到内存中,最后通过调用 Invoke 函数执行它。

比较常规的一次攻击,分享一下

https://blog.malwarebytes.com/threat-intelligence/2021/11/a-multi-stage-powershell-based-attack-targets-kazakhstan/

https://www.ptsecurity.com/ww-en/analytics/pt-esc-threat-intelligence/operation-ta505-part2/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 时间线
  • 概述
  • 攻击过程
  • 分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档