在2020年4月下旬公开发现的Team9恶意软件家族(也称为“Bazar [1]”)似乎是由Trickbot背后的团队开发的一种新恶意软件。尽管该恶意软件的开发才刚刚开始,但开发人员已经开发了两个具有丰富功能的组件。这篇文章的目的是描述两个组件的功能,即加载器和后门。
RIFT利用研究人员的战略分析,数据科学和威胁搜寻功能来创建可行的威胁情报,从IOC,检测规则到关于未来威胁情况的战略报告。网络安全是一场军备竞赛,攻击者和防御者都不断更新和改进其工具和工作方式。为了确保托管服务对最新威胁具有预警作用,NCC Group运营了一个以Fox-IT为核心的全球融合中心。这个多学科团队将研究人员领先的网络威胁情报转化为强大的检测策略。
Team9装载机的早期变体
研究人员估计这是Team9加载程序(35B3FE2331A4A7D83D203E75ECE5189B7D6D06AF4ABAC8906348C0720B6278A4)的较早版本,因为它简单且有编译时间标记。另一个变体是最近才编译的,具有其他功能。需要注意的是,在加载器二进制文件的早期版本(2342C736572AB7448EF8DA2540CDBF0BAE72625E41DAB8FFF58866413854CA5C)中,开发人员使用Windows位功能来下载后门。但是,我们认为这个功能已经被删除了。
在继续进行技术分析之前,值得一提的是,字符串未加密。同样,大多数Windows API函数都不是动态加载的。
当加载程序开始执行时,它会尝试通过读取“运行”注册表项“Software \ Microsoft \ Windows \ CurrentVersion \ Run”中的值“BackUp Mgr”来检查自身的另一个实例是否已经感染了主机(图1)。 )。如果存在,它将验证当前加载程序文件路径是否与注册表值的数据(Backup Mgr)中已设置的路径相同。假设以上所有检查均成功,则加载程序将继续其核心功能。
加载程序会验证它是否已经感染了主机
但是,如果以上任何一项检查均不符合要求,那么加载程序将执行以下操作:
1.将其自身复制到%APPDATA%\ Microsoft文件夹,将此文件路径添加到值“Backup Mgr”下的注册表的“运行”项中,然后从复制的位置执行加载程序。
2.如果加载程序无法访问%APPDATA%位置,或者如果加载程序已从该位置运行,则它将当前文件路径添加到值“Backup Mgr”下的“运行”注册表项中,然后从该位置再次执行加载程序。
持久性操作完成后,加载程序通过在Windows临时文件夹中写入批处理文件来进行自我删除,该批处理文件的文件名前缀为“tmp”,后面跟着随机数字。批处理文件内容如下:
@echo off set Module=%1 :Repeat del %Module% if exist %Module% goto Repeat del %0
接下来,加载程序确定Windows架构结构,这是一个至关重要的步骤,因为加载程序需要知道要下载哪个后门版本(32位或64位)。确定Windows架构结构后,加载程序将执行下载。
加载程序的核心功能是下载Team9后门组件,加载程序包含两个“.bazar”顶级域,它们指向Team9后门,每个域在不同的URI上托管两个版本的Team9后门,每个URI对应一个Windows架构结构(32位和64位),使用两个域很可能是一种备份方法。
从命令和控制服务器收到的所有文件都以加密格式发送,为了解密文件,加载程序使用按位XOR解密,其密钥基于受感染主机的系统时间(年/月/日)。
根据受感染主机的时间生成XOR密钥
最后一步,加载程序通过验证PE标头来验证可执行文件是否已成功解密。如果Windows架构结构是32位,则加载程序会使用“Process Hollowing”技术将接收到的可执行文件注入到“calc.exe”(Windows计算器)中。否则,它将可执行文件写入磁盘并执行它。
下表总结了在装载程序的早期变体中找到的已识别的Bazar域及其URI。
在加载程序的早期变体中发现的Bazar URI
下表(表2)总结了在加载程序的早期变体中找到的已识别域。
Bazar domains bestgame[.]bazar forgame[.]bazar zirabuo[.]bazar tallcareful[.]bazar coastdeny[.]bazar
在装载机的早期变型中发现的Bazar域
最后,另一个有趣的发现是二进制文件中的日志功能揭示了以下项目文件路径:
d:\\development\\team9\\team9_restart_loader\\team9_restart_loader
Team9装载机的最新变体
在本节中,研究人员描述了第二个加载器的功能,研究人员认为它是上述Team9加载器的最新变体。该评估基于以下三个因素:
1.后门请求中的类似URI;
2.类似的有效载荷解密技术;
3.类似的代码块;
与以前的版本不同,这些字符串经过加密,并且使用Windows API哈希技术动态加载了大多数Windows API函数。
一旦执行,加载程序将使用计时器以延迟执行。这很可能是一种防沙箱方法,延迟时间过去之后,加载程序将开始执行其核心功能。
在恶意软件开始与命令和控制服务器进行交互之前,它可以确保由加载程序的先前实例生成的任何其他相关文件都不会引起任何问题。结果,加载程序将字符串“_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注入)。加载程序将后门注入以下进程:
Svchost Explorer Cmd
只要成功下载了二进制文件并对其进行了正确解密,加载程序便会在受感染主机中添加或更新其持久性。
持久性方法和持久性方法说明
计划任务:加载程序创建两个计划任务,一个任务用于更新的加载程序(如果有),另一个任务用于下载的后门,计划的任务名称和计时器不同。
Winlogon劫持:将恶意软件的文件路径添加到“Userinit”注册表值中。结果,每当用户登录时,也会执行恶意软件。
启动文件夹中的快捷方式:加载程序在Startup文件夹中创建一个指向恶意软件文件的快捷方式,快捷方式的名称为“adobe”。
劫持已存在的快捷方式:加载程序在桌面及其子文件夹中搜索快捷方式文件。如果找到,则将恶意软件与应用程序的文件名一起复制到快捷方式的目标位置,并在原始二进制文件名的末尾附加字符串“__”。此外,加载程序会创建一个“.bin”文件,该文件存储文件路径、文件位置和参数。 “.bin”文件结构可以在附录部分中找到。当此结构中填充了所有必需的信息时,将使用XOR密钥0x61对其进行加密。
下表总结了此Team9装载程序变体的已识别Bazar域及其URI。
已识别的Team9加载程序变体的URI
Bazar domain bestgame[.]bazar forgame[.]bazar
Team9加载程序变体的已识别域
Team9后门
研究人员相信这是加载程序安装到受感染主机上的后门,此外,研究人员认为,Team9后门的第一个变体已于2020年3月下旬开始出现在野外。每个变体似乎都没有发生重大变化,后门的核心技术保持不变。
在分析过程中,研究人员发现了后门和它的加载程序之间的相似之处:
1.创建一个具有硬编码名称的互斥锁,以避免同时运行多个实例,到目前为止,研究人员已经确定的互斥锁名称为“mn_185445”和“{589b7a4a-3776-4e82-8e7d-435471a6c03c}”;
2.验证键盘和操作系统语言是否为俄语;
3.在域名选择中使用具有相似性的Emercoin域名;
此外,后门为受感染的主机生成唯一的ID,其过程如下:
1.查找“C:\ Windows”(Windows FILETIME结构格式)的创建日期,然后将结果从十六进制格式转换为ASCII表示形式,图5(转换前)和6(转换后)。
2.重复相同的过程,除了文件夹“C:\ Windows \ System32”;
3.将第二个字符串附加到第一个字符串,并使用项目符号作为分隔符,例如01d3d1d8 b10c2916.01d3d1d8 b5b1e079。
4.获取NETBIOS名称,并将其附加到步骤3中的前一个字符串中,并将项目符号作为分隔符。例如:01d3d1d8 b10c2916.01d3d1d8 b5b1e079.DESKTOP-4123EEB。
5.读取C:驱动器的卷序列号并将其附加到前面的字符串中,例如:01d3d1d8 b10c2916.01d3d1d8 b5b1e079.DESKTOP-SKCF8VA.609fbbd5。
6.使用MD5算法哈希步骤5中的字符串,输出的哈希是恶意软件的ID。
注意:在一些示例中,上述算法有所不同。开发人员使用硬编码的日期、字符串格式的Windows目录文件路径(' C:\Windows '和' C:\Windows\system32 ')和NETBIOS名称。根据示例的功能,有许多迹象表明这些二进制文件是为了调试目的而创建的。
转换前
转换后
网络通信
后门似乎支持通过端口80(HTTP)和443(HTTPS)的网络通信,在最新的样本中,从受感染的主机发出证书,以通过HTTPS进行通信。对命令和控制服务器的每个请求至少包括以下信息:
1.请求任务(/ 2)或发送结果(/ 3)的URI路径;
2.组ID,这会被添加到“Cookie”标头中;
最后,与加载程序使用主机的日期作为密钥解密从命令和控制服务器收到的网络答复的加载程序不同,Team9后门使用恶意软件的ID作为密钥。
Bot命令
后门支持各种命令:
表7总结了向命令和控制服务器报告(POST请求)的每个命令的报告结构。注意:在一些示例中,如果它不能与Bazar域通信,后门将结果报告给一个额外的IP地址(185.64.106[.]73)。
本文翻译自:https://blog.fox-it.com/2020/06/02/in-depth-analysis-of-the-new-team9-malware-family/如若转载,请注明原文地址