反向代理加持!虚假OpenClaw安装包成新一代高危窃密木马
-
作者:火绒安全
-
发布时间:2026-03-24
-
阅读量:1026
近期,火绒威胁情报中心监测发现,虚假的OpenClaw安装包正借助Github进行传播。该安装包本质为下载器,会依照云控下发的配置,下载并依次执行五类恶意程序,其中涵盖多种窃密木马、SOCKS5反向代理及下载器等恶意程序。其中,窃密木马可通过云控配置或样本内置逻辑,对“下载”“文档”目录以及Discord、Telegram、Steam等应用中的数据加以收集,并上传至远控服务器以实施窃取。在执行过程中,样本还会结合鼠标行为、用户名、分辨率等环境特征开展虚拟机或沙箱检测,以达成规避分析和免杀的目的。目前,火绒安全产品可对上述病毒进行拦截查杀。

查杀图
此前已出现过恶意项目openclaw-installer,当时其所属组织名为install-openclaw,目前该组织已被封禁,无法访问。随后,又出现了一个新的组织openclaw-installer,其下项目名称同样为openclaw-installer。其Releases中提供的内容与此前一致,本质上仍属于下载器。

组织install-openclaw(旧)

组织openclaw-install(新)
一、样本分析
流程图如下:

流程图
文件构成如下:其中OpenClaw_x64.exe是主程序,同时也是检测器和下载器,会继续下载另外6个病毒文件。其中javavidserv.exe、svc_service.exe、claudclaw.exe都属于窃密木马,只是实现方式和具体窃密逻辑略有不同。WinHealhCare.exe与OneSync.exe的行为和 OpenClaw_x64.exe较接近,也会主动获取云控配置,并从中取出下载链接继续下载其他载荷,本质上也是下载器。onedrive_sync.exe是SOCKS5反向代理,一般用于隐藏攻击者IP。

文件构成表
1.1 OpenClaw_x64.exe(下载器)
该下载器会利用多种检测方式试图防止沙箱和虚拟机中运行该病毒,下方是因检测到Vmware虚拟机中Vmtools软件进程vmtoolsd.exe,从而直接终止进程的日志,其中可以发现有检测鼠标移动、可疑用户名、黑名单进程等,同时可以看到日志中有120分之类的语句,此分数可认为是危险值,若危险值超过一定分数则会退出进程。

此外还有其他许多检测方式,下面会选择出部分检测方式进行介绍。

1.1.1 检测模块
1.1.1.1 检测鼠标移动
通过循环调用GetCursorPos API获取当前鼠标坐标,其中检测到前后两次鼠标坐标发生变化时,即认为发生一次鼠标移动。如果在30秒内检测到的鼠标移动次数不足12次,则程序判定当前环境可能为自动化或沙箱环境,并主动退出进程。

1.1.1.2 设置危险值
样本读取注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000 项中的 DriverDesc值,并通过与hyper-v、vmware、virtualbox、qemu、parallels进行对比,若存在则会直接设置危险值为120,若不存在则会检查是否为RDP远程桌面,若是RDP远程桌面则给予160,若不是则给予120,其中危险值为最大容忍值,后续会利用检测系统信息时出现敏感信息则会进行加分,一旦加分超过至危险值则会退出进程。

1.1.1.3 检测黑名单用户名

通过GetEnvironmentVariableW API获取USERNAME的值,并与上述黑名单用户名列表进行比对,只要包含则会直接退出进程。

1.1.1.4 检测沙箱模块

利用GetModuleHandleA API获取上述沙箱相关模块名的基址,若存在则会直接退出进程。

1.1.1.5 检测IP与MAC地址
利用ipconfig程序获取IP信息,并检查是否包含10.0.2.15字符串,从而判断是否为VirtualBox虚拟机,危险值为90分。

还会利用`getmac /FO OCS /NH`指令获取以CSV格式输出当前机器的MAC地址等网络适配器信息,随后会检查MAC地址中是否有以下字符串,从而规避虚拟机。


1.1.1.6 检测分辨率

通过GetSystemMetrics检查是否与上述非常规屏幕分辨率一致,若一致,则会退出进程。

1.1.1.7 检测进程

通过CreateToolhelp32Snapshot与Process32First遍历进程并与上述进程名(调试器、虚拟机工具、沙箱、系统工具)进行对比,若一致则会设置退出进程。

1.1.1.8 检测主机名

获取环境变量COMPUTERNAME,与上述黑名单主机名进行对比,若一致则会设置退出。

检测主机名
还会检查USERNAME(用户名)为admin且COMPUTERNAME(主机名)为`[A-Z][a-z]{7}`形式时会将危险值增加90分。

