MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

  • A+
所属分类:安全新闻

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

在2020年夏季,我们发现了一个未知的多模块C ++工具集,该工具集可用于可追溯到2018年的针对性强的工业间谍攻击。最初,我们对该恶意软件感兴趣的原因是其稀有性,该活动的明显针对性以及存在在代码,基础架构或TTP级别与已知的活动没有明显相似之处。迄今为止,我们认为此工具集及其背后的参与者是新的。恶意软件作者将工具集命名为“ MT3”。在此缩写之后,我们将工具集命名为“ MontysThree”。

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

根据MT3的缩写,我们将工具集命名为Montys3



该恶意软件包括一组用于持久性的C ++模块,使用隐写术从位图获取数据,解密配置任务(制作屏幕截图,对目标进行指纹识别,获取文件等)及其执行以及与主要合法公众的网络通信。云服务,例如Google,Microsoft和Dropbox。MontysThree配置为搜索存储在当前文档目录和可移动媒体中的特定Microsoft Office和Adobe Acrobat文档。该恶意软件使用自定义隐写术和多种加密方案:除了基于XOR的自定义加密外,这些模块还依赖3DES和RSA算法进行配置解密和通信。

MontysThree包含具有适当俄语语言和配置的自然语言工件,这些工件寻找仅在Cyrilic本地化Windows版本上存在的目录。尽管大多数外部公共云通信使用基于令牌的授权,但某些示例包含基于电子邮件的帐户,这些帐户伪装成中文外观。我们认为这些名称是错误的标志。更多文物表明该恶意软件由说俄语的演员开发,并且针对西里尔Windows版本。

恶意软件如何传播


初始加载程序模块散布在RAR自解压档案(SFX)中,其名称与员工的电话清单,技术文档和医学检验结果相关。没有诱饵,只有PE文件(伪装.pdf或.doc文件),但是这类标题现已成为鱼叉式网络钓鱼的典型技巧-“企业信息更新”或“医学分析结果”。其中一个装载程序
MD5 da49fea229dd2dedab2b909f24fb24ab)
的名称为
“Списоктелефоновсотрудников2019.doc”(“员工电话清单”,俄语)。其他装载机的名称为“ Tech task.pdf”和“ invitro-106650152-1.pdf”。后者是俄罗斯医学实验室的名称。所有这些似乎都是典型的鱼叉式钓鱼技巧。SFX脚本如下:

Path=%TEMP%SavePathSetup=rundll32.exe "invitro-106650152-1.pdf",OpenSilent=1Overwrite=1Update=UDelete=invitro-106650152-1.pdf

在执行时,SFX脚本调用%TEMP%目录中已解压缩的加载器可执行文件的Open()函数(我们将返回到此导出的名称)并将其删除。从文件名来看,它很可能模仿医学分析结果,因为“ Invitro”是俄罗斯著名的医学实验室。该初始PE32是第一个加载程序模块。

模块如何工作和交流

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

MontysThree模块的执行流程



上图显示了MontysThree模块的整体执行流程。下表列出了四个模块及其功能。这些模块共享通用的通信约定。当处理诸如配置和详细执行日志之类的共享数据时,该恶意软件会初始化线程本地存储(TLS)中的结构,而该线程又称为堆结构。有趣的是,除RAM外,执行日志还存储在磁盘上的文件中,并用一字节XOR加密。


入口点DllEntryPoint()的工作方式类似于构造函数,后者使用TlsAlloc()分配结构并将其保存在全局变量中。模块必须导出一个名为Open()的函数,该函数不带任何参数(但可以解析命令行)并返回一个四字节的错误代码。


模块名称

特征

Loader

该反检测模块负责定制隐写术,内核模块解密。

Kernel

该内核(主)模块负责解密config XML,然后解析并执行其中的相应任务。

HttpTransport

网络模块,用于与Google,Microsoft,Dropbox合法的公共云服务以及WebDAV源进行通信。该模块能够使用合法客户端以幼稚的方式通过RDP和Citrix发出请求。

LinkUpdate

持久性模块是Windows快速启动.lnk修饰符。使用这种幼稚的持久性方法,用户可以每次与Windows快速启动工具栏上的浏览器一起自行运行Loader模块。


现在,让我们看一下开发人员如何将强大的现代加密标准与基于XOR的自定义标准混合在一起。



任务

使用加密

Steganography

为了解密内核模块,初始加载器使用自定义算法。

Logs encryption

恶意软件日志同时存在于内存和磁盘上的加密文件中。在RAM中,开发人员将日志以纯文本格式存储,在磁盘上,他们使用一字节XOR。

Config encryption

内核模块使用强大的加密算法。配置数据使用3DES加密,密钥使用RSA加密。所有密钥(RSA公钥/私钥以及加密的3DES)都存储在模块的.data节中。

Network module encryption

最初加密的HttpTransport由存储在内核模块中的四个二进制Blob组成。内核将它们串联起来,并使用基于XOR的自定义算法对其进行解密。使用四个字节长度的循环密钥

通讯加密

