金眼狗APT组织(GoldenEyeDog)深度解析

1组织背景

GoldenEyeDog组织又称看门狗、金眼狗、Dragon Breath、APT-Q-27,最初是一个主要针对东南亚博彩和诈骗组织进行攻击的APT组织。近两年开始扩大攻击范围,以金融、互联网公司和高校为目标进行攻击。该组织常使用水坑和钓鱼网站伪装成正常软件的官方网站,在网站上面托管嵌入恶意代码的安装包,向用户主机植入木马进行攻击。

2概述

未然实验室在威胁狩猎分析过程中发现GoldenEyeDog新的变种攻击方法,该组织新制作了伪装成FlyVPN和AnyDesk安装包的恶意软件,这两款恶意安装软件为实现更强的免杀能力和躲避安全研究人员样本狩猎,分别使用了新的攻击手法,主要体现在:伪装FlyVPN恶意安装包使用新的攻击手法如下:

首次使用RC4算法对恶意dll进行加密,实现免杀。

使用双白加黑(白exe,黑dll)进程加载最终的恶意代码,躲避样本狩猎。

使用了未知的壳对木马进行了保护,减缓安全研究人员的分析速度。

通过MSI指令来创建和启动系统服务去执行恶意代码,实现更隐蔽的攻击。

伪装AnyDesk恶意安装包使用新的攻击手法如下:

首次发现使用Dount工具生成的winos后门进行恶意攻击。

升级攻击链,提高隐蔽性,利用双开机启动项实现持久化。

这两个样本使用了多种新型的隐藏对抗技术,在GoldenEyeDog历史样本中未曾出现过。其伪造合法软件安装包的行为、恶意安装包连接的C2地址以及在攻击链中使用的winos后门与GoldenEyeDog组织历史的攻击行为有重叠,因此未然实验室将这两次攻击行为归因到GoldenEyeDog组织。

3GoldenEyeDog攻击手法的发展历程

图片

无任何防护期: 这是GoldenEyeDog组织发展的早期,恶意样本都以诱导性的文件名诱导受害者点击执行。例如 《xx彩票.cmd》,《xx资料.exe》。

简单隐藏期: GoldenEyeDog对恶意代码进行了简单的隐藏。例如2020年投递的Telegram安装包,将恶意代码嵌入到NSIS安装脚本中,并且使用白加黑的方式隐藏恶意代码。有些样本还会把恶意代码隐藏到注册表中,只有动态运行的时候才会加载恶意代码。再例如2022年,GoldenEyeDog组织使用了aspack进行了简单的加壳。

组合多种方式隐藏期: 2024年之后,GoldenEyeDog对样本进行了更加复杂和精巧的隐藏。例如其伪造的快连VPN安装包,使用了三个方式递进隐藏恶意代码。

  1. 嵌入了有密码的压缩包到PE文件中,这样即使安全防护软件发现了压缩包,也无法分析压缩包是否包含恶意代码。
  2. 压缩包里的恶意代码被分割成两个文件,只有动态运行的时候才会把两个文件组合成一个,进行加载执行,这样每个文件静态看起来都是"无害"的。
  3. 攻击最后一个阶段的恶意代码被加密和压缩保存到LP.txt文件中,也可以有效对抗安全防护软件。

样本一:伪装FlyVPN样本的PlugX攻击链分析

样本起始于水坑网站的MSI安装包,当目标群体安装伪装的FlyVPN安装包之后,会被创建恶意的系统服务,系统服务主体是白文件,具有合法的数字签名,但其依赖的DLL是作者精心制作的恶意DLL,执行时会创建一个新的进程,通过白+黑的方式加载最终的shellcode,shellcode是魔改加壳的PlugX木马,整个流程如下。

图片
图片

01水坑网站诱导下载

水坑网站https://www[.]flyvpn[.]org/,网站的首页就是下载地址,并且该页面和原版的FlyVPN网站的排版基本是相同的。点击下载按钮之后就会获得一个zip包,对其解压之后是一个msi文件。

图片
图片

该msi文件的时间戳为2024年5月份,伪装成FlyVPN的安装包。MSI文件中包含很多文件,其中最大的FlyVPN.exe是正规的安装包。里面还包含其他的exe和dll文件。

