导语:近期,Intezer Labs的研究人员发现一种新的Linux恶意软件EvilGnome,该恶意软件会伪装成Gnome拓展,但其实际上为Linux后门植入程序。
介绍
近期,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