1.1.2 下载模块
通过一系列检测后会进入下载阶段,该阶段先通过异或算法将主链接 https://pastebin.com/raw/mcwWi1Ue与备用链接https://snippet.host/efguhk/raw解密出来,其中密钥为xnasff3wcedj,下图为利用Python语言实现的对应异或算法代码。

异或算法解密出链接
随后,通过GET请求获取主链接返回的信息,经查看可知为一系列下载列表,随后将利用换行回车符对其进行分割。

下载链接清单
下载的文件本身是带密码的压缩包,解压密码需要程序从线上获取。主链接为 https://pastebin.com/raw/M6KthA5Z,备用链接为https://snippet.host/uikosx/raw。分析时获取到的密码为8TDk2FBsKG5UN2NNc3p,若无法获取云端密码则会使用默认密码,然而该默认密码同样也是8TDk2FBsKG5UN2NNc3p。这说明样本具备通过远程下发解压密码的能力,但当前实际使用的仍是默认值。


在确定下载文件的最终保存位置时,该样本会按优先级依次尝试多个目录方案,并判断对应路径是否可访问。整体上共存在三种路径选择策略,若前一种路径不可用,则继续尝试下一种。
首先,样本优先选择C:\Users\Public作为下载根目录。在该路径下,还会额外获取随机数,从Documents、Pictures、Videos、Music四个目录名中随机选择一个进行拼接,从而形成诸如C:\Users\Public\Documents、C:\Users\Public\Pictures之类的目标下载路径。
若C:\Users\Public路径无法访问,则样本会退而使用%TEMP%临时目录作为下载位置。此时会再通过随机数,从Logs、Cache、Temp、Data、Updates中随机选择一个子目录名追加到临时目录后,构造新的保存路径。
若%TEMP%路径同样不可访问,则样本会继续尝试其他可用驱动器目录,例如D:、E:、F:、G:、H:等,并采用与前述相同的方式,从Logs、Cache、Temp、Data、Updates中随机选择一个名称进行拼接,作为最终的下载目录。

最终下载目录判定逻辑
该样本会在上述目录下继续创建一层随机命名的子文件夹,文件夹名称由两组字符串按随机组合方式生成。
第一组可选字符串包括:Audio、Graphics、System、Network、Display、Device、Intel、Microsoft、Windows、Security、Update、Service、Driver、Monitor、USB;
第二组可选字符串包括:Driver、Service、Host、Manager、Handler、Adapter、Controller、Process、Module、Component、Helper、Support、Agent、Monitor、Updater。
文件夹名称通常由上述两组字符串随机拼接形成,例如USBManager、GraphicsDriver、DeviceMonitor、GraphicsComponent等。随后,样本还会在该子文件夹内创建一个同样采用该随机命名逻辑生成的 .7z文件。也就是说,最终的目录名和文件名均具有较强的伪装性,外观上类似正常的系统组件、驱动模块或服务文件。
相关路径示例如下:C:\Users\Public\Pictures\USBManager\GraphicsManager.7zC:\Users\Public\Videos\GraphicsDriver\DeviceDriver.7zC:\Users\Public\Music\DeviceMonitor\MonitorController.7zC:\Users\Public\Pictures\GraphicsComponent\ServiceHandler.7z随后利用解压密码解压后并执行其中可执行程序。
1.2 javavidserv.exe(窃密木马)
1.2.1 加载模块
从当前文件中获取资源QLMPHM,并利用ERED进行验证并分段获取被异或加密的窃密木马本体,最终手动加载。

资源中获取木马本体

通过分段获取
1.2.2 窃密模块
获取指定DLL基址:通过PEB中Ldr模块链表遍历已加载模块,并对模块名进行哈希匹配,从而获取DLL基址。

获取DLL基址
获取函数地址:下图为该恶意样本解析ntdll.dll、kernel32.dll基址并获取LoadLibraryA等API地址的相关代码。分析可见,样本内的DLL名称与函数名称字符串均经过异或加密存储,且不同目标字符串使用了不同的异或常量。

字符串异或解密
有意思的是该窃密病毒会检查自身大小是否符合预期,会通过检查.text节的SizeOfRawData 是否落在目标大小(0x98200)± 0x200的范围内。若不符合,则弹出“WARNING: MALWARE!”警告框,提示样本在分发前应经过packer/crypter保护;若用户点击取消,则进程直接退出,从而可以看出该窃密病毒是分发给其他人使用的产品。