图片

其中的AcroRd32.exe是Adobe Reader的白文件,AcroRd32.dll虽然后缀名是dll,但并不是PE文件,而是一堆乱码。该MSI文件还包含了好几个dat数据文件,这几个dat文件实际上是加密的载荷,后面会进行详细的分析。

图片
图片

02安装系统服务进行持久化

从msi文件中可以看到该msi文件会添加系统服务,执行的程序是wwstsvc.exe。

图片

wwstsvc.exe是国内某公司签名的白文件,其依赖WWStartupCtrl64.dll。

图片

安装完之后,wwstsvc.exe立马启动。
03解密并拉起第二阶段代码

第一阶段的恶意代码在WWStartupCtrl64.dll中,其会使用RC4加密算法解密,解密密钥固定。

图片

密钥固定为如下的字符串。

图片

WWStartupCtrl64.dll会把dragon.dat解密为dragon.dll。这是第二阶段的恶意代码。该msi中绑定的其他乱码文件,使用固定的密钥也可以解密出合法的PE文件。例如AcroRd32.dll,log1.dat,log2.dat,main.dat。解密脚本如下
from Crypto.Cipher import ARC4import sys
key = b'4as4df64q6fa1sdfa31'assert(len(key) == 19)cipher = ARC4.new(key)content = open(sys.argv[1], 'rb').read()msg = cipher.decrypt(content)open(f"{sys.argv[1]}.decrypt", "wb").write(msg)

WWStartupCtrl64.dll解密之后会拉起UpLoader.exe,该文件也是有合法签名的白文件。UpLoader.exe依赖dragon.dll文件。

图片

dragon.dll也是GoldenEyeDog组织制作的黑文件,其恶意代码的入口为ChromeMain_0。

图片

首先在子函数里面首先获取exe的目录。

图片

然后追加main.dat字符串。

图片

在0x10001280函数里面首先调用0x10001c00,可以看到是RC4的初始化过程,这里和之前的解密方法与密钥都是一样的,这里的解密是为了解密main.dat。

图片

04解密执行RAT

解密完成之后调用VirtualAlloc申请可读可写可执行内存,然后复制解密后的内容到新申请的空间,并从PE文件的开头开始执行。

图片

但是PE文件的开头是DOS头,并不是直接用来执行的代码段。使用windbg可以看到,解密之后的PE文件并不是常规的PE文件,其开头是一个可以执行的shellcode。这段汇编的作用是通过call和pop指令获得当前的地址,然后减去9就获得了基地址,然后加上一个常量(这里为0x370000),并跳转到第二阶段的shellcode。

图片

对解压之后的PE文件进行分析,可以看到这个PE文件被加了未知的壳,该PE文件与正常的PE文件相比新增了一个很大的text0段,并且这个段里面有很多一小段汇编后面跟着很长的随机数字数组,并且这一小段代码也构不成一个函数。有点像PECompact和ASProtect壳的特征,但是使用PEID等工具并不能发现其具体是使用了哪个壳。

图片

由于壳是未知的,无法脱壳之后再分析。从字符串的角度进行分析,该恶意代码十分像PlugX恶意软件。例如bootProc和PIPE\\RUN_AS_USER(%d)都是PlugX恶意软件的特征。这里判断GoldenEyeDog使用了泄漏的PlugX源码进行改造作为新的RAT。

图片

从数据段中可以找到C2的地址。

图片

样本二:伪装AnyDesk样本的Donut攻击链分析

实验室捕获的另外一个样本(伪装AnyDesk安装包)使用了Donut加载器加载shellcode。该样本为携带有恶意程序并具备正常软件功能的AnyDesk程序安装包,在安装过程中执行恶意模块,除了AnyDesk安装程序外,另释放并启动白加黑程序和攻击载荷最终连接C2。可以看到GoldenEyeDog组织与时俱进,不断更新自己的攻击手法,避免杀软查杀。图片

图片

经分析该样本最终载荷使用了donut加载的winos远控工具。该攻击链路和伪装FlyVPN的攻击链基本相同,不同的地方有两点:

  1. 伪装的AnyDesk样本使用了启动项来进行持久化,伪装的FlyVPN样本则使用的是系统服务。
  2. 伪装的AnyDesk样本使用的了Donut生成的winos后门木马,伪装的FlyVPN样本则使用的是魔改加壳的PlugX木马。

