Mandiant 托管防御服务产品以主动威胁搜寻计划而被人们所熟知,旨在保护客户免受绕过传统检测机制的高级威胁参与者工具、策略和技术的侵害。2022 年 7 月,在一家媒体行业公司的主动威胁搜寻工作中,Mandiant Managed Defense 揪出了被 UNC4034 组织所利用的新一轮网络钓鱼活动。
Mandiant 认为 UNC4034 与朝方的几个组织有重叠,其通过 WhatsApp 即时通讯服务与受害者建立了联系,并引诱其下载恶意 ISO 包。
然而 Mandiant Intelligence:Staging Directories 检查发现(通过搜索写入常用目录的异常文件),其明面上有提到虚假的工作机会、但实质上是利用 PuTTY 来部署 AIRDRY.V2 木马后门。
PuTTY 是一款开源的 SSH 与 Telnet 客户端,最初线索显示器下载了名为 amazon_assessment.iso 的档案文件。
而从 Windows 10 开始,系统已能够通过双击自动加载虚拟光驱。与 RAR 等其它格式相比,这减少了查看嵌入文件所需的工作量。
通过 Mandiant Managed Defense 对主机展开深入调查,可知 UNC4034 通过电子邮件向受害者忽悠可提供在亚马逊工作的机会而建立联系。
随后该组织会利用 WhatsApp 与之通信并传送 amazon_assessment.iso 文件,且里面有个可执行文件(PuTTY.exe)和一个文本文件(Readme.txt)。
随着恶意 PuTTY 在目标主机上被执行,受害者的机器也被植入了后门,Mandiant 识别其为 AirDry 的一个变种。
尽管 Mandiant Managed Defense 早在 7 月 5 日就调查到了入侵,并在潜在的后门部署前控制住了主机。
但更早的 6 月 27 日,VirusTotal 就已经发现了同名的 PuTTY 可执行文件。
此外 Mandiant 发现了第二个名为 amazon_test.iso 的 ISO 存档,可知其于 6 月 17 日被 VirusTotal 数据库给收录。
类似构造的恶意软件,最终都是为了加载 AirDry.V2 后门这个有效载荷。钓鱼手段方面,攻击者加装自己是亚马逊的招聘评估人员。
通过分析 ISO 镜像中的文件,可知两者带有相同的木马化 PuTTY 可执行文件、以及位于自述文件中的服务器端 IP 地址。
每个样本中包含的恶意代码,会将嵌入式有效载荷写入磁盘并启动,但不同样本还可能将木马插入到代码中的不同位置。
比如 VirusTotal 检出的样本,就看到了被插入 ssh2_userauth_process_queue 函数中的恶意代码(源文件在 putty-0.77\ssh\userauth2-client.c)。
与公钥或键盘交互等其它验证方法不同的是,该代码位于负责执行密码验证的函数部分。一旦用户建立连接并输入他们的账密,恶意代码就会被执行,而无论身份验证的结果到底如何。
此外两个样本中丢弃和执行有效负载的恶意代码部分几乎相同:
合法的 Windows 可执行文件 C:\Windows\System32\colorcpl.exe 被复制到了 C:\ProgrAMData\PackageColor 这个新目录。
嵌入的有效负载则被写入了 C:\ProgramData\PackageColor\colorui.dll,期间可观察到如上图所示的劫持与命令启动。
接下来被执行的 colorcpl.exe 二进制文件则来自 C:\Windows\System32\cmd.exe /c start /b C:\ProgramData\PackageColor\colorcpl.exe 0CE1241A44557AA438F27BC6D4ACA246 。
不过在 VirusTotal 的示例中,cmd.exe 并未用于启动 colorcpl.exe —— 因为 Windows API 函数 WinExec 会执行上述命令。
两种情况下,传递过来的 colorcpl.exe 命令行参数,都与 Windows 可执行文件的合法功能无关。相反,每个参数都被恶意的动态链接库所使用。
先是通过 schtasks.exe 为 C:\ProgramData\PackageColor\colorcpl.exe 建立持久性,然后借助名为PackageColor 的计划任务,在每天上午 10:30 执行该二进制文件。至于 colorui.dll 样本,检测发现它是由商业软件保护程序 Themida 打包的。
解压后的样本,包含了揭示其用途(ShellCodeLoader)的嵌入式文件路径 ——
W:\Develop\aTool\ShellCodeLoader\App\libressl-2.6.5\crypto\cryptlib.c
—— 两个样本都包含了一个名单 DAVESHELL 的相同 shellcode 有效负载。
然后使用基于 XOR 的自定义算法和动态生成的密钥对有效负载进行解密可得如上图所示的字符串。
Mandiant 指出,包含的该密钥,也可作为一种反分析机制 —— 若缺少正确的密钥,则执行 DLL 时不会触发任何重要的操作。