01
Vyveva背景介绍
2020年6月,ESET研究人员发现了一个未知的攻击活动,研究表明该攻击活动使用新的Lazarus后门,ESET研究人员将其称为Vyveva,用于攻击南非的一家货运物流公司。后门由多个组件组成,并通过Tor网络与其C2服务器通信。到目前为止,已经能够找到其安装程序,加载程序和主要payload:具有TorSocket DLL的后门。
研究最早能够追溯Vyveva至少从2018年12月开始使用。ESET遥测数据表明利用Vyveva后门是有针对性地进行了部署,因为仅发现了两台受害机器,这两台机器都是位于南非的一家货运物流公司拥有的服务器。Vyveva后门具有以下功能:
文件泄漏
时间戳
收集有关受害计算机及其驱动器的信息
以及其他常见的后门功能,例如运行由恶意软件操作员指定的任意代码。
Vyveva与ESET研究人员检测到的NukeSped恶意软件家族示例具有多个代码相似性,NukeSped恶意软件家族也是Lazarus Group使用的恶意软件之一。但是,相似之处还不止于此:在网络通信中使用伪造的TLS、命令行执行链以及使用加密和Tor服务的方式都指向Lazarus。因此,ESET研究人员可以将Vyveva视为Lazarus新的恶意软件产品。图1中可以看到众多代码相似性的一个示例–解决了唯一命名的Tor库导出:
92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Vyveva backdoor
BF98EA1326E5F8C351E68C79B5D1E0164C7BE728 taskhosts.exe Win32/NukeSped.HV trojan
图1.Hex-Rays反编译显示的相似性
02
应用技术特点
到目前为止,ESET研究人员找到了由Vyveva构成的多个组件中的三个组件:Installer、Loader和后门程序。Installer是最早被研究人员发现的,并且由于它希望机器上已经存在其他组件,因此表明存在一个较早的未知阶段-Dropper。Loader使用简单的XOR解密算法对后门进行解密。图2为Vyveva组件概述。
图2. Vyveva组件概述
Installer的主要目的有两个:
创建一个确保后门加载程序持久性的服务
将嵌入的默认后门配置存储在注册表中
前一项任务可以理解为创建看起来合法的服务,为了达到这一目标,Vyveva Installer的属性(例如服务名称和显示名称)是使用现有服务的属性中的单词组合而成的,这些单词是随机选择的。另外,也可以通过命令行参数来指定这些属性的安装(-dll、-svc、-disp、-desc和-group)。ESET研究人员使用这些参数观察了以下内容:
\powerctl.exe -svc powerctl -dll powerctl.dll
对于后一项任务,Vyveva Installer首先将唯一标识每个受害者的配置感染ID设置为随机生成的值,然后将其存储在注册表中,如图3所示。
图3.配置注册表值
配置中的一项是加密的C2服务器列表:例如,ESET研究人员分析的安装程序样本配置有以下C2:
4bjt2rceijktwedi[.]onion:80
cwwpxpxuswo7b6tr[.]onion:80
03
后门功能
后门是Vyveva的主要组件,它连接到C2服务器并执行威胁参与者发出的命令,具有23个命令,其中一些命令是异步的,并且在它们自己的线程中执行。它们中的大多数是用于文件和进程操作或信息收集的普通命令,但是对于文件时间戳记也存在一种较不常用的命令,它可以将creation/write/access time元数据从“donor”文件复制到目标文件,或使用2000-2004年之间的随机日期。
其他值得注意的命令是Vyveva的文件上传命令和命令0x26。文件上传命令能够递归渗透目录,并支持文件扩展名过滤,例如规定仅Office文档。至于命令0x26,它表明存在另一个未知的组件,ESET研究人员在编写本文时尚未观察到。表1显示了完整的命令列表。
ID | 描述 |
---|---|
0x03 | 从服务器回复“ ping” |
0x10 | 获取有关计算机的信息-用户名,计算机名称,IP,代码页,操作系统版本,操作系统体系结构,tick计数,时区,当前目录 |
0x11 | 获取有关驱动器的信息-类型,大小,名称,序列号,文件系统类型 |
0x12 | 将数据写入指定的文件,也可以写入时间戳。 |
0x13 | 上载指定的文件或目录 •文件-大小,上次写入时间,内容 •目录统计-文件总大小,文件数,目录数 -对于每个条目-名称,属性 -目录-递归到目录 -文件-大小,上次写入时间,content选项 •对文件内容使用压缩(zlib 1.2.5) •文件扩展名过滤器(白名单/黑名单) •递归标志 |
0x14 | 获取指定目录的列表 •名称,属性,写入时间 •目录–非空 •文件–大小 |
0x15 | 将当前目录设置为指定目录 |
0x16 | 创建指定的流程 |
0x17 | 获取有关正在运行的进程的信息– PID,PPID,可执行文件路径 |
0x18 | 通过PID或可执行文件路径终止进程 |
0x19 | 使用重定向的输出创建进程并上载输出该命令使用格式字符串,可通过cmd.exe提示执行 •“%param0%/ c”%param1%>%tmp_fpath%“ 2>&1”如果输出为空,则为唯一而是上传字符串“\ r \ n” |
0x1A | 删除指定的路径。文件删除方法: •仅删除 •覆盖,移动和删除 |
0x1B | 将创建/写入/访问时间元数据从源文件或目录复制到目标文件或目录。如果源不存在,则使用2000-2004年的随机时间进行创建和最后一次写入,访问时间不变。 |
0x1C | 获取有关指定路径的信息: •文件-属性,创建/写入/访问时间,类型,大小 •目录/驱动器-总文件大小,文件数,目录数(带有可选的扩展名过滤和递归) |
0x1D | 设置当前配置Blob,保存到注册表 |
0x1E | 获取当前配置Blob |
0x1F | 启用/禁用驱动器监视程序(配置字段enable_drive_watchdog) |
0x20 | 启用/禁用会话监视程序(配置字段enable_session_watchdog) |
0x21 | 设置与后门执行延迟有关的配置值(配置字段delay_until_time) |
0x23 | 存储异步命令使用的数据(与命令0x12、0x13相关) |
0x24 | 停止执行异步命令(与命令0x12、0x13相关) |
0x25 | 设置与失败的C2连接尝试之间的延迟相关的配置值(配置字段wait_minutes) |
0x26 | 如果\ wsdchngr.drx存在 •删除配置注册表值 •删除后门文件(自行删除) •删除加载程序文件 •读取,解密,PE加载wsdchngr.drx并在新线程中调用SamIPromote导出 •退出当前线程 |
尤其值得关注的是后门的看门狗(watchdogs),可以选择启用或禁用它。有一个驱动器看门狗:监视新连接和断开连接的驱动器,以及一个会话看门狗:监视活动会话(即已登录用户)数量。这些组件可以在预先配置的常规三分钟间隔之外以及新的驱动器和会话事件之外触发与C2服务器的连接。
从注册表值中读取后门的配置,该配置最初由安装程序设置(如图3所示),通过C2命令修改配置后,将更新注册表中存储的值。示例配置及其结构如图4所示。
图4. 配置结构和带注释的示例
该wait_minutes字段指定的时间失败的连接尝试之后到C2下次连接之前等待。如果后门的执行需要延迟到特定的时间和日期,则可以在delay_until_time字段中指定。所述encrypted_cncs字段是一个加密的字符串,其包含以分号分隔的C2s中。
Vyveva使用基于官方Tor源代码的Tor库与从配置中随机选择的C2服务器进行通信。它每隔三分钟与C2联系一次,在接收命令之前发送有关受害计算机及其驱动器的信息。后门的导出目录包含TorSocket.dll,其中包含不言自明的导出close_ch、connect_ch、open_ch、read_ch、write_ch。
04
结论
Vyveva构成了Lazarus广泛的恶意软件库的又一个补充,被发现用于攻击南非的公司,这也说明了APT组织Lazarus Group地域目标的广泛性。
参考文章
https://www.welivesecurity.com/2021/04/08/are-you-afreight-dark-watch-out-vyveva-new-lazarus-backdoor/