最后更新于2024年6月21日星期五19:01:00 GMT
以下分析师为本博客撰稿:托马斯·埃尔金斯, Daniel Thiede, Josh Lockwood, Tyler McGraw, 还有萨沙·科瓦列夫.
执行概要
Rapid7观察到最近的一个恶意广告活动,引诱用户下载谷歌Chrome和微软Teams等流行软件的恶意安装程序. 安装程序被用来放置一个后门,标识为 Oyster
, aka Broomstick
. 在执行后门程序之后, 我们观察到枚举命令指示手按键盘活动以及部署额外的有效负载.
在这篇博文中,我们将研究的交付方法 Oyster
backdoor, 提供对其组件的深入分析, 并提供一个Python脚本来帮助提取其混淆的配置.
Overview
Initial Access
在三个不同的事件中, Rapid7观察到用户从拼写错误的网站下载所谓的Microsoft Teams安装程序. 用户在使用谷歌和必应等搜索引擎下载微软团队软件后,被引导到这些网站. Rapid7观察到这些网站伪装成Microsoft Teams网站, 诱使用户相信他们下载的是正版软件, in reality, 他们在下载威胁行为者的恶意软件.
图1 -假的微软团队网站
在一种情况下,观察到用户导航到URL hxxps: / / micrsoft-teams-download [.]com/
,这导致下载二进制文件 MSTeamsSetup_c_l_.exe
. 二进制的初步分析 MSTeamsSetup_c_l_.exe
显示二进制是由颁发给“山西阳华家居有限公司”的认证码证书分配的。.
Figure 2 - MSTeamsSetup_c_l_.exe
文件信息
在VirusTotal搜索“山西阳华家居有限公司”签署的其他文件显示如下:
图3 - VirusTotal签名搜索结果
结果显示安装程序的其他版本, 每个都冒充为合法的软件安装程序. 我们观察到,第一个安装程序是在2024年5月中旬提交给VirusTotal的.
在5月29日发生的一起相关事件中, 2024, 我们观察到另一个二进制文件冒充Microsoft Teams安装文件, TMSSetup.exe
上海瑞康装饰有限公司., Ltd”. 截至2024年5月30日,该证书已被撤销.
VirusTotal二进制分析 MSTeamsSetup_c_l_.exe
表明它与一个名为Oyster的恶意软件家族有关 Broomstick by IBM.
什么是Oyster/Broomstick?
Oyster,又名Broomstick,又名CleanUpLoader,是IBM研究人员于2023年9月首次发现的恶意软件家族. 虽然人们对这种恶意软件知之甚少,但它是通过一个名为 牡蛎安装程序
,它伪装成浏览器安装程序. 安装人员负责删除后门组件, Oyster Main
. Oyster Main
负责收集被入侵主机的信息, 处理与硬编码的命令和控制(C2)地址的通信, 并提供远程代码执行的能力.
今年2月,Twitter上的研究人员发现了同样的后门组件,并开始命名 Oyster Main
backdoor, CleanUpLoader
.
在最近的事件中,Rapid7观察到 Oyster Main
交付时没有 牡蛎安装程序
.
技术分析
二进制的初步分析 MSTeamsSetup_c_l_.exe
揭示了两个二进制文件存储在资源部分中. 在执行期间,观察到一个函数使用 FindResourceA
来定位二进制文件,后面跟着 LoadResource
访问它们. 这些二进制文件随后被放入Temp文件夹中. 我们注意到这两个二进制文件的预期名称被忽略了 MSTeamsSetup_c_l_.exe
were CleanUp30.dll
and MSTeamsSetup_c_l_.exe
(合法的Microsoft Teams安装程序).
在删除二进制文件之后 CleanUp30.dll
进入临时目录,程序执行DLL,传递字符串 rundll32.exe %s,Test
到函数 CreateProcessA
, where %s
存储值 CleanUp30.dll
.
图4 -的执行 CleanUp30.dll
执行后 CleanUp30.dll
,程序开始启动合法的Microsoft Teams安装程序, MSTeamsSetup_c_l_.exe
,也位于Temp目录中. 使用这种策略是为了避免引起用户的怀疑.
CleanUp30.dll Analysis
在执行期间 CleanUp30.dll
, Rapid7观察到二进制从尝试创建硬编码互斥(mutex)开始。 ITrkfSaV-4c7KwdfnC-Ds165XU4C-lH6R9pk1
. 程序经常使用互斥锁创建来确定程序是否已经在运行另一个实例. 如果程序已经在运行,则程序将终止新实例.
在创建互斥锁之后,二进制文件通过调用函数来确定它的执行路径 GetModuleFilenameA
. 该值以字符串形式存储,并用作创建计划任务的参数。 ClearMngs
. 使用该函数创建定时任务 ShellExecuteExW
,将以下命令行作为命令行:
schtasks.exe /create /tn ClearMngs /tr "rundll32 '
计划任务的目的 ClearMngs
是执行二进制文件
具有的导出功能 Test
使用rundll32.每三小时执行一次。.
创建计划任务后, 然后二进制继续使用唯一的解码功能对其C2服务器进行解码. 解码函数首先接收一串编码字符,其长度以字节为单位. 解码函数然后继续读入每个字节, 从编码字符串的末尾开始.
图5 - DLL的解码循环
编码字符串的每个字节都用作索引位置,以便从硬编码的字节映射中检索已解码的字节. 字节映射是一个包含256个字节的字节数组,按随机顺序排列, 从1到256的每个可能的字节值对应一个. 恶意软件作者有时使用这种技术来混淆字符串和其他数据. 在解码循环的条件中使用的迭代计数器(i)与编码字符串长度的一半进行比较,因为解码循环每次交换两个字节. 编码字符串的字节被解码并从字符串的开始和结束字节开始交换,然后解码循环从每个末端向字符串的中心前进.
循环交换字节以反转已解码的字符串, 由于存储在恶意软件中的原始明文字符串在编码之前被反转. 当到达字符串的中心时,解码过程就完成了. 由于这个算法, 传递的所有编码字符串必须是偶数长度,以避免进一步处理. 在解码后的字符串被加载到堆栈之后立即调用, 然后恶意软件使用类似的循环重新编码字符串. 第一个解码字符串的最终结果是一个以回车换行(CRLF)分隔的C2域列表.
类中包含的所有编码字符串都可以解码 CleanUp.dll
二进制文件,包括以前的版本. Python脚本可以在 GitHub库.
图6 - Python脚本的样例输出
使用我们的Python脚本, 它揭示了C2的一些功能, 以及几个JSON字段,用于构建受感染系统的指纹:
十六进制编码字符串 | 解码字符串 |
---|---|
2 ec6a676766fc6f4960e86 | api/connect |
50 b0aea6747686b64eaef69e2ec6a64e96262ea64e | supfoundrysettlers.us |
50 b0b6f6c674a646a6b6f6164ea66ea64ea616ee | whereverhomebe.com |
50 b0ceae74ce4ea6362e2ea6ce9e4e2676aef6660eaece | retdirectyourman.eu |
76年f6ce56f476f6962e86c696360e0e86045ca60e9e2ab42e76a62e76f6c2 | 内容类型:application / json |
76年f696cece65cef4960e86 | api/session |
a61ea67426b6c63a346ceaf2eace9eca3a | \SysWOW64\cmd.exe |
a61ea6744ccc36362676ae4e3a2c6ceaf2eace9eca3a | \ SysWOW64 \ rundll32.exe |
d2f2 | OK |
3a0eb6a62a3a | \Temp\ |
445年c442696fa267686b6b6f6c6443444 | ”、“command_id”:“ |
be44 | "} |
445c44649644de | {"id":" |
445年c442e36aecea64e443444 | ","result":" |
445年c442696fa76f696cecea6ce443444 | ”、“session_id”:“ |
445年c44ceae2e862ece443444 | ","status":" |
2 e1e2e740eae7686a636c63a | \cleanup.txt |
445年c44a6b68676fa4e652eae0eb6f6c6443444 | ”、“computer_name”:“ |
0 ccc445c4476f696ce72a66efa363626443444 | ”、“dll_version”:“30 |
445年c44769686b6f626443444 | ","domain":" |
be44 | "} |
445c44649644de | {"id":" |
445年c443686c6f636fa0e96443444 | ”、“ip_local”:“ |
445年c44cef6443444 | ","os":" |
445年c44263696ae46facef6443444 | ”、“os_build”:“ |
445年c44a6e6a636656e964e0e443444 | ”、“特权”:“ |
二进制解码后的C2地址, 程序继续对受感染的机器进行指纹识别, 使用以下函数:
Function | Description |
---|---|
DsRoleGetPrimaryDomainInformation | 用于收集有关受感染计算机所在域的信息. 特别是,该函数返回域名. |
GetUserNameW | 提供运行程序的用户的名称. |
NetUserGetInfo | 提供运行程序的用户的详细信息. 在本例中,程序正在查询用户是admin还是user. |
GetComputerNameW | 提供运行二进制文件的受损机器的名称. |
RtlGetVersion | 返回当前运行的操作系统的版本信息,包括名称和版本号. |
图7 -的内容选择 CleanUp30.dll
概述系统信息收集的代码
同时枚举主机信息, 信息存储在从上面标识的编码字符串中发现的JSON字段中.
图8 -通过HTTP POST收集并发送到恶意域的数据示例
使用前面讨论的相同循环对指纹信息进行编码, 在发送之前,数据字符串被反转并使用字节映射进行编码.
信息编码后,发送到域 whereverhomebe [.]com/
, supfoundrysettlers [.]us/
, and retdirectyourman [.]eu/
通过HTTP POST方法. Rapid7决定了这一点 CleanUp30.dll
uses the 开源c++库 Boost.野兽通过HTTP和web套接字与观察到的C2域通信.
图9 -捕获的网络流量试图发送POST请求到 whereverhomebe [.]com/
and supfoundrysettlers [.]us/
在执行 CleanUp30.dll
后续活动
在Rapid7观察到的一个事件中, 的另一个版本执行后生成了一个PowerShell脚本 CleanUp30.dll
, CleanUp.dll
. CleanUp.dll
, similar to CleanUp30.dll
,最初是由另一个虚假的微软团队安装程序删除的, TMSSetup.exe
,它也将二进制文件放入AppData/Local/Temp目录.
图10 - PowerShell命令创建 .lnk File DiskCleanUp.lnk
PowerShell脚本的目的是创建一个名为 DiskCleanUp.lnk
within C:\Users\
. 通过这样做,这确保了LNK文件 DiskCleanUp.lnk
会在用户每次登录时运行吗. 快捷方式LNK文件负责执行二进制文件 CleanUp.dll
使用rundll32.Exe,传递导出 Test
.
在执行PowerShell脚本之后,Rapid7观察到执行了额外的有效负载:
- k1.ps1
- main.dll
- getresult.exe
不幸的是,在事故中,我们无法获得额外的有效载荷. 在事件发生期间,Rapid7还观察到以下枚举命令的执行:
Enumeration | Description |
---|---|
systeminfo | 提供有关系统软件和硬件配置的信息 |
arp -a | 显示本地计算机最近与之交互的所有IP地址的列表, 以及它们对应的MAC地址 |
. Net组“域计算机”/域 | 列出活动目录域中的“域计算机”组 |
“C: \ Windows \ system32系统\网路资讯查询.exe" myip.opendns.com resolver1.opendns.com | 确定外部IP地址 |
whoami /all | 提供有关当前用户的详细信息,包括用户的权限, 组成员, 和安全标识符(sid) |
nltest /dclist: |
列出指定域的所有域控制器 |
网络用户admin | 提供有关用户“admin”的详细信息,包括配置文件信息, 组成员, 本地群组成员, etc |
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s | 查询注册表以查找已安装软件的信息 |
中“DisplayName” | 用于过滤信息,只显示包含在“DisplayName”下的项目 |
Rapid7客户
通过Rapid7扩展的检测规则库,insighttidr和Managed 检测和响应客户已经拥有了现有的检测覆盖范围. Rapid7建议在所有适用的主机上安装Insight Agent,以确保对可疑进程的可见性 检测范围. 以下是已部署并将对与此恶意软件活动相关的行为发出警报的检测的非详尽列表:
- 持久性- SchTasks创建指向用户临时或漫游目录的任务
- 可疑进程:RunDLL32启动CMD或PowerShell
- 持久性-任务.创建执行RunDLL32的任务
- 网络发现- Nltest枚举域控制器
- 攻击者技术-通过命令行确定外部IP
- 可疑程序- .链接在PowerShell命令行
MITRE ATT&CK Techniques
Tactic | Technique | Description |
---|---|---|
资源开发 | 获取基础设施:域(T1583).001) | 恶意攻击者设置了错误域名microsoft -teams-download[.com,以帮助交付可执行的MSTeamsSetup_c_l_.exe |
Execution | 命令和脚本解释器:Powershell (T1059).001) | 用于创建 .链接文件DiskCleanUp.链接并执行PowerShell负载k1.ps1 |
Execution | 用户执行:恶意文件(T1204.002) | 用户执行二进制MSTeamsSetup_c_l_.exe |
Persistence | 计划任务(T1053 . t.005) | CleanUp30.DLL和清理.DLL创建计划任务清除 |
国防逃税 | 伪装:匹配合法名称或位置(T1036).005) | MSTeamsSetup_c_l_.exe伪装成合法的Microsoft Teams安装程序 |
国防逃税 | 虚拟化/沙盒规避:基于时间的规避(T1497).003) | 执行延迟在整个攻击流中由几个阶段执行 |
Collection | 本地系统数据(T1005) | 威胁参与者列举了使用后门清理DLL的受感染主机的信息 |
指挥与控制 | 数据编码-非标准编码(T1132.002) | 清理DLL的发送编码数据到C2使用唯一的编码功能 |
IOCs
IOC | Hash | Description |
---|---|---|
TMSSetup.exe | 9601年f3921c2cd270b6da0ba265c06bae94fd7d4dc512e8cb82718eaa24accc43 | 从prodfindfeatures [.]com/ |
MSTeamsSetup_c_l_.exe | 574年c70e84ecdad901385a1ebf38f2ee74c446034e97c33949b52f3a2fddcd822 | 从prodfindfeatures [.]com/ |
CleanUp30.dll | CFC2FE7236DA1609B0DB1B2981CA318BFD5FBBB65C945B5F26DF26D9F948CBB4 | The .由run32dll运行的DLL文件.在执行MSTeamsSetup_c_l_ . exe后,执行此命令.exe |
CleanUp.dll | 82年b246d8e6ffba1abaffbd386470c45cef8383ad19394c7c0622c9e62128cb94 | The .由run32dll运行的DLL文件.在执行TMSSetup程序后,安装.exe |
DiskCleanUp.lnk | An .在执行CleanUp30之后创建的链接文件.dll | |
prodfindfeatures [.]com/ | - | 承载恶意文件的域TMSSetup (1).. exe和MSTeamsSetup_c_l_ . exe.exe |
micrsoft-teams-download [.]com/ | - | 用户访问的错别字域名 |
impresoralaser [.]pro/ | - | TMSSetup下载的域名重定向链的一部分(1).. exe和MSTeamsSetup_c_l_ . exe.exe |
whereverhomebe [.]com/ | - | CleanUp30的域.dll和清理.DLL试图与 |
supfoundrysettlers [.]us/ | - | CleanUp30的域.dll和清理.DLL试图与 |
retdirectyourman [.]eu/ | - | CleanUp30的域.dll和清理.DLL试图与 |
149.248.79[.]62 | - | 为whereverhomebe解析IP [.]com/ |
64.95.10[.]243 | - | 为subfoundries定居者解析IP [.]us/ |
206.166.251[.]114 | - | 为redirectyourman解析IP [.]eu/ |
References
Article | URL |
---|---|
扫帚恶意软件配置文件 | http://exchange.xforce.ibmcloud.com/malware-analysis/guid:08822f57c12416bc3e74997c473d1889 |
Twitter上提到了CleanUpLoader | http://x.com/RussianPanda9xx/status/1757932257765945478 |