导语:本分析中的技术规格是基于研究人员从主机调查中发现的Chinotto恶意程序(MD5 00df5bbac9ad059c441e8fef9fefc3c1)。这种恶意程序的特征之一是它包含了大量的垃圾代码来阻碍分析。
Windows可执行Chinotto
调查主机时,研究人员发现了一个恶意的 Windows 可执行文件,并从 VirusTotal 和研究人员自己的样本集合中发现了其他恶意程序变体。其中一个 Windows 可执行文件包含构建路径,恶意程序开发者似乎将恶意程序称为“Chinotto”。
PDB的路径
本分析中的技术规格是基于研究人员从主机调查中发现的Chinotto恶意程序(MD5 00df5bbac9ad059c441e8fef9fefc3c1)。这种恶意程序的特征之一是它包含了大量的垃圾代码来阻碍分析。在运行时,恶意程序在复制真实值之前,将未使用的数据复制到分配的缓冲区;或者分配一个未使用的缓冲区,用没有意义的数据填充它,并且从不使用它。
它还在运行时将函数字符串(如C2地址和调试消息)恢复到堆栈中,恶意程序会创建一个互斥锁并获取C2地址,这样发现的每个样本都是不同的:
Mutex: NxaNnkHnJiNAuDCcoCKRAngjHVUZG2hSZL03pw8Y C2 address: hxxp://luminix.openhaja[.]com/bbs/data/proc1/proc.php
为了生成攻击目标的识别值,恶意程序获取计算机名和用户名,并将它们组合成“%计算机名%_%用户名%”的格式。接下来,它使用 XOR 密钥“YFXAWSAEAXee12D4”对获取的字符串进行加密,并使用 base64 对其进行编码。
后门不断查询 C2 服务器,等待恶意软件操作员的命令。研究人员观察到一个早期版本的Chinotto恶意程序(MD5 55afe67b0cd4a01f3a9a6621c26b1a49),虽然它也遵循这个简单的原则,但它使用了硬编码的后门命令“scap”,这意味着此特定样本仅用于窃取攻击目标的屏幕截图。
Chinotto 恶意软件显示出完全成熟的功能来控制和从攻击目标那里窃取敏感信息。
另一个恶意软件样本(MD5 04ddb77e44ac13c78d6cb304d71e2b86)在运行时表现出轻微差异,是从同一攻击目标身上发现的。这是同样的功能齐全的后门,但它加载后门命令使用不同的方案。恶意程序会检查同一文件夹中是否存在“*.zbpiz”文件。如果存在,它会加载文件的内容,并在解密后将其用作后门命令。恶意程序开发者不断改变恶意程序的功能,以逃避检测并根据攻击目标的情况创建自定义变体。
此外,Chinotto 恶意程序还有不同的 Windows 可执行变体。除了上面提到的传统 Chinotto 恶意程序之外,还有一个不同的变体包含一个嵌入式 PowerShell 脚本。生成的 PowerShell 命令与研究人员从攻击目标身上发现的 PowerShell 具有相似的功能。但是,它包含额外的后门命令,例如上传和下载功能。根据恶意程序的构建时间戳,研究人员评估恶意程序开发者从 2019 年年中到 2020 年年中使用了 PowerShell 嵌入式版本,并从 2020 年底开始使用恶意的、无 PowerShell 的 Windows 可执行文件。
Android Chinotto
基于C2通信模式,研究人员发现了一个Android应用版本的Chinotto恶意程序(MD5 56f3d2bcf67cf9f7b7d16ce8a5f8140a)。该恶意APK根据AndroidManifest.xml文件请求过多的权限。为了达到监视用户的目的,这些应用程序要求用户启用各种权限。授予这些权限允许应用程序收集敏感信息,包括联系人、消息、通话记录、设备信息和音频记录。每个样品都有不同的包装名称,分析的样本带有“com.secure.protect”名称。
该恶意程序发送其唯一的与Windows可执行版本的Chinotto相同的设备ID格式。
Beacon URI pattern: [C2 url]?type=hello&direction=send&id=[Unique Device ID]
接下来,它在以下HTTP请求后接收命令:
Retrieve commands: [C2 url]?type=command&direction=receive&id=[Unique Device ID]如果C2服务器发送的数据不是“ERROR”或“Fail”,恶意程序就会开始进行后门操作。
研究人员发现攻击者对一个变体 (MD5 cba17c78b84d1e440722178a97886bb7) 中更具体的文件列表感兴趣。此变体的“UploadFile”命令将特定文件上传到 C2 服务器。 AMR 文件是一种音频文件,通常用于记录电话呼叫。此外,华为云服务和腾讯服务也被作为目标。为了监视攻击目标,该列表包括目标文件夹以及/Camera、/Recordings、/KakaoTalk(韩国著名信使)、/문건(文档)、/사진(图片)和/좋은글(好文章)。
目标文件和文件夹
综上所述,该攻击者针对攻击目标进行了针对 Windows 系统的鱼叉式网络钓鱼攻击和针对 Android 系统的 smishing 攻击。攻击者利用 Windows 可执行版本和 PowerShell 版本来控制 Windows 系统。研究人员可以假设,如果攻击目标的主机和手机同时受到感染,恶意程序运营商就能够通过从手机窃取 SMS 消息来绕过双因素身份验证。在使用功能齐全的后门进行后门操作后,操作员能够窃取他们感兴趣的任何信息。利用窃取的信息,攻击者进一步利用他们的攻击。例如,该组织试图感染其他有价值的主机并使用被盗的社交媒体帐户或电子邮件帐户联系潜在攻击目标。
攻击程序
旧的恶意HWP文件
这次活动背后的攻击者提供了带有恶意HWP文件的相同恶意程序,当时使用了与COVID-19相关的诱饵窃取证书。
由第一个 HWP 文件 (MD5 f17502d3e12615b0fa8868472a4eabfb) 创建的 Visual Basic 脚本具有与 Chinotto 恶意程序相似的功能。它还使用相同的 HTTP 通信模式。从恶意 HWP 中释放的第二个有效载荷是一个 Windows 可执行文件,它执行具有相同功能的嵌入式 PowerShell 脚本。这些发现表明,相关活动至少可以追溯到2020年年中。
基础设施
在这次活动中,攻击者完全依赖于受感染的 Web 服务器,这些服务器主要位于韩国。研究人员与当地 CERT 密切合作,拆除了攻击者的基础设施,并有机会调查 C2 服务器上控制 Chinotto 恶意程序的脚本。 C2 脚本(名为“do.php”)使用几个预定义的文件来保存客户端的状态(shakest)和命令(comcmd)。此外,它还解析了来自植入程序的 HTTP 请求传递的几个参数(id、类型、方向、数据):
为了控制客户端,C2 脚本使用 HTTP 参数。首先,它检查“type”参数的值。 ‘type’参数带有四个值:hello、command、result和file。
‘hello’类型
当脚本收到“type=hello”参数时,它会检查“direction”的值。在此例程中,脚本检查客户端的状态。恶意程序操作员将客户端状态保存到特定文件中,在本例中为“shakest”文件。如果正在接收‘send’值,则客户端状态设置为‘ON’。如果还设置了“接收”,则发送客户端的状态日志文件(可能是为了将客户端的状态发送给恶意程序操作员)。 ‘refresh’值用于将所有客户端设置为‘OFF’,‘release’用于初始化命令文件。客户只是回复“OK”。
‘type=hello’ 命令
“command”类型
为了管理植入程序的命令,C2 脚本处理了几个附加参数。如果设置了“type=command”和“direction=receive”,它会从客户端发出请求以检索命令。
有两种命令文件:通用命令,如初始命令或发送到所有客户端的命令,以及特定客户端的单个命令。如果客户端存在单个命令,则它会传递该命令。否则,向客户端发送通用命令。如果“direction”参数设置为“send”,则请求来自恶意程序操作员,以便将发送的命令保存在 C2 服务器中。使用此请求,操作员可以设置两个命令文件:公共命令或个别命令。如果‘botid’参数中包含‘cli’,则表示此请求是设置通用命令文件。如果‘data’参数包含‘refclear:’,则公共命令文件被初始化。否则,“数据”值将保存到通用命令文件中。如果“botid”不是“cli”,则表示此请求被定向到单个命令文件,保存单个命令文件的过程与保存公共命令的过程相同。
type=command commands
‘result’ 类型
当上传来自植入程序的命令执行结果时,脚本将“type”参数设置为“result”。如果‘direction’参数等于‘send’,它会将‘data’参数的值保存到单独的结果文件:“[botid]-result”。 ‘direction’参数的‘receive’值意味着检索单个结果文件。然后,脚本在使用 base64 编码后将结果文件发送给操作员。
‘file’ 类型
最后一个可能的“类型”命令是‘file’ ,该值用于从攻击目标那里窃取文件。如果文件上传成功,脚本会发送消息“SEND SUCCESS”。否则,它会发送“上传文件时出错,请重试!”。
研究人员发现恶意程序操开发者使用单独的网页来监视和控制攻击目标。从几个受感染的 C2 服务器中,研究人员看到一个带有“control.php”文件名的控制页面。
控件页
控制页面显示了一个简单的结构,操作人员可以在左侧面板中看到感染主机的列表,其状态为“ON”或“OFF”。根据这些信息,操作员能够使用右侧面板发出命令并查看来自客户端的结果。
攻击目标
除了上述目标外,研究人员还发现了更多无法通过分析 C2 服务器来分析的攻击目标。通过分析攻击者的基础设施,研究人员发现了 2021 年 1 月至 2021 年 2 月之间的 75 个客户端连接。 大多数 IP 地址似乎是 Tor 或 VPN 连接,它们很可能来自研究人员或恶意程序运营商。
通过分析其他C2服务器,研究人员发现了更多可能的攻击目标信息。除了来自Tor的连接,只有来自韩国的连接。根据所显示出的IP地址,研究人员可以区分出位于韩国的四名不同的疑似攻击目标,并根据用户代理信息确定他们使用的操作系统和浏览器:
目标A在7月16日至9月5日期间连接了C2服务器,并且使用了过时的Windows操作系统和IE浏览器。目标B于9月4日连接该服务器,并运行Windows 8和Internet Explorer 10。当研究人员在调查C2服务器时,攻击目标D一直在连接它,使用Windows 10和Chrome 78版本。
时间线
总而言之,这次活动的目标是韩国,这是ScarCruft最感兴趣的攻击区域。根据研究人员的发现,研究人员还假设攻击者针对的是位于韩国的个人,而不是特定的公司或组织。
研究人员发现一些代码与名为POORWEB的旧ScarCruft恶意程序重叠。首先,当Chinotto恶意程序将文件上传到C2服务器时,它使用HTTP POST请求,并使用一个随机函数生成的边界。当Chinotto恶意程序(MD5 00df5bbac9ad059c441e8fef9fefc3c1)生成一个边界值时,它执行两次random()函数并连接每个值。生成过程并不完全相同,但它使用了与旧的POORWEB恶意程序(MD5 97b35c34d600088e2a281c3874035f59)相似的方案。
HTTP边界地生成
此外,与之前用于 POORWEB 恶意程序的 Document Stealer 恶意程序(MD5 cff9d2f8dae891bd5549bde869fe8b7a)还有一些代码重叠。当 Chinotto 恶意程序检查来自 C2 服务器的响应时,它会检查响应是“HTTP/1.1 200 OK”还是“error”。此 Document Stealer 恶意程序也具有相同的例程来检查来自 C2 服务器的响应。
C2响应检查程序
除了代码相似性之外,从历史上看,ScarCruft 组织以监视与朝鲜有关的个人而闻名,例如记者、外交官和政府雇员。这次攻击的目标与之前的 ScarCruft 团体活动在同一范围内。基于攻击目标和几个代码重叠,研究人员以中等可信度评估此网络间谍活动与 ScarCruft 组织有关。
总结
许多记者和人权活动人士都是复杂网络攻击的目标。与企业不同,这些目标通常没有足够的工具来保护和应对高技能的监视攻击。研究人员团队的目的之一就是帮助APT组织的目标人群。研究人员与当地CERT的合作,能够对ScarCruft的基础设施设置有一个独特的了解,并使研究人员能够发现许多技术细节。
通过这些发现,研究人员发现了相同恶意程序的其他Android变体,这对于理解和跟踪ScarCruft TTP(策略、技巧和步骤)非常有价值。此外,在寻找相关活动时,研究人员发现了一些更早的活动,可以追溯到2020年中期,这可能表明ScarCruft针对这些目标的攻击已经运行了很长一段时间。
本文翻译自:https://securelist.com/scarcruft-surveilling-north-korean-defectors-and-human-rights-activists/105074/如若转载,请注明原文地址