加密算法是RSA,它使用存储在内核模块.data节中的相同公钥和私钥。



加载器模块:位图解密器和下一个启动器


如果包含隐写术加密数据的位图文件名作为参数提供给加载程序,则加载程序将从像素数组解密下一个上载程序。在第一次迭代中,它提取隐写参数数据。为此,算法采用字节的最后位。

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动


IID,IParam和ISize参数保留在像素阵列的前384个字节中,这意味着仅需要每个像素阵列字节的最后一位。结果,该模块使用这些字段收集了48个字节的隐秘配置结构,以确定下一个解密阶段。

领域

抵消

特征

IID

0x00

确定一个或两个解密层将应用于以下像素阵列。

IParam

0x04

确定像素数组字节中的哪些位将形成下一个内核模块。

大小

0x28

解密后的内核模块的大小。


提取隐写参数后,使用两步算法对下一个上载程序进行解密。首先,IParam算法从像素阵列的字节中选择位。然后,如果IID等于2,则对收集到的字节应用使用四字节轮回密钥的自定义除错操作。前四个字节解密的初始密钥的硬编码值为0x23041920。然后,下一个字节的舍入XOR键的公式为:

key ^= 8 * (key ^ (key << 20))

我们认为这种隐写术算法是定制的,而不是从某些开源第三方存储库中获取的。令人惊讶的是,解密结果并未注入到某个进程的内存中,而是作为名为msgslang32.dll的文件放置到磁盘上。然后,加载程序仅使用Windows API函数LoadLibraryW()和GetProcAddress()来运行下一个stager的Open()函数,如我们先前在加载程序模块中看到的那样。

内核模块:配置解密器和任务分配器


内核模块包含三个用于配置解密和C2通信的加密密钥。公共和私有RSA密钥分别以PUBLICKEYBLOB和PRIVATEKEYBLOB的形式存储在.data节中。这些用于加密C2通信并解密3DES密钥。第三个3DES密钥也以加密形式存储在.data节中。此密钥用于解密包含XML配置的嵌入式.cab存档。要解压缩.cab存档,该模块使用Window的标准系统实用程序“ expand.exe”。我们将在HttpTransport模块中看到另一种常见的软件用法。

XML配置包含有价值的数据,可帮助我们了解广告系列运营商的兴趣。它使用针对恶意软件的各种“任务”进行组织,例如使用其操作系统版本对目标进行指纹识别,处理列表并捕获屏幕截图;而且还会从%USERPROFILE中的几个最新文档目录中获取扩展名为:
.doc,.docx,.xls,.xlsx,.rtf,.pdf,.odt,.psw,.pwd的任何扩展名的用户最新文档列表%和%APPDATA%,包括%APPDATA% Microsoft Office Последниефайлы。此文件夹名称翻译成俄语的“最近文件”,表明该恶意软件针对西里尔本地化的Windows版本。

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动


Config包含任务计划(屏幕截图),访问令牌(此处为Dropbox,已编辑),感兴趣的目录和扩展。一个目录仅在Cyrillic Windows本地化版本上存在。

我们观察到了一些西里尔文字字符串,例如:
“Снимокрабочегостола”(桌面快照)
“Системнаяинформация”(系统信息)
“Времявыхода”(退出时间)

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

配置任务描述以MT3D开头,并包含俄语中的适当简短短语


解密后的配置结构如下:



领域

尺寸

内容

Magic

4 bytes

MT3D。所有解析的文件都必须将此前缀作为有效前缀

Creation time

4 bytes

时间戳记,任务配置创建时间存储为大纪元时间

Header size

4 bytes

标头大小必须大于18。观察到的值例如为0x7E

XML size

4 bytes

XML任务描述必须大于零。观测值例如是0x662D

XML body

XML大小

XML格式的任务说明和时间表


尽管我们查看的示例不包含RTTI信息,但执行日志使我们能够恢复C ++类名。内核模块将配置中的任务解析到内存后,处理指令的主要类是CTask。CTask的IoControl()方法负责处理相应的任务,并依次运行以下方法:

CTask方法

特征

MainIoControl()

XML中“主要”任务的处理程序。如果执行RESET命令,则将删除用作“管道”的文件。此处的任何其他命令将被记录,但不会执行

FileIoControl()

使用PUT,DEL,FIND,WATCH,WATCH_REMOVABLE,RUN和LOGS子命令执行“文件”任务的处理程序

SysInfoIoControl()

带有SCREENSHOT,INFO和TASKLIST子命令的“ SysInfo”任务的处理程序

HttpIoControl()

使用SENDRECV子命令的“ Http”任务的处理程序

GDriveIoControl()

使用SENDRECV子命令的“ GDrive”任务的处理程序

DropboxIoControl()

使用SENDRECV子命令的“ Dropbox”任务的处理程序


用于外部通信的所有方法都首先解密HttpTransport模块,然后使用它传输经过RSA加密的相应数据。使用的RSA密钥与用于解密3DES配置密钥的上述密钥相同。在单独的Window过程中,恶意软件将监视是否插入了USB设备,以搜索感兴趣的文件。