01安装伪装的AnyDesk软件并释放恶意载荷

攻击起始于水坑网站,域名为any[.]goprlhw[.]top。该域名被GoldenEyeDog组织经过专门的SEO优化,使得目标人群可以轻松的搜索到该网站。

图片

安装包的MSI文件有一个指令是调用Anuxhs.dll的whoss导出函数。

图片

whoss函数的主要作用是解压all.apk,然后执行down.exe可执行程序。

图片

恶意软件会把恶意payload放到"%HOME%/随机UUID"目录下,主要包含如下文件。

a) down.exe: 主程序

b) steam_api64.dll: 恶意DLL,用于加载shellcode

c) aut.png: 恶意shellcode,用于持久化

d) view.png: 恶意shellcode,donut生成的winos木马

02持久化和载荷注入攻击

steam_api64.dll首先会判断命令行参数是否包含/aut参数,如果没有就会创建一个子进程,包含该参数。子进程的目的是加载shellcode实现持久化,后面会详细分析。

图片

然后判断有没有安装某杀软,如果安装了,那么就会直接读取view.png中的shellcode,然后覆盖主程序(down.exe)中的入口函数,最后执行shellcode。

图片

如果没有安装某杀软,那么就会创建colorcpl.exe进程。

图片

然后读取view.png中的shellcode,并通过APC的方式注入到colorcpl.exe进程中执行。

图片

如果命令行包含/aut参数(这里是前面提到的子进程),那么就会从aut.png中读取shellcode,和view.png类似的流程,直接覆盖主程序的入口函数,然后执行shellcode。对aut.png中的shellcode展开后的PE文件进行分析,可以看到pdb的信息还保留着。

图片

aut.png中的shellcode的主要作用是持久化。首先创建down.lnk快捷方式,该快捷方式指向down.exe。

图片

然后创建两个开机自启动项。其中一个直接指向down.exe,另外一个指向快捷方式,并且名称都为GoogleUpdata_Service,用来迷惑受害者。

图片

03加载donut生成的shellcode

view.png中的shellcode是donut生成的,原生的攻击载荷为exe文件,使用aplib算法压缩,并使用了随机的密钥用chaskey加密算法加密。

图片

使用脚本对该shellcode解密解压之后写入到donut_dec文件,可以看到是一个正常的exe文件。

图片
图片

04攻击载荷winos工具

逆向donut_dec可以看到该木马内置的C2配置格式和基于Gh0st源码改编的winos远控木马配置格式一致。

图片

该gh0st木马与C2通信时使用流密码加密混淆。

图片

winos木马功能齐全,包含上线模块和功能模块,其中上线模块负责维持后门,接收命令并加载运行下发的功能模块。功能模块包含:注册表检索、服务管理、屏幕截取、键盘记录、文件管理等。

4归因及总结

GoldenEyeDog组织在以往的攻击中,经常利用常用的软件进行伪装,捆绑恶意代码进行攻击,例如伪装Telegram、快连VPN,并部署到水坑网站上,最终通过优化搜索引擎排名,诱使用户下载安装。本次捕获伪装的FlyVPN样本与伪装的AnyDesk样本同样来源水坑网站,与GoldenEyeDog历史技战法存在较大重叠。

在C2基础设施方面,伪装的FlyVPN样本中的C2地址可以关联到以往GoldenEyeDog组织使用的C2服务器,更加证实了该样本是出自GoldenEyeDog组织。

在使用的载荷方面,在利用伪装的AnyDesk攻击链中,使用的gh0st相关载荷几乎贯穿了该组织近年来被披露的所有攻击活动中,综上,我们有理由怀疑这两次发现的恶意软件系GoldenEyeDog组织所部署。

目前,国内外中文用户群体都会根据搜索引擎的排名结果下载常用的软件,该组织正是利用这一点,针对性的进行了SEO优化,这一操作自然而然的将目标群体进行了锁定。在此,我们建议广大的网民朋友在冲浪过程中选择官网下载需要的软件,并通过专业安全方案做好安全防护。|

来源:华为安全