在恶意软件开始与命令和控制服务器进行交互之前,它可以确保由加载程序的先前实例生成的任何其他相关文件都不会引起任何问题。结果,加载程序将字符串“_lyrt”附加到其当前文件路径,并删除该名称的所有文件。接下来,加载程序在命令行中搜索参数“-p”,如果找到,它将删除计划任务“StartDT”。加载程序稍后创建此计划的任务,以在执行期间保持持久性。加载程序还会尝试执行被劫持的快捷方式文件,最终将执行Team9加载程序的实例。稍后,我们将描述此功能。
加载程序将执行最后检查,以确保操作系统键盘和语言设置未设置为俄语,并创建了具有硬编码名称“ld_201127”的互斥锁,后者是为了避免重复执行其自己的实例。
如前所述,大多数Windows API函数都是动态加载的。但是,为了绕过安全产品设置的任何API挂钩,加载程序会从磁盘上手动加载“ntdll”,从每个API函数中读取操作码,并将其与内存中的操作码进行比较。如果操作码不同,则加载程序会假定已应用了钩子并将其删除,这仅适用于迄今为止已审查的64位样本。
扫描Windows API函数中的钩子
下一阶段从命令和控制服务器下载后门或加载程序的更新版本,有趣的是,根据确定的Windows架构,以及是否已将'-p'参数传递到命令行中,加载程序的执行存在细微的差异。
假设未将“-p”参数传递到命令行,则加载程序有两个循环。一个用于32位,另一个用于64位,用于下载加载程序的更新版本。这两个循环之间的主要区别在于,如果感染Windows x64,则不会检查加载程序的版本。
下载过程与前一个版本相同,加载器使用硬编码的DNS服务器列表解析命令和控制服务器的IP地址,然后下载相应的文件。在最新的示例中,一个有趣的新特性是,在主服务器失败的情况下,使用了另一个命令和控制服务器IP地址。替代IP地址是通过对已解析命令的每个字节应用一个按位的XOR操作生成的,并且控制IP地址的字节是0xFE。另外,作为一种可能的反检测方法,加载器验证命令和控制服务器的IP地址不是“127.0.0.1”,这两种方法也出现在最新的Team9后门变体中。
与先前的Team9加载程序变体一样,命令和控制服务器以加密格式发送回二进制文件。解密过程与其先前的变体相似,但是XOR密钥生成中的改动很小,在每日格式的每个十六进制数字之间添加字符“3”,例如:
332330332330330335331338(ASCII格式,托管日期:2020-05-18)
在生成的XOR项中添加字符“3”
如果将“-p”参数传递到命令行,则加载程序将继续直接从命令和控制服务器下载Team9后门。一个值得注意的增加是成功下载并解密后门程序后的过程注入(hollow process注入)。加载程序将后门注入以下进程:
SvchostExplorer
Cmd
只要成功下载了二进制文件并对其进行了正确解密,加载程序便会在受感染主机中添加或更新其持久性。
持久性方法和持久性方法说明
计划任务:加载程序创建两个计划任务,一个任务用于更新的加载程序(如果有),另一个任务用于下载的后门,计划的任务名称和计时器不同。
Winlogon劫持:将恶意软件的文件路径添加到“Userinit”注册表值中。结果,每当用户登录时,也会执行恶意软件。
启动文件夹中的快捷方式:加载程序在Startup文件夹中创建一个指向恶意软件文件的快捷方式,快捷方式的名称为“adobe”。
劫持已存在的快捷方式:加载程序在桌面及其子文件夹中搜索快捷方式文件。如果找到,则将恶意软件与应用程序的文件名一起复制到快捷方式的目标位置,并在原始二进制文件名的末尾附加字符串“__”。此外,加载程序会创建一个“.bin”文件,该文件存储文件路径、文件位置和参数。 “.bin”文件结构可以在附录部分中找到。当此结构中填充了所有必需的信息时,将使用XOR密钥0x61对其进行加密。
下表总结了此Team9装载程序变体的已识别Bazar域及其URI。
已识别的Team9加载程序变体的URI
Bazar domainbestgame[.]bazar
forgame[.]bazar
Team9加载程序变体的已识别域
Team9后门