检测是否被加壳或加密
反调试与反沙箱:除上述大小自检之外,还将检查是否处于调试状态。若处于调试状态,将直接通过ExitProcess终止该进程。此外,还会检测系统运行时间是否超过10分钟、处理器核心数是否大于等于2个、内存大小是否超过2GB,以及检查睡眠是否加速等。若不符合要求,将等待3至12分钟不等的时长。

检测是否被调试或在沙箱环境中

检测调试逻辑
随后会检查是否有ierojgoqwje_{username}事件是否存在,若不存在则会创建并返回1并继续执行,若存在则会返回0并退出进程。

防止同时运行
获取远程服务器地址:先访问https://telegram.me/s/m0r5hl与https://steamcommunity.com/profiles/76561198733506974获取远控服务器地址,其 “k0tt1 ooe.digitalmatters360.com|”中k0tt1为定位用特征,获取“|”字符前的字符串当做远控服务器链接(如ooe.digitalmatters360.com)。

Telegram频道界面

Steam用户界面
随后会获取系统信息,并命名为information.txt并将数据上传至服务器。

上传格式
进行Base64解码后可发现(略微去敏),上传的数据由版本信息、样本生成日期、设备标识信息(MachineID、GUID、HWID)、样本路径与工作目录、操作系统与安装时间、杀毒软件信息、主机与用户信息、显示分辨率、键盘语言、本地时间及时区信息,以及硬件配置、进程列表和已安装软件列表等内容组成。

1.2.2.1 浏览器和钱包
浏览器与钱包均借助服务器下发的配置实施窃取操作。其中,针对浏览器,服务器会下发需窃取的浏览器名称,诸如Chrome、Firefox、Opera等,这些名称将被传入相应函数;钱包是通过下发具体钱包路径进行窃取。然而,由于在分析过程中无法访问服务器,故而无法确定具体窃取了哪些加密货币钱包。

比对浏览器名称
浏览器:下面是以chrome举例,此外还会窃取fierfox与opera浏览器的重要文件。
窃取以下路径中的.ldb和.log文件。Local Extension Settings \Sync Extension Settings\\IndexedDB\chrome-extension_ {.*} _0.indexeddb.leveldb
读取Local State并利用"encrypted_key":"定位后将encrypted_key值利用Base64解码后验证是否为DPAPI开头后利用CryptUnprotectData API进行解密。

解密出Token
还会窃取Cookies、历史记录、密码等数据,下图为服务器接收到的压缩包,可以看到其中包含cookies、history、passwords等敏感数据组成的数据库文件。

敏感数据压缩包
加密货币钱包:在程序中会通过Wallets\字符串与下发的具体加密货币钱包路径进行组合并将其文件夹打包上传。

加密货币钱包相关
1.2.2.2 Steam 相关
病毒会通过读取Steam.exe进程内存并利用特征码(eyAidHlwIjogIkpXVC)定位并获取 Token。

获取Steam进程内存中的Token数据
窃取 Steam 关键文件:根据Software\Valve\Steam注册表获取SteamPath值,从而在 Steam文件夹中获取ssfn*、config.vdf、libraryfolders.vdf、DialogConfig.vdf、loginusers.vdf之类的Steam关键文件。

Steam关键文件名称
1.3 svc_service.exe(窃密木马)
创建互斥体:Global\StealthPackerMutex_9A8B7C,防止同时运行。

通过日志可以发现该svc_service.exe病毒会复制到三个目录中,并检查管理员权限,添加防火墙,随后还会检测用户鼠标活跃状态,最后解密加载C#窃密模块。

复制的三个文件:
还会利用RegSetValueExW API添加自启动项。

自启动项
添加防火墙:
"netsh" advfirewall firewall add rule name=Telemetry_In_57001 dir=in action=allow protocol=TCP localport=57001
"netsh" advfirewall firewall add rule name=Telemetry_Out_57001 dir=out action=allow protocol=TCP localport=57001
"netsh" advfirewall firewall add rule name=Telemetry_In_57002 dir=in action=allow protocol=TCP localport=57002
"netsh" advfirewall firewall add rule name=Telemetry_Out_57002 dir=out action=allow protocol=TCP localport=57002
"netsh" advfirewall firewall add rule name=Telemetry_In_56001 dir=in action=allow protocol=TCP localport=56001
"netsh" advfirewall firewall add rule name=Telemetry_Out_56001 dir=out action=allow protocol=TCP localport=56001
最后会利用RC4算法进行解密,会解密出C#窃密模块,最后利用Rust库ClrOxide进行加载执行.NET窃密模块。

1.3.1 加载模块
该程序会先利用DES算法解密出窃密模块,随后加载并调用 Ct8B5RBrTjnQxcaEhe.QgYcUwqGbJd0ciKbtd类中CejW9Rtrp方法。

