
在2019年7月底,我们发现了一个有趣
的TA505恶意软件样本。 在2019年7月22日,它被上传到ANY.RUN进行动态分析。 我们注意到以下事实:除了TA505 Servhelper常用的标签外,在暴露的标签中还出现了netsupport标签,并且在网络签名触发中,还标识了相同的名称NetSupport RAT。
图 1. ANY.RUN在线分析仪中设置的恶意软件和标签的下载日期
图 2. ANY.RUN沙箱中的NetSupport RAT上的网络签名触发乍一看,这似乎很奇怪:毕竟,ServHelper组的后门本身具有令人印象深刻的功能,可以控制受害人的PC。 现在是时候详细考虑恶意软件的工作了。
NSIS和PowerShell滴管
我们的分析从其开始的可执行PE文件是基于Nullsoft可脚本安装系统(NSIS)平台的安装程序。 执行安装过程的NSIS脚本提取并运行嵌入式PowerShell脚本:
图 3. NSIS脚本说明启动的PowerShell脚本包含一个Base64编码的缓冲区(为清楚起见,在下图中将其截断),在解码之后,该缓冲区由CDES模式下的Triple DES(3DES)解密:
图 4.在PowerShell脚本中解密数据该脚本的第一部分是一个具有语音名称heller的函数,负责增加系统中的特权并绕过UAC保护。 为此使用了两种技术:
方法1:在任务计划程序中使用SilentCleanup任务:
- 该任务可以由用户启动,但可以使用更高的特权。 任务属性使用%windir%环境变量包含可执行文件的路径。 您可以更改环境变量的值(例如,指定启动PowerShell脚本),然后启动任务将导致以管理员权限执行PowerShell脚本,而不会警告UAC。
- 攻击者在Windows 8和Windows 10系统上使用此技术。
- 执行此技术的代码与Metasploit框架的模块实现相同。
图 5.部分脚本具有绕过SilentCleanup任务的技术方法2:使用sysprep.exe系统实用程序和侧面加载DLL技术
- 首先,创建一个帮助程序脚本以重新启动C:\ Windows \ Temp目录中的PowerShell脚本。 然后形成一个CAB归档文件 ,其中包含辅助DLL库CRYPTBASE.dll(PowerShell脚本同时包含该库的x86版本和x64版本)。 使用wusa.exe系统实用程序,将此存档解压缩到C:\ Windows \ System32 \ Sysprep目录中。 然后,启动系统实用程序sysprep.exe,它将加载先前解压缩的DLL库,然后依次执行辅助脚本。 因此,PowerShell脚本将以管理员权限重新启动,而不会警告UAC。
- 攻击者在Windows 7系统上使用此技术。
- 可以在本文中找到详细说明,并在例如Github上的项目中找到实现示例。
图 6.部分脚本具有绕过sysprep.exe实用程序的技术脚本中有很多注释,未使用的Test-Administrator函数,一些变量未经初始化就使用:所有这些都是借入代码的标志,而没有仔细检查其简洁性。
使用必需的特权运行脚本后,将执行脚本的第二部分。 在这一阶段,目标有效载荷被解码:
- 该字符串由Base64解码,
- 使用Deflate扩展缓冲区
- 该字符串由Base64重新解码。
图 7.有效载荷解码算法- 结果,将在系统中创建以下文件:
- %systemroot%\ help \ hlp11.dat- RDP包装程序库的 x86 / x64版本。 它用于扩展RDP服务的功能,包括几个同时连接的可能性。 重要的是要注意,库已被修改:在执行开始时,行c:\ windows \ help \ hlp12.dat被线性XOR解码,然后将DLL库加载到接收的路径上:
图 8.解密DLL库的路径及其加载- %systemroot%\ help \ hlp12.dat是ServHelper后门的x86 / x64版本,将在下一节中讨论;
- %systemroot%\ help \ hlp13.dat-RDP包装器库的配置文件,
- %systemroot%\ system32 \ rdpclip.exe-RDP服务的组件,用于交换剪贴板数据;
- %systemroot%\ system32 \ rfxvmt.dll是用于使用RemoteFX技术传输数据的RDP服务组件。
在提取并记录了有效负载之后,脚本将设置其组件的正确操作:
- 将rfxvmt.dll组件的所有者更改为NT SERVICE \ TrustedInstaller并授予必要的权限;
- 将RDP连接的端口值从标准3389更改为7201。
- 将网络服务帐户添加到本地管理员组
- 将hlp11.dat注册为RDP服务并重新启动该服务;
- 删除创建的临时文件。
ServHelper RAT→滴管
删除程序的结果之一是hlp12.dat DLL,它是ServHelper恶意软件。 可以根据操作系统的位大小来创建库的x86版本和x64版本(它们之间没有根本区别)。 这两个版本都是用Delphi编写的,与
UPX 3.95 (x64)和
PeCompact 2.20 (x86)打包在一起。
Proofpoint和
趋势科技的同事之前
曾对这个后门的分布和操作进行了分析。 我们的示例的功能库在许多方面都与已知的方法趋同:特别是,用于解密使用的字符串的算法(
Vigenere cipher )没有改变:
图 9.使用Vigenere密码解密字符串的伪代码有趣的是,并未对所有字符串实施加密:例如,控制域的地址和带有其他组件的Web链接保持打开状态:
图 10.未加密的域和Web链接访问这些链接之一(hxxp://letitbe.icu/2.txt)时,将下载一个加密文件(MD5:0528104f496dd13438dd764e747d0778)。 在十六进制编辑器中分析文件末尾时,您会注意到字节0x09的值经常重复:
图 11.在下载的文件中重复字节0x09字节值重复是使用单字节XOR进行加密的常见标志。 在这种情况下,该理论可以通过以下代码得到证实:
图 12.单字节异或加密功能
图 13.将单字节值作为参数传递给XOR函数解密的结果是,我们将收到包含以下内容的ZIP归档文件:
图 14.解密的ZIP存档的内容所有文件都是用于NetSupport Manager PC远程控制的
合法软件,各个组的攻击者都反复使用过这些文件。
图 15. NetSupport Manager软件说明其中一个文件(client32.ini)是配置文件,其中包含受害人的PC通过其连接到攻击者的
中间网关的地址:
图 16.攻击者充当NetSupport Manager网关如果受害者位于防火墙后面,并且Internet访问受端口限制,则此选项才有意义。 要在Internet上正常工作,必须打开对至少两个端口的访问权限:80(HTTP)和443(HTTPS),以便增加成功连接的可能性。
在2019年9月,我们发现了几个类似的ServHelper示例,但选项范围非常有限。 以其中之一为例(MD5:5b79a0c06aec6126364ce1d5cbfedf66):在可执行PE文件的资源中,具有重复字节形式的具有相似特征的加密数据:
图 17. ServHelper资源中的加密数据这是一个用一个字节再次“阻塞”的ZIP归档文件,其中包含NetSupport Manager的相同组件,尽管这次具有不同的中间网关:179 [。] 43.146.90:443。
结论
在本文中,我们研究了TA505后门的交付和使用选项之一-ServHelper。 除了主要组件操作之前的奇怪功能(例如,绕过UAC和提升权限)之外,我们还注意到了主要后门的有趣变形:基本功能(数据盗窃,间谍和命令执行)通过嵌入另一种PC远程控制工具NetSupport RAT进行了补充。 此外,新版本的ServHelper不再具有使其成为完整后门的关键功能:现在,它仅用作安装NetSupport RAT的中间工具。 攻击者可能发现此方法在开发和检测能力方面均更为有效。 但是,我们感兴趣的分组工具列表并不止于此。
由正向技术公司的Alexey Vishnyakov
发表国际奥委会hxxp://185.225.17.175/wrkn157.exe-从中加载NSIS滴管的Web链接
d2a062ca772fa3ace7c7edadbd95eaf7-原始的NSIS滴管
0cacea3329f35e88a4f9619190e3746f-PowerShell删除程序shipkat.ps1
fb609b00e29689db74c853ca7d69f440-CRYPTBASE.dll(x86)
843288a35906aa90b2d1cc6179588a26-CRYPTBASE.dll(x64)
445cd6df302610bb640baf2d06438704-hlp11.dat(x86)
083f66cc0e0f626bbcc36c7f143561bd-hlp11.dat(x64)
40bae264ea08b0fa115829c5d74bf3c1-hlp12.dat(x86)
ac72ab230608f2dca1da1140e70c92ad-hlp12.dat(x64)
07f1dc2a9af208e88cb8d5140b54e35e-hlp13.dat
1690e3004f712c75a2c9ff6bcde49461-rdpclip.exe
dc39d23e4c0e681fad7a3e1342a2843c-rfxvmt.dll
ServHelper C2:
179 [。] 43.156.32
185 [。] 163.45.124
185 [。] 163.45.175
185 [。] 225.17.150
185 [。] 225.17.169
185 [。] 225.17.175
185 [。] 225.17.98
195 [。] 123.221.66
195 [。] 123.246.192
37 [。] 252.8.63
94 [。] 158.245.123
94 [。] 158.245.154
94 [。] 158.245.232
fdguyt5ggs [。] pw
foxlnklnk [。] xyz
gidjshrvz [。] xyz
letitbe [。] icu
pofasfafha [。] xyz
0528104f496dd13438dd764e747d0778-使用NetSupport RAT的加密ZIP存档
NetSupport Manager组件:
953896600dfb86750506706f1599d415-cksini.exe
8d9709ff7d9c83bd376e01912c734f0a-client32.exe
2d3b207c8a48148296156e5725426c7f-HTCTL32.DLL
0e37fbfa79d349d672456923ec5fbbe3-msvcr100.dll
26e28c01461f7e65c402bdf09923d435-nskbfltr.inf
88b1dab8f4fd1ae879685995c90bd902-NSM.ini
7067af414215ee4c50bfcd3ea43c84f0-NSM.LIC
dcde2248d19c778a41aa165866dd52d0-pcicapi.dll
a0b9388c5f18e27266a31f8c5765b263-PCICHEK.DLL
00587238d16012152c2e951a087f2cc9-PCICL32.DLL
2a77875b08d4d2bb7b654db33a88f16c-remcmdstub.exe
eab603d12705752e3d268d86dff74ed4-TCCTL32.DLL
185 [。] 225.17.66:443-NetSupport RAT网关地址
5b79a0c06aec6126364ce1d5cbfedf66-带有NetSupport RAT存档的ServHelper
179 [。] 43.146.90:443-NetSupport RAT网关地址