概述
APT29又叫Nobelium、CozyBear,归属于俄罗斯,从2008年一直以政府、外交官、政治和智库部门。在最近发现该APT组织开始利用合法软件通过侧加载来加载恶意dll文件,并滥用合法的web服务(比如Dropbox、Google Driver)作为C&C通信达到逃避自动分析软件的检测。
2. 流程图
3. 详细分析
此次攻击使用EnvyScout释放器,它是一个嵌入恶意javascript脚本的HTML文件,javascript脚本的主要功能未解密和释放下一阶段的有效负载。一旦HTML文件被指向,JavaScript代码就会解密加密的数据然后将结果存保存到指定目录中。在这种情况下,由受害者手动解压并执行。
1. PDF诱饵文件
该诱饵文件为鱼叉式钓鱼电子邮件中的附件。从PDF内容上看似乎是针对驻巴西的外国大使馆。文中很明显把巴西的英文单词”Brazil”编写错误成”
Brzail”。文档中所有的链接都指向同一个URL:”
https://porodicno.ba/wp-content/Agenda.html”。 文件” Agenda.html”是 EnvyScout
,一个恶意 HTML 文档。
2. EnvyScout
EnvyScout是Nobelium独有的恶意程序,主要通过鱼叉式钓鱼电子邮件的附件传递给Nobelium的目标。
EnvyScout为恶意HTML文件, 恶意ISO文件混淆后的数据被硬编码保存到javascript脚本内,当用户访问该html文件时,javascript解密ISO文件并写入到受害者计算机上。
在javascript脚本中变量d保存混淆后的恶意ISO文件数据,解密方法比较简单将变量d中的每一个值减去17后得到一个名为”
Agenda.iso”的文件。
第一次尝试使用方法msSaveOrOpenBlob来保存恶意ISO文件,如果受害者打开恶意HTML文件的浏览器不支持该方法则采用第二种方法,
3. dll侧加载
当受害者下载并保存了文件”Agenda.iso”,还需要受害者手动解压并执行快捷方式来启动恶意程序。为了迷惑受害者,攻击者使用了测侧加载技术。
每个文件的功能如下:
1 | _ :加密的payload,解密后为一个名为GoogleDriver的恶意程序 |
侧加载执行流程如下图:
为了绕过一些程序对模块ntdll和模块wininet对关键函数的hook,
在恶意程序vctool140.dll手动加载这两个模块,并创建一个文件映射对象来覆盖模块的代码段。
一般安全软件对关键函数进行hook都是在内存进行而不修改原始文件,因此使用原始文件来覆盖内存就可以绕过HOOK。
恶意程序解压缩文件”_”为x64 .Net文件并在内存中执行它。该文件使用的压缩算法为”Microsoft Zip(MSZIP)”,在这里通过Cabinet_43来解压缩。解压缩完成后,通过实例化CLR并使用IcorRuntimeHost接口在内存中加载并执行。
4. GoogleDriver恶意程序
文件GoogleDriver编译时间为” 2022/6/29 23:51:59”,并伪装成Google产品。
该文件使用Google Driver API与Google进行通信,以便上传和下载文件到Google Driver。与Google进行通信的相关信息和加密解密使用的密钥以硬编码的形式存放在程序内。恶意程序和Google进行通信相关的字段为ClientID、ClientSecret和RefreshToken;加解密相关字段为XorKey、AesKey和AesIV。
与GoogleDriver通信
恶意程序与GoogleDriver通信使用过的key和token都已经硬编码在程序内。
GoogleDriver上传或下载文件
恶意程序上传文件到GoogleDriver时首先将文件异或加密,使用的密钥为字段Xorkey.
检测当前用户ID是否有有效payload下载。有效Payload在Google中显示为PDF文件,该文件是使用AES-CBC方式加密,解密后为.Net程序集文件。
检测持久性
恶意程序每次被运行时,都会检测注册表项”AgendaE”是否存在与注册表”
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中,如果不存在则创建该注册表项,设置值为”%Appdata%\agenda.exe”,并将文件”_”、”agenda.exe”、”vcruntime14.dll”和”vctool140.dll”拷贝到目录%Appdata%中。
获取用户名并计算其hash用于识别受害者。
上传用户信息
获取受害者机器的用户名、机器名、当前正在运行的进程和网络接口信息等等,上传到Google Driver并保存文件名”{受害者标识ID}.txt”。
下载并执行payload
从Google Driver中下载可用的payload并创建新的线程,在线程中解密和在内存中执行payload。
以一般的.Net恶意程序使用Load来加载程序集的方式不一样,该样本使用方法将”GCHandle.Alloc”来获取数组对象data的gc句柄,再通过”
AddrOfPinnedObject”来获取data的指针,将该指针指向的内存设置为可执行内存,最后用GetDelegateForFunctionPointer将data指向的内存作为函数来执行。
Payload解密时使用AES_CBC方式解密,解密代码如下:
5. IOC
5f6d2af2392a37fae04c0f8c911ccc00
9f9d2499f91623324c124d1b3467428d
b3b95c31fd3239a8b544ac7928e90895
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\AgendaE
porodicno[.]ba/wp-content/Agenda.html
6. ATT&CK矩阵
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1566.001 | Phishing: Spearphishing Attachment | 通过鱼叉式钓鱼电子邮件 |
Execution | T1204.001 | User Execution: Malicious Link | 受害者执行恶意快捷方式 |
T1204.002 | User Execution: Malicious File | 受害者执行恶意文件 | |
T1059.007 | Command and Scripting Interpreter: JavaScript | 使用HTML smuggling技术解密数据 | |
Defense Evasion | T1036 | Masquerading | 伪装成google相关产品 |
T1622 | Debugger Evasion | 重新映射ntdll的代码段 | |
T1140 | Deobfuscate/Decode Files or Information | 异或加密收集到的用户信息 | |
T1027 | Obfuscated Files or Information | 文件”_”被加密 | |
T1553.002 | Subvert Trust Controls: Code Signing | 滥用具有数字签名的合法文件 | |
T1112 | Modify Registry | ||
Discovery | T1082 | System Information Discovery | 收集系统信息、网络接口信息 |
T1057 | Process Discovery | 收集正在运行的进程 | |
Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | 设置注册表自启动项 |
Command and Control | T1105 | Ingress Tool Transfer | 下载.Net程序集 |
T1071.001 | Application Layer Protocol: Web Protocols | 使用https与Google Driver API通信 |
7. 参考
https://cluster25.io/2022/05/13/cozy-smuggled-into-the-box/
https://unit42.paloaltonetworks.com/cloaked-ursa-online-storage-services-campaigns/
https://www.microsoft.com/security/blog/2021/05/28/breaking-down-nobeliums-latest-early-stage-toolset/
最后更新: 2024年03月31日 13:05:36
本文链接: http://shxi.cc/post/1cc03acb.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!