HttpTransport模块:网络任务


HttpTransport模块在内核模块的.text部分中以四个加密的数据块形式存在。当内核需要通信时,它会解密此模块,并像通常的MontysThree一样,运行Open()函数,并传递命令行参数。

根据从内核模块发送的参数,模块可以使用RDP,WebDAV,Citrix和HTTP协议上载或下载内容。HttpTransport也实现了使用用户令牌从Google和Dropbox公共服务下载数据。在HTTP GET / POST请求的情况下,该恶意软件将使用Windows API HTTP相关功能从相应URL接收隐写位图图片。

前述通信协议本身未在模块内部实现。恶意软件作者利用目标计算机上已经安装的合法Windows程序(如RDP,Citrix客户端和Internet Explorer)进行操作。例如,该模块执行任务以将一些数据发送到URL并通过RDP连接接收答复,如下所示:编辑.rdp文件以在远程计算机上静默运行Internet Explorer;通过剪贴板将URL粘贴到浏览器中;等待并通过剪贴板将内容粘贴到打开的网页上;等待并再次通过剪贴板接收结果。

为了复制数据,该恶意软件实际上会发送Ctrl + C,Ctrl + V和Ctrl + A。也许这是我们第一次看到这样的“ RDP通信”方法。Citrix通信是通过类似的过程完成的:恶意软件没有实现协议,而是搜索XenApp pnagent.exe的Windows Quick Launch .lnk,远程运行Internet Explorer,并使用特殊的键盘快捷键通过剪贴板与之通信。

Dropbox和Google数据的上载和下载依赖于另一个原理:其实现使用自定义类CSimpleHttp进行身份验证并发送HTTP请求。对于WebDAV通信,开发人员只需使用“ net use” Windows命令即可。

链接更新


该辅助模块负责在主机上实现持久性。当用户使用修改后的链接执行加载程序时,它将在Windows快速启动面板中更改.lnk文件,以与合法应用程序(例如浏览器)一起运行加载程序。

谁是该恶意软件的幕后黑手


正如我们在开始时提到的那样,到目前为止,在TTP,基础架构或恶意软件代码方面,我们还没有发现与已知活动的相似之处或重叠之处。到目前为止,我们将这项活动和MontysThree的使用归因于新演员。一些样本包含用于与公共云服务进行通信的帐户详细信息,这些帐户伪装成中文。考虑到所有上述的Cyriclic人工制品,我们认为这些帐户名称是错误的标志。

我们假设MontysThree背后的演员既会说俄语又会讲俄语。用于传播恶意软件的RAR SFX归档文件的某些文件名是用俄语编写的,并引用了俄罗斯医学实验室的名称,用于诱使用户打开文件。XML配置展示了用俄语编写的数据字段和Windows标题,以及Windows的Cyrilic本地化版本中存在的特定文件夹路径。我们还在恶意软件的英文日志消息字符串中看到了一些语法错误。

总结一下


通常,我们会看到针对性恶意软件,这些恶意软件主要针对政府实体,外交官和电信运营商,这对于政府资助的参与者而言是丰硕的。像MontysThree这样的工业间谍案要少得多。

就传播,持久性方法而言,总体上的营销活动复杂度与顶尖的APT参与者没有可比性。而且,恶意软件的某些方面(同时登录RAM和文件,将加密密钥保留在同一文件中,在远程RDP主机上运行不可见的浏览器)在恶意软件开发方面似乎还不成熟和业余。

另一方面,在MontysThree中的代码量以及因此投入的精力是巨大的。该工具集展示了一些精通技术的决策:在RSA加密下存储3DES密钥,避免IDS的自定义隐写术以及使用合法的云存储提供商隐藏C2流量。

文件哈希


Loader
1B0EE014DD2D29476DF31BA078A3FF48
0976C442A06D2D8A34E9B6D38D45AE42
A2AA414B30934893864A961B71F91D98

Kernel
A221671ED8C3956E0B9AF2A5E04BDEE3
3A885062DAA36AE3227F16718A5B2BDB
3AFA43E1BC578460BE002EB58FA7C2DE

HttpTransport
017539B3D744F7B6C62C94CE4BCA444F
501E91BA1CE1532D9790FCD1229CBBDA
D6FB78D16DFE73E6DD416483A32E1D72

域和IP


autosport-club.tekcities[.]com
dl10-web-stock[.]ru
dl16-web-eticket[.]ru
dl166-web-eticket[.]ru
dl55-web-yachtbooking[.]xyz


文章翻译自:securelist


MontysThree:带有隐写术和俄罗斯语言的工业间谍活动



推荐文章++++

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

*电信诈骗手段翻新,制作“安全防护”冒充北京警方APP

*94名电信诈骗嫌疑犯从欧洲被押解回国

*史上最强技术电信诈骗蔓延!无法防范!只能等死!


MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

本文始发于微信公众号(黑白之道):MontysThree:带有隐写术和俄罗斯语言的工业间谍活动

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: