
APT小组Donot Team(也称为APT-C-35,SectorE02)自2012年以来一直活跃。 攻击者的利益旨在获得机密信息和知识产权。 犯罪分子的目标之一是南亚国家,特别是巴基斯坦的公共部门。 在2019年,我们观察了他们在孟加拉国,泰国,印度,斯里兰卡和菲律宾以及亚洲地区以外的阿根廷,阿拉伯联合酋长国和英国的活动。
几个月来,我们一直关注该组恶意下载程序代码的更改。 在本文中,我们将考虑一种攻击媒介,更详细地介绍上述加载程序,并介绍网络基础结构的功能。
攻击链
在感染开始时,受害者会收到Office Open XML格式的MS Word文档。 尽管缺乏明确的证据,但我们有信心认为初始渗透向量是针对具有办公室附件的网络钓鱼电子邮件。 该文档本身不是恶意的,但是滥用了自动加载外部元素以启动下一阶段文档的功能。
访问链接的外部对象下载文件是利用Microsoft Equation中的CVE-2018-0802漏洞的RTF文档。 主要的shellcode操作之前是一系列中间操作,这些中间操作使用密钥0x90和0xCE用单字节XOR解密下一层:
通过第二个的第一个shellcode解密
通过第二个shellcode解密第三个
通过主程序的第三个shellcode解密主shellcode执行以下操作:
- 密钥为0x79的单字节XOR将从%TEMP%\一个文件中解密二进制数据。
- 创建可执行文件C:\ Windows \ Tasks \ Serviceflow.exe和C:\ Windows \ Tasks \ sinter.exe 。 这些是恶意的组下载程序,我们将在后面进行讨论。
- 创建文件C:\ Windows \ Tasks \ S_An.dll ,其中写入两个字节0x90。
- 创建文件C:\ Windows \ Tasks \ A64.dll 。 根据系统的容量,这是UACMe实用程序的修改后的x64或x86版本,用于增加系统特权。 除了规避UAC控制外,该库还创建并运行%TEMP%\ v.bat BAT脚本,该脚本将使用以下命令将先前创建的引导加载程序之一注册为服务:
sc create ServiceTool displayname= "ServiceFill" binpath= "C:\Windows\Tasks\Serviceflow.exe" start= "auto" sc start ServiceTool
在修改后的UACMe库中解码BAT脚本字符串- 创建并运行JScript脚本C:\ Windows \ Tasks \ bin.js。 它的任务是通过使用rundll32导出RnMod来启动A64.dll库。
- 在启动目录中创建快捷方式WORDICON.lnk 。 它的任务是在系统重新引导后启动sinter.exe引导加载程序。
- 在启动目录中创建Support.lnk快捷方式。 它的任务是在重新引导系统后运行bin.js JScript脚本。
反编译的主shellcode因此,在此阶段,两个引导加载程序已可靠地固定在系统中,我们将详细讨论其操作。
Lo2装载机
尽管分类,木马有不同的任务。 因此,
Serviceflow.exe文件具有看门狗角色。 它收集有关系统的信息:
- 用户名
- 电脑名称
- \ Program Files \和\ Program Files(x86)\目录的内容
- 作业系统版本
- 处理器数据-
并将结果写入log.txt文件。 它检查\ Windows \ Tasks \目录中是否存在
A64.dll和
sinter.exe文件 ,并在必要时从Skillsnew [。]顶级管理服务器下载它们,并代表当前用户启动它,从winlogon.exe进程中提取相应的令牌。
sinter.exe木马通过访问
hxxps://mystrylust.pw/confirm.php
向攻击者发出有关感染的信号,并将有关系统的预先收集的信息发送给Skillsnew [。]顶部。 然后,如果受害人的计算机更
hxxp://docs.google.com/uc?id=1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export=download
,它将在
hxxp://docs.google.com/uc?id=1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export=download
处接收customer.txt文件的内容
hxxp://docs.google.com/uc?id=1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export=download
。 该文件包含控制服务器car [。] Drivethrough.top的名称,与之进行进一步的交互。 可下载组件位于\ AppData \ Roaming \ InStore \目录中,它们的启动是使用任务计划程序提供的。
命令片段和任务模板的解密行恶意下载器工作的结果是
yty框架组件嵌入系统中,该组件允许提取有关受害者的更完整信息,包括具有指定扩展名的文件,被拦截的输入行,进程列表,屏幕截图。 我们将不在本文讨论的范围内考虑插件的操作。
检查其他类似的示例,我们在调试信息中找到了路径和项目名称:
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2 \ SingleV2 \ Release \ BinWork.pdb
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2
\ SingleV2_Task_Layout_NewICON \发布\ BinWork.pdb - D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2
\ SingleV2_Task_Layout_NewICON_N_Lnk \版本\ BinWork.pdb - D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2 \ SingleV3 \ Release \ WorkFile.pdb
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ Off \ Off_New_Api \ Release \ C ++ \ ConnectLink.pdb
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ Off \ Off_New_Api \ Release \ C ++ \ TerBin.pdb
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ yty 2.0-使用XP的AES块LOC只是Bit-Change_Name \ Release \ TaskTool.pdb
- D:\ Soft \ DevelopedCode_Last \ BitDefenderTest \ yty 2.0-使用AES块OFFS Just Bit \ Release \ C ++ \ MsBuild.pdb
- D:\ Soft \ DevelopedCode_Last \ yty 2.0 \ Release \ C ++ \ Setup.pdb
除了将木马程序连接到上述框架的“ yty 2.0”子字符串之外,我们还注意到了“ Lo2”子字符串,它可能是“ Loader 2”的缩写。
在2018年中之前版本的引导程序中,所有使用的行都存储在一个文件中的打开文件中。 在以下版本中,攻击者开始使用字符串加密。 从版本到版本,算法更改如下:
- 从2018年5月起:改行并编码Base64。
- 从2019年4月开始: 两次执行以前的步骤。
- 从2019年1月开始:在CBC模式下使用AES算法加密字符串并编码Base64。 用于解密的示例Python代码:
import base64 from Cryptodome.Cipher import AES aeskey = (0x23, 0xd4, 0x67, 0xad, 0x96, 0xc3, 0xd1, 0xa5, 0x23, 0x76, 0xae, 0x4e, 0xdd, 0xca, 0x13, 0x55) def aes_decrypt(data, aeskey): iv = bytes(list(range(0, 16))) key = bytes(aeskey) aes = AES.new(key, AES.MODE_CBC, iv) return aes.decrypt(data).decode().strip('\x00') def base64_aes_decrypt(data, aeskey): data = base64.b64decode(data) data = aes_decrypt(data, aeskey) return data
- 从2019年6月开始:使用给定的字节数组执行逐字符循环减法,使用UTF-8编码并编码Base64。 用于解密的示例Python代码:
subgamma = (0x2d, 0x55, 0xf, 0x59, 0xf, 0xb, 0x60, 0x33, 0x29, 0x4e, 0x19, 0x3e, 0x57, 0x4d, 0x56, 0xf) def sub_decrypt(data, subgamma): o = '' length = len(data) subgamma_length = len(subgamma) for i in range(length): o += chr((0x100 + ord(data[i]) - subgamma[i%subgamma_length]) & 0xff) return o def base64_utf8_sub_decrypt(data, subgamma): data = base64.b64decode(data) data = data.decode('utf-8') data = sub_decrypt(data, subgamma) return data
- 从2019年10月开始:使用给定的字节数组对每个字符进行循环修改的XOR,并对Base64进行两次编码。 XOR算法的独特之处在于,如果字符串字符的值与给定字节数组中字符的值匹配,则不需要XOR。 用于解密的示例Python代码:
xorgamma = (0x56, 0x2d, 0x61, 0x21, 0x16) def modxor_decrypt(data, xorgamma): o = '' length = len(data) xorgamma_length = len(xorgamma) for i in range(length): c = data[i] if c != xorgamma[i%xorgamma_length]: c = data[i] ^ xorgamma[i%xorgamma_length] o += chr(c) return o def base64_modxor_decrypt(data, xorgamma): data = base64.b64decode(data) data = modxor_decrypt(data, xorgamma) return data
在编写用于解密的脚本的过程中,我们发现某些单独的行无法解密。 但是后来发现,上述任何其他解密方法都适用于此类字符串。 在确保在每个样本中仅实现了一种解码数据的方法之后,我们得出的结论是,攻击者只是忘记删除未使用的行,或将其替换为用于下一版本恶意软件的正确加密的行。
引导加载程序样本之一中的行以各种方式加密,而在可执行文件中,只有一行此类错误始终掌握在研究人员手中:例如,在被遗忘的线路中屡屡出现入侵者的控制服务器,而这些入侵服务器以前是我们所不知道的。
网络基础设施的功能
为了完整起见,我们注意到一些有助于连接以后的分组攻击的特征:
- 大多数管理服务器是从提供商DigitalOcean,LLC(ASN 14061)租用的,位于阿姆斯特丹。
- 攻击者不会为不同的DNS名称使用相同的服务器:对于每个新域名,他们都希望保留一个新的专用主机。
- 大多数情况下,隐私服务会隐藏域所有者的注册数据。 为此使用了以下服务:WhoisGuard,Inc .; Whois隐私保护服务有限公司; Domains By Proxy,LLC; Whois隐私保护基金会。 在某些情况下,数据是可用的,您可以按照一般方法填写字段。
WHOIS域信息Burningforests [。] Com
WHOIS域信息云存储服务[。] Com- 最常用的是.top,.pw,.space,.live和.icu TLD。
结论
Donot Team的特点是在攻击的每个阶段都使用自己的工具。 一方面,缺乏试图在系统中仔细隐藏或掩盖其动作的尝试,另一方面使代码分析变得复杂。 对同一目标的
多次 攻击不仅表明对选定的受害者圈子有特殊的兴趣,而且还证实了所用战术和技术的低效率。
由正向技术公司的Alexey Vishnyakov
发表国际奥委会6ce1855cf027d76463bb8d5954fcc7bb-MS Word格式的引导程序
hxxp://plug.msplugin.icu/MicrosoftSecurityScan/DOCSDOC
21b7fc61448af8938c09007871486f58-MS Word格式的滴管
71ab0946b6a72622aef6cdd7907479ec-C中的Lo2加载器:\ Windows \ Tasks \ Serviceflow.exe
22f41b6238290913fc4d196b8423724d-C中的Lo2加载器:\ Windows \ Tasks \ sinter.exe
330a4678fae2662975e850200081a1b1-x86修改版的UACMe
22e7ef7c3c7911b4c08ce82fde76ec72-UACMe的x64修改版
技能新[。]顶部
hxxps://mystrylust.pw/confirm.php
hxxp://docs.google.com/uc?id = 1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export =下载
汽车[。] drivethrough.top
Burningforests [。] com
云存储服务[。] com