解密加载调用方法
1.3.2 窃密模块
窃密模块中会将反病毒软件、硬盘序列号、用户名、系统版本以及从用户主机中窃取的敏感信息一并上传至远控服务器中。

窃取的内容有各种加密货币钱包应用与插件以及Telegram等数据。

各种软件路径
1.4 claudclaw.exe(窃密木马)
该病毒依旧是利用同样的方式从自身程序中读取资源并进行手动加载窃密模块,该窃密模块首先会解密出全局配置,配置如下所示,其中可以看到hosts中是远程服务器的列表, anti_dbg(反调试检测选项)为true。

随后程序会读取全局配置,若其中anti_dbg被设为true,则会启用反调试逻辑。其判断方式主要是检测系统中是否存在调试器相关进程。根据下方的进程列表可以看出,除了常见调试分析工具外,还包含了用于修改与作弊的Cheat Engine软件。

随后会利用POST请求至https://dev-tools.cfd/api/conf链接,从而获取云控配置,其中包含窃密逻辑,大体结构如下。

窃密配置结构
配置经过JSON格式化后有两千多行,通过AI进行总结后可得出窃取的信息分为五大类别:
应用配置与通信工具:
FileZilla、AnyDesk、Telegram、Discord、Pidgin / Psi+ / qTox、OpenVPN / NordVPN / ProtonVPN、Steam / Uplay 中的账号、配置、会话、连接记录等数据。
加密货币钱包与高价值资产:Exodus / Atomic / Electrum / Ledger / Binance / Wasabi 以及 Authy Desktop 中的钱包文件、种子、密钥、2FA等数据。
浏览器数据:
Chromium 全家桶、Gecko 全家桶中的Cookie、密码库、Token、历史、扩展存储、会话等数据。
系统侦察:
利用获取 system-info、screenshot 建立受害主机画像。
用户文档敏感信息搜集:
通过 Desktop / Documents / Downloads / D:\ 路径和目录中寻找特殊关键词(登录、钥匙、助记词)匹配找备份、账号表、密码文档、助记词、API Key、钱包备份等数据。
1.5 onedrive_sync.exe(反向代理)
反向代理模块同样是通过读取自身文件中的资源进行手动加载,并执行,其中反向代理模块是通过Go语言而写,先会通过几个接入服务器(helpers)获取到中继服务器(relay server),并将主动连接中继服务器,从而形成持久连接。

反向代理病毒日志
此时通过修改中继服务器IP并在本地搭建中继服务,与反向代理病毒建立持久连接后,发送 SOCKS5代理请求,并发现可成功代理访问百度,表明其代理通道可正常转发HTTPS流量。

本地搭建中继服务的日志
部分代码为如下图所示:

中继服务部分代码
其中可以发现使用的用户名与密码为LykNyQgv和d3gOsXZv,这是通过发送 “cmd:getCredentials”指令获取到的代理服务用户名与密码,也可通过 “cmd:newCreds;;;username:password”的方式创建新的用户名与密码,此外还有kill和 restart等指令,其中kill会直接终止当然进程。

不同cmd指令
1.6 WinHealhCare.exe与OneSync.exe(下载器)
WinHealhCare.exe与OneSync.exe两个病毒是非常相似,其中都会进行一系列的与 OpenClaw_x64.exe下载器一样会先检测当前环境,从而选择是否继续。
随后WinHealhCare.exe与OneSync.exe两个病毒都会访问同一个网址获取下载链接,都是 https://pastebin.com/raw/csi5UqpE与https://pastebin.com/raw/fTxiyhbL,但是分析时获取到的都是0。

此时获取到0的时候会进行验证,若为0则不会继续往下执行,若不是0,则会将首行数据作为用户名进行校验,若与当前系统中的用户名相同则会下载文件并执行,其中的解压密码链接也是https://pastebin.com/raw/M6KthA5Z与https://snippet.host/uikosx/raw。

根据用户名判断是否继续
综上,此次借 GitHub 传播的虚假 OpenClaw 安装包恶意程序,具备完善的免杀与环境检测机制,可批量窃取浏览器密码、加密货币钱包、Steam、Telegram、Discord 等高价值数据,并通过反向代理隐匿攻击者行踪,安全风险极高。
火绒安全提醒广大用户需提高警惕,切勿下载非官方开源项目与陌生安装包,下载文件前务必通过安全软件查杀。同时加强重要账号与隐私数据防护,及时更新安全软件病毒库并开启实时防护,避免因点击恶意程序造成账号被盗、隐私泄露与资产损失。
二、附录
C&C:

HASH:

