![]() ![]() 介绍 近期,Intezer Labs的研究人员发现一种新的Linux恶意软件EvilGnome,该恶意软件会伪装成Gnome拓展,但其实际上为Linux后门植入程序。EvilGnome主要针对Linux桌面用户,这点很罕见,毕竟Linux服务器占总Linux使用组成的70%,而桌面作业系统仅只有2%。过去在Linux上发现的加密矿工或是DDoS僵尸网络等恶意工具,通常都是瞄准服务器进行攻击的。 另外有证据表明该恶意软件可能跟俄罗斯APT组织Gamaredon有关。目前,所有主要的安全解决方案都没有检测到此恶意软件。 ![]() 图1:VirusTotal对EvilGnome样本的检测 我们传到VirusTotal的样本可能是一个测试版本,有未完成的键盘记录功能,还有注释、符号名和编译元数据,这些通常不会出现在生产版本中。EvilGnome的功能包括桌面截图、文件窃取、从麦克风捕获录音以及下载和执行其他模块。 ![]() 与Gamaredon组织的关联 Gamaredon组织据称与俄罗斯有关,自2013年以来一直活跃,主要针对与乌克兰政府有关的个人,方式是通过鱼叉式网络钓鱼感染受害者盗窃目标信息。该组织的特点是其信息窃取工具,还有通过计划任务实现持久性的机制。 我们在对EvilGnome的调查中发现了它与Gamaredon的一些关联性: 1.托管商相同 EvilGnome使用的托管服务商是Gamaredon多年来一直使用的。具体来说,EvilGnome的C2 IP地址(195.62.52.101)在两个月前解析的两个Gamaredon的域名——gamework.ddns.net和workan.ddns.net相关联: ![]() 图2:EvilGnome C2 IP查询 用RiskIQ来映射gamework.ddns.net域的历史,发现EvilGnome运行的IP地址两个月前由Gamaredon控制。 ![]() 图3:gamework.ddns.net DNS时间轴 2.基础设施相似 在研究EvilGnome C2时,我们发现它通过端口3436提供SSH服务。然后我们检查了目前正在运行的三个Gamaredon Group C2服务器上的3436端口,发现一个服务器开启了这个端口的SSH服务: ![]() 图4:EvilGnome C2和Gamaredon的rnbo-ua.ddns.net的端口3436上都提供SSH服务 继续扫描,我们确定了另外两个服务器,其域名类似于Gamaredon域的命名模式(使用.space TTLD和ddns): 185.158.115.44 - > kotl.space 185.158.115.154 - > clsass.ddns.net 3.使用工具相似 Gamaredon不使用任何已知的Linux植入程序,我们也很难对不同操作系统间的工具进行比较,因为它们的开发过程和要求可能不相同,但我们可以从更高的层次上观察到它们的相似之处。EvilGnome采用的技术和模块,包括对SFX的使用,持久化任务调度程序和信息窃取工具,让我们想起了Gamaredon的Windows工具。在下一节中,我们将详细分析EvilGnome。 ![]() 技术分析 使用Makeself SFX进行部署 此植入程序以自解压存档shell脚本(使用makeself创建)的形式提供。 makeself.sh是一个小型shell脚本,它能从目录生成一个可自解压的tar压缩存档,生成的文件显示为一个shell脚本(大多都有.run后缀),并且可以按shell脚本启动。然后,存档文件将解压到临时目录并执行任意命令(例如安装脚本)。这与Windows中使用WinZip自解压器生成的存档文件非常相似。 值得注意的是,操作人员没有从生成的makeself SFX中删掉元数据。封装日期、开发路径和工具的文件名都是公开的。我们可以观察到这个样本于7月4日创建: ![]() ![]() 图5:Makeself封装的元数据和归档文件的元数据 如上图所示,makeself脚本在解包后运行./setup.sh。 根据makeself的选项,我们能够指示脚本在不执行的情况下解包: ![]() 图6:拆包Makeself 存档包含四个文件: · gnome-shell-ext- 间谍代理可执行文件 · gnome-shell-ext.sh - 检查gnome-shell-ext是否已经在运行,如果没有则执行 · rtp.dat - gnome-shell-ext的配置文件 · setup.sh - 解包后由makeself运行的安装脚本 安装脚本将代理程序安装到〜/ .cache / gnome-software / gnome-shell-extensions /,试图伪装成Gnome shell扩展。Gnome shell扩展允许调整Gnome桌面并添加功能。 持久性是通过在crontab中每分钟运行一次gnome-shell-ext.sh来实现的。 最后,脚本执行gnome-shell-ext.sh,后者又启动核心可执行文件gnome-shell-ext: ![]() ![]() 图7:setup.sh ![]() 间谍代理 Intezer analysis对代理的分析显示此段代码之前未发现过: ![]() 图8:Intezer Analyze报告的间谍代理样本 此文件中大量独特的“基因”不是我们常在Linux文件中看到。间谍代理是用C ++构建的,使用具有面向对象结构的类。二进制文件没有被剥离,这使我们能够理解符号和开发人员的意图。 启动时,代理程序将在新进程中运行,然后代理读取rtp.dat配置文件并将其直接加载到内存中: ![]() 图9:从rtp.dat加载配置 我们在配置文件中标记了值得注意的字段: ![]() 图10:配置剖析 前四个字节是C2的IP地址的十六进制表示: 0x65343ec3 - > 0xc3.0x3e.0x34.0x65 - > 195.62.52.101 ![]() 模块 间谍代理包含五个名为“Shooter-”的模块: ![]() 图11:“Shooter”模块 · ShooterSound - 捕获用户的麦克风音频并上传到C2 · ShooterImage - 捕获截图并上传到C2 · ShooterFile - 扫描文件系统以查找新创建的文件,并将它们上传到C2 · ShooterPing - 从C2接收新命令 · ShooterKey - 未实现也未使用,很可能是未完成的键盘记录模块 每个模块都在一个单独的线程中运行,共享资源(例如配置)的访问由互斥锁保护。 这些模块使用密钥“sdg62_AS.sa $ die3”加密他们的输出并使用RC5解密来自C2的数据,使用的是某俄罗斯开源库的修改版本: ![]() 图12:RC5库 在连接失败,或者C2指示时,这些模块将其输出存储在~/ .cache / gnome-software / gnome-shell-extensions / tmp /: ![]() 图13:存储的文件 我们现在将深入研究这五个模块及其选项: ShooterPing ShooterPing模块处理从C2接收的命令: ![]() 图14:C2命令 包括: · 下载并执行新文件 · 为文件扫描设置新过滤器 · 下载并设置新的运行时配置 · 将存储的输出传输到C2 · 停止shooter 模块运行 其他模块都以恒定间隔运行,由其中一个配置参数定义。C2可以通过ShooterPing下载新参数来控制此间隔。 ShooterFile ShooterFile模块使用筛选器列表扫描文件系统,同时忽略特定文件和文件夹,如下图所示: ![]() 图15:文件扫描过滤器 我们可以从filter_accepted_files列表中看到,代理的目的是窃取与文档相关的文件,但恶意软件没有使用该列表,表明还在开发中。 ShooterAudio ![]() 图16:使用PulseAudio捕获音频 ShooterAudio模块使用PulseAudio从用户的麦克风捕获音频,使用的是rtp.dat的默认配置,模块每次迭代仅记录80,000字节的音频大小,因此模块只能在短时间内记录音频,这样模块起不了作用,除非C2设置更大的记录尺寸。 ShooterImage 此模块打开与XOrg显示服务器的连接,该服务器是Gnome桌面的后端。它使用Cairo开源库来截取用户桌面的截图。 ![]() 图17:使用XOrg Server捕获的屏幕截图 ![]() 预防和反应 建议想要检查是否被感染的Linux用户检查“~/ .cache / gnome-software / gnome-shell-extensions”目录中的“gnome-shell-ext”可执行文件是否存在。我们还基于代码重用技术创建了一个自定义YARA规则,用于检测EvilGnome的未来变体。 ![]() 结论 EvilGnome是一种罕见的针对Linux桌面用户恶意软件。我们认为这是一个不成熟的测试版本,预计将来会出现新版本危害相关用户,这也可能会为该组织的走向带来更多启示。 ![]() IOCs EvilGnome: a21acbe7ee77c721f1adc76e7a7799c936e74348d32b4c38f3bf6357ed7e8032 82b69954410c83315dfe769eed4b6cfc7d11f0f62e26ff546542e35dcd7106b7 7ffab36b2fa68d0708c82f01a70c8d10614ca742d838b69007f5104337a4b869 195.62.52[.]101 Gamaredon组织: 185.158.115[.]44 185.158.115[.]154 clsass.ddns[.]net kotl[.]space ![]() ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:嘶吼专业版,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |