2020年夏季发现了一个具有高度针对性的工业间谍软件活动,其工具集包含未知的C++模块。恶意软件作者将工具集命名为“MT3”,研究人员将工具集命名为“MontysThree”。该恶意软件包括一组用于持久控制的C++模块,使用隐写术从位图中获取数据、解密配置任务(屏幕截图、获取目标指纹、获取文件等)等等。该恶意软件使用自定义隐写术、自定义基于XOR的加密、3DES和RSA算法进行解密和通信。传播方式RAR自解压存档中的初始加载程序模块,只有PE文件(伪装的.pdf或.doc文件),其中之一(MD5da49fea229dd2dedab2b909f24fb24ab)名为“Списоктелефоновсотрудников2019.doc”(“员工电话列表”,俄语),另外还有“Techtask.pdf”和“invitro-106650152-1.pdf”。后者是俄罗斯医学实验室的名称。SFX脚本如下:Path=%TEMP%\SavePathSetup=rundll32.exe"invitro-106650152-1.pdf",OpenSilent=1Overwrite=1UUpdate=UDelete=invitro-106650152-1.pdf执行后,SFX脚本会调用%TEMP%目录,并将其删除。技术分析执行流程如下:下表列出了四个模块及其功能,它们共享一个通用的通信规范。在处理配置文件和执行日志等共享数据时,恶意软件会初始化线程本地存储(TLS)中的结构。入口点DllEntryPoint()的工作方式类似于构造函数,该模块必须导出一个名为Open()的函数,该函数不带任何参数(但可以解析命令行)并返回一个四字节错误代码。1.加载器模块将加密数据的位图文件名作为参数提供给加载器,加载器从像素数组中解密出下一个程序。在第一次迭代中,它提取隐写参数数据。IID、IParam和ISize参数保存在像素数组的前384个字节中,因此只需要每个像素数组字节的最后一位。该模块使用这些字段来收集一个48字节的配置结构,确定下一个解密阶段。提取隐写参数后,使用两步算法对下一个程序进行解密。首先,IParam算法从像素数组的字节中选择位。如果IID等于2,则收集的字节使用四字节的轮密钥,前四个字节的解密初始密钥被硬编码为0x23041920。下一个字节的异或公式为:key^=8*(key^(key<<20))解密结果不注入进程内存,而是生成一个名为msgslang32.dll的文件放在磁盘上。加载器使用WindowsAPI函数LoadLibraryW()和GetProcAddress()来运行下一阶段的Open()函数。2.内核模块内核模块包含三个加密密钥,用于配置解密和C2通信。RSA公钥和私钥分别作为PUBLICKEYBLOB和PRIVATEKEYBLOB存储在.data部分,用于加密C2通信和解密3DES密钥。第三个3DES密钥也以加密形式存储在.data部分中。该密钥用于解密包含XML配置的.cab文件,模块使用Window的标准程序“expand.exe”解压.cab。XML配置包含恶意软件的各种“任务”,例如对目标进行指纹识别、捕获屏幕截图、从%USERPROFILE%、%APPDATA%、%APPDATA%\Microsoft\Office\Последниефайлы的文档列表中获取扩展.doc、.docx、.xls、.xlsx、.rtf、.pdf、.odt、.psw、.pwd。Последниефайлы翻译成俄语是“最近的文件”。配置包含任务计划(屏幕截图)、访问令牌、感兴趣的目录和扩展:发现俄语字符串,例如“Снимокрабочегостола”(桌面快照)、“Системнаяинформация”(系统信息)、“Времявыхода”(退出时间)。解密后的配置结构如下:处理指令的主要类是CTask。CTask的IoControl()方法负责处理相应的任务,可以运行以下方法:3.通信模块HttpTransport存在于内核模块.text部分的四个加密数据块中。当内核需要通信时,它会解密模块并运行Open()函数,传递命令行参数。根据从内核模块传输的参数,该模块可以使用RDP、WebDAV、Citrix和HTTP协议上传或下载内容。HttpTransport还实现了使用用户令牌从Google和Dropbox公共服务下载数据。在HTTPGET/POST请求下,恶意软件将使用WindowsAPIHTTP函数从URL接收隐写位图图像。上述通信协议本身并没有在模块内部实现。恶意软件利用安装在计算机上的Windows程序(如RDP、Citrix客户端和InternetExplorer)进行操作。可以通过剪贴板将URL粘贴到浏览器中;等待并再次通过剪贴板接收结果。Dropbox和Google数据的上传和下载依赖于另一个原理:使用自定义类CSimpleHttp来验证和发送HTTP请求。总结恶意软件通常以政府实体、外交官和电信运营商为目标,而像MontysThree这样的工业间谍活动则不太常见。在传播方式和持久化控制方式上,其复杂度无法与顶级APT相提并论。恶意软件开发方面(同时记录到RAM和文件、将加密密钥保存在同一个文件中、在远程RDP主机上运行不可见的浏览器)还不成熟。投入MontysThree的代码量和工作量是巨大的:在RSA加密下存储3DES密钥,自定义隐写术以逃避IDS,并使用合法的云存储来隐藏C2流量。IOCsLoader:1B0EE014DD2D29476DF31BA078A3FF480976*42A06D2D8A34E9B6D38D45AE42A2AA414B30934893864A961B71F91D98Kernel:A221671ED8C3956E0B9AF2A5E04BDEE33A885062DAA36AE3227F16718A5B2BDB3AFA43E1BC578460BE002EB58FA7C2DEHttpTransport:017539B3D744F7B6C62C94CE4BCA444F501E91BA1CE1532D9790FCD1229CBBDAD6FB78D16DFE73E6DD416483A32E1D72DomainsandIPs:autosport-club.tekcities[.]comdl10-web-stock[.]rudl16-web-eticket[.]rudl166-web-eticket[.]rudl55-web-yachtbooking[.]xyz原文链接:securelist
