
黑客盯上了受害计算机的图形处理芯片(GPU),用于网络犯罪的情况中,最常见的手段是用于挖矿,但也有人用来规避恶意软件被终端防病毒系统拦截。
最近安全厂商Arctic Wolf揭露了一种名为GPUGate的恶意软件攻击方式,就是这种类型的一个案例。这种攻击方式在8月下旬被发现,目标是西欧的欧盟成员国,针对开发者及IT专业人士,企图窃取账号密码信息、传播勒索软件、进行渗透和横向移动,甚至实施供应链攻击。
利用搜索引擎广告诱导用户下载恶意软件
攻击者购买Google广告,并利用GitHub仓库的结构,将用户引导到特定域名下载恶意软件。黑客发送的MSI安装文件大小达到128MB,目的是绕过大多数沙箱系统的检测。而最特别的策略是,黑客利用受害计算机的显卡解密恶意载荷,如果是在通过虚拟访问、未实际配置硬件GPU的环境,恶意载荷则保持加密状态。
在这次攻击链中,黑客首先购买Google广告,在搜索引擎结果的最顶端投放恶意广告,声称提供GitHub桌面版应用程序(GitHub Desktop)。由于该广告显示为由GitHub赞助,又出现在搜索的第一个结果,非常容易让用户上当。
伪装成GitHub提交页面,诱导用户点击恶意链接
一旦用户上当并点击链接,就会被引导到一个网址——这是攻击者在合法的GitHub仓库中建立的提交(Commit)页面。黑客在该页面的说明(Readme)文件中预先嵌入了恶意下载链接。虽然GitHub会保留所有提交记录供开发人员比对,但显然这个说明文件现在也被滥用了。攻击者通过嵌入提交页面的URL哈希值,就能生成看起来与原仓库相同的页面。
由于GitHub提交页面显示真实、合法的信息,包括仓库名称、URL、分支数量、获得的星标数量、贡献者等,唯一的区别是在页面上方出现黄色背景的警示信息,提醒用户正在查看提交内容。用户往往忽略这个警告,并点击攻击者埋藏的恶意链接,被引导至恶意域名gitpage[.]app。
使用大体积文件和混淆手段逃避检测
此时用户下载的是一个名为GitHubDesktopSetup-x64.exe的初始恶意软件可执行文件,基于.NET Framework构建,包含171个可执行文件,其中超过100个实际上是用于混淆分析的填充文件,目的是增加分析难度并扩大整体文件体积。真正有问题的文件是UpdaterClient.dll,大小约为60MB。此外,为了防止他人通过公共工具分析,攻击者还修改了文件的头部信息。
刻意规避虚拟环境与沙箱检测
不同于其他恶意软件开发者尽可能让代码兼容大多数计算机的做法,GPUGate则采取了排除特定硬件环境的策略。Arctic Wolf指出,这是因为没有实际配置硬件GPU的设备,很可能是虚拟机(VM)、沙箱环境或研究人员用于分析的老旧设备。黑客判断的机制有两个:首先是GPU名称的字符长度,若不足10个字符(例如:VMware SVGA),程序就会终止;另一个则是特定的GPU功能,若不具备这些功能,恶意程序也不会运行。
利用GPU进行两阶段解密机制
恶意软件开发者在GPUGate中实现了两个阶段的OpenCL解密机制。首先通过特定密钥和XOR算法,利用GPU进行第一阶段解密,目的是生成第二阶段解密所需的AES密钥。
接着,他们使用上述解密密钥,并结合解密功能的代码来解出恶意程序GPUGate。该恶意软件通过PowerShell隐蔽执行,并在受害计算机上获得权限提升。攻击者还在受害计算机上创建了计划任务,确保在计算机重启后仍能以管理员权限运行。
模块化载荷与分散式C2架构
黑客会根据受害计算机的特征,下载模块化的有效载荷,这些组件以ZIP压缩包形式打包。特别的是,C2服务器的域名和IP地址分布在不同的主机托管服务商中,目的是避免某个基础设施被关闭而影响攻击活动。