卡巴斯基:分析“三角测量行动”
The outstanding stealth of Operation Triangulation
事件回顾
2023年6月,网络安全公司卡巴斯基表示,其网络上的一些iPhone被黑客利用iOS漏洞入侵,该漏洞通过iMessage零点击漏洞安装恶意软件。此次攻击所涉及的零日漏洞(CVE-2023-32434和CVE-2023-32435),允许攻击者完全控制设备和用户数据,导致无需任何用户交互即可执行代码,并从攻击者的服务器下载其他恶意软件。随后,消息和附件将从设备中擦除。同时,有效负载留在后面,以root权限运行以收集系统和用户信息并执行攻击者发送的命令。
卡巴斯基将该攻击活动命名为“三角测量行动”(Operation Triangulation),并表示其始于2019 年,且目前仍在活跃中。
为了更好地了解“三角测量行动”(Operation Triangulation)背后的攻击者,卡巴斯基对其活动进行了深入剖析,结果发现,攻击者在秘密从受感染设备中窃取敏感信息的同时,还能极好地隐藏和掩盖其踪迹。
Operation Triangulation深入剖析
研究人员概述了Operation Triangulation的感染链:设备接收恶意iMessage附件,启动一系列漏洞利用,其执行最终导致启动TriangleDB植入。更详细地说,感染链可以用下图来概括:
该攻击框架的核心是一个名为TriangleDB的后门,攻击者利用CVE-2023-32434(一个可被滥用执行任意代码的内核漏洞)获得目标iOS设备的root权限后部署该后门。
除了TriangleDB植入的漏洞和组件外,感染链还包含两个“验证器”阶段,即JavaScript验证器和二进制验证器,这些验证器会收集有关受害设备的各种信息,并将其发送到C2服务器。然后,这些信息被用来评估植入TriangleDB的iPhone或iPad是否可以作为研究设备。通过执行这样的检查,攻击者可以确保他们的零日漏洞和植入物不会被摧毁。
JavaScript验证器
攻击链的起点是受害者收到不可见的 iMessage 附件,该附件会触发零点击漏洞利用链,旨在秘密打开包含模糊JavaScript和加密负载的唯一URL。该有效负载是JavaScript验证器,除了执行各种不同的算术运算(如Math.log(-1)或Math.sqrt(-1)),以及检查Media Source API、WebAssembly等组件的可用性外,还通过使用WebGL在粉色背景上绘制黄色三角形并计算其校验和,来执行称为“画布指纹识别”(Canvas Fingerprinting)的浏览器指纹识别技术。
【绘制三角形的代码】
【绘制出的三角形】
事实上,正是因为这个“三角形”,研究人员才把整个行动命名为“三角测量行动”。
运行该验证器后,它会进行加密处理并将收集的所有信息传输到backuprabbit[. ]com域上的另一个唯一URL,以便接收感染链的下一阶段。
二进制验证器
正如我们从感染链图中看到的,这个验证器是在部署TriangleDB植入物之前启动的。JavaScript验证器是一个脚本,与之相反,这个验证器是一个Mach-O二进制文件(因此得名二进制验证器)。启动时,它会使用AES解密其配置。这个配置是一个plist:
该plist文件包含一个必须由验证器执行的操作列表(如DeleteLogs、DeleteArtifacts等)。具体来说,它会执行以下操作:
- 从/private/var/mobile/Library/Logs/CrashReporter目录中删除崩溃日志,以清除可能被利用的痕迹;
- 在各种数据库(如ids-pub-id.db或knowledgeec .db)中搜索恶意iMessage附件的痕迹,然后删除它们。为了能够做到这一点,验证器的配置包含40个用于发送恶意imessage的Apple ID的MD5哈希值。研究人员成功破解了大部分哈希值,从而获得了攻击者控制的苹果ID电子邮件地址列表(如下所示):
- 获取在设备上运行的进程列表以及网络接口列表;
- 检查目标设备是否越狱。该验证器实现了对各种越狱工具的检查,包括Pangu、xCon、Evasion7、Electra、discover、checkra1n等等;
- 开启个性化广告跟踪;
- 收集有关受害者的广泛信息,如用户名、电话号码、IMEI和Apple ID;
- 检索已安装应用程序的列表。
有趣之处在于,该验证器在iOS和macOS系统上都实现了这些操作(如下所示):
研究人员还发现该验证器实现了一个未使用的操作,攻击者将其称为“PSPDetect”。
这个操作会从验证器的配置中检索一个文件列表(对于研究人员分析的验证器配置,这个列表是空的),检查它们是否存在于文件系统中,并生成一个找到的文件列表作为输出。
此操作名称中的缩写PSP可能意味着“个人安全产品(personal security product)”,或者更简单地说,是一种安全解决方案。因此,攻击者有可能会在macOS设备上启动此操作,以检测已安装的防病毒产品。
执行完所有这些操作后,验证器会进行加密处理,并将获得的数据(进程列表、用户信息等)发送到C2服务器。作为响应,服务器会返回TriangleDB植入。
日志线索
Operation Triangulation背后的威胁行为者不仅通过在感染链中引入两个验证器来进行隐形操作。事实上,他们对TriangleDB植入物的所有操作也都非常小心。这可以从研究人员对攻击者通过该植入程序向受感染设备发送的命令的分析中观察到。
在植入与C2服务器建立通信后,它会从C2服务器接收多个CRXShowTables和CRXFetchRecord命令。这些命令与可能显示感染链和/或恶意软件本身的痕迹的日志检索有关。检索到的一些文件包括:
- 崩溃日志文件(例如/var/mobile/Library/Logs/CrashReporter);
- 数据库文件(例如/private/var/mobile/Library/IdentityServices/ids-gossip.db)。这些数据库文件可能包含攻击者用来发送恶意iMessage的Apple ID。
一旦攻击者收到这些文件,他们就会将其从设备上删除,这样受害者就无法检查它们,也无法发现潜在的入侵迹象。在完成日志收集和删除后,攻击者会向植入程序发送多个CRXPollRecords命令,指示它定期从/private/var/tmp目录中渗漏文件。上载到C2服务器的文件的名称应符合下列正则表达式之一:
正则表达式 | 数据类型 |
^(kng|dky).+\.dat$ | 位置数据 |
^adr3.+\.dat$ | 关联数据 |
^sr6d.+\.(dat|srm)$ | 麦克风记录的数据 |
^S5L.+\.kcd$ | 密钥串(Keychain)数据 |
^ntc.+\.db2$ | 未知 |
^(\w[247F][023A][24BC]|\w[4AEF][349B][169D]){2}-\w[05AF][3468][124C]-4[123A][09AD][356A]-[89AB]\w\w\w-(\w[126A][24CE][348B]|\w[29DE][168D][156D]){3}$ | 未知 |
具有这些名称的文件包含由模块产生的执行结果。这些模块通过CRXUpdateRecord和CRXRunRecord命令上传到受感染的设备。
麦克风记录
最侵犯隐私的模块之一是麦克风录制模块,其名称为“msu3h”(研究人员推断3h代表三小时,默认录制时间)。在执行时,它会解密(使用源自GTA IV散列的自定义算法)其配置,但只有当电池电量超过10%时,它才会执行进一步的操作。
配置文件本身包含典型的配置数据,例如记录多长时间和用于加密记录的AES加密密钥,但也包含更具威胁性的参数,例如:
- suspendOnDeviceInUse:设置当设备屏幕打开时是否应该停止录制;
- syslogRelayOverride:设置捕获系统日志时是否录制音频。
录音使用Audio Queue API,声音块使用Speex编解码器进行压缩,然后使用AES进行加密。除了声音数据,每个录音还都包含诊断信息,它有一个四字节的类型标识符,具体如下所示:
标识符 | 信息 |
0x6265676E | 录音开始 |
0x736C726E | 由于syslog监控导致录音停止 |
0x6465766E | 由于设备屏幕打开导致录制停止 |
0x6964736E | 硬盘空间不足导致录制停止 |
0x656E646E | 录制完成 |
密钥串(Keychain)渗漏
由于未知的原因,攻击者决定添加一个额外的密钥串渗漏模块,尽管这样的功能已经存在于TriangleDB中。这个密钥串模块与TriangleDB中的逻辑相同,但主要基于iphone-dataprotection. keychainviewer项目的代码。
SQLite窃取模块
iOS上的许多应用都使用SQLite来存储它们的内部数据。因此,攻击者想方设法地实现能够从各种SQLite数据库窃取数据的模块也就不足为奇了。所有这些模块都具有相同的代码库,并且包含要执行的不同SQL查询。同样地,它们的配置是加密的。当它被解密时,只能找到一些标准变量,如文件路径、AES密钥、查询字符串等。
这些模块的代码相当奇特。例如,攻击者在fopen()函数周围实现了一个wrapper,添加了Z标志(表明创建的文件应该经过AES加密和zlib压缩),并与标准w(write)标志结合使用,如下图所示。
同样有趣的是,SQLite窃取模块包含针对不同iOS版本的三个代码分支:低于8.0、介于8.0和9.0之间、9.0及更高版本。
我们找到的每个模块都执行不同的SQL数据库查询。例如,有一个模块处理来自knowledgeec .db数据库的应用程序使用数据。另一个模块提取与照片相关的元数据,例如照片中是否有孩子,该人是男是女(见下图),以及从媒体文件中自动生成的文本。
攻击者对WhatsApp、SMS和Telegram的信息也表现出了浓厚兴趣,这一点也不足为奇——研究人员也发现了窃取这些数据的模块。
位置监控模块
这个模块在一个单独的线程中运行,并试图模拟被授权使用配置中指定的位置服务的bundle(例如/System/Library/LocationBundles/Routine.bundle)。除了使用GPS确定位置外,它还使用GSM,通过CoreTelephony框架检索MCC(MobileCountryCode),MNC (MobileNetworkCode),LAC(LocationAreaCode)和CID(CellID)值。
使用GSM相关数据的一个原因是在没有GPS数据的情况下估计受害者的位置。
结语
Triangulation背后的攻击者非常小心地避免被发现。他们在感染链中引入了两个验证器,以确保漏洞和植入程序不会被传递给安全研究人员。此外,麦克风录音可以调整为在屏幕被使用时停止。位置跟踪器模块可能不使用标准的GPS功能,而是使用来自GSM网络的元数据。
攻击者还表现出对iOS内部的深刻理解,因为他们在攻击过程中使用了未记录的私有API。它们还在一些模块中实现了对8.0之前iOS版本的支持。试想一下,这些模块在2015年之前就已被广泛使用,这表明这些模块的代码已经被使用了很长时间。
最后且最重要的是,这次攻击中使用的一些组件包含的代码可能表明它们也针对macOS系统,尽管截至目前,尚未在macOS设备上发现Triangulation痕迹。
原文链接:
https://securelist.com/triangulation-validators-modules/110847/