卡巴斯基全球研究与分析团队(GReAT)推出了一种新的轻量级方法来检测复杂的iOS间谍软件,包括Pegasus、Reign 和Predator等臭名昭著的威胁。

研究人员在1月16日发布的一份咨询报告中表示,他们重点分析了之前被忽视的取证工件Shutdown.log,该工件存储在iOS设备的sysdiagnose存档中,并保留每次重新启动会话的信息。与Pegasus相关的异常现象在重启期间变得明显。发现了阻碍重新启动的“粘性”进程的实例,特别是与Pegasus相关的进程。然后,更广泛的网络安全社区的观察证实了他们的观点。对Shutdown.log中Pegasus感染的进一步分析揭示了一个常见的感染路径“/private/var/db/”,类似于Reign和Predator引起的感染中看到的路径。卡巴斯基研究人员表示,该日志文件有可能识别与这些恶意软件家族相关的感染。

为了帮助用户对抗iOS间谍软件,卡巴斯基专家还开发了一个在GitHub上共享的自检实用程序。该Python3脚本适合macOS、Windows和Linux用户,有助于提取、分析和解析Shutdown.log工件。

卡巴研究团队称,由于iOS生态系统的性质,调查此类案例可能会很复杂、成本高昂或耗时。因此,相关威胁往往不会被公众发现。迄今为止,分析iOS移动感染的常用方法是检查加密的完整iOS备份,或分析相关设备的网络流量。然而,这两种方法都很耗时或需要高水平的专业知识,这限制了它们的使用。通过分析,他们发现感染活动在意外的系统日志 Shutdown.log中留下了痕迹,该日志文件是任何移动iOS设备上都可用的系统日志文件。由于检测方法在其分析的几种感染中是一致的,因此卡巴认为应该更详细地剖析和理解此日志文件,因为它可以用作检测移动恶意软件的另一种方法。

iOS工件概述:Shutdown.log

Shutdown.log是在iOS设备上创建的基于文本的日志文件。每个重新启动事件都与多个环境特征一起记录在此文件中。在查看了数十个此类日志文件后,卡巴研究人员找到可以追溯到几年前的条目,这可以提供丰富的信息。

当用户启动重新启动时,操作系统会在重新启动之前尝试正常终止正在运行的进程。如果重新启动活动开始时“客户端”进程仍在运行,则会记录其进程标识符(PID)和相应的文件系统路径。日志条目指出这些进程阻止了正常重新启动,并且系统正在等待它们终止。为系统事件提供UNIX时间戳,指示内存缓冲区已刷新以准备操作系统完全关闭。

iOS Shutdown.log文件中的示例片段

与取证设备成像或完整iOS备份等更耗时的获取方法相比,检索Shutdown.log文件相当简单。日志文件存储在sysdiagnose(sysdiag)存档中。

Sysdiag可以被认为是系统日志和数据库的集合,可以出于调试和故障排除的目的而生成这些日志和数据库。生成sysdiag的方法可能因iOS版本而异。尽管如此,该存档可以在操作系统常规设置中找到,特别是在“隐私和分析”下,尽管确切的位置名称可能因iOS版本而异。

存档的创建速度相对较快,通常只需要几分钟。结果是一个大小约为200-400MB的.tar.gz文件。然后可以将该文件传输到分析机。存档解压后,Shutdown.log文件位于“\\system_logs.logarchive\\Extra”目录中。

恶意软件检测和经验教训

当研究人员第一次开始分析疑似受感染的手机时,他们使用国际特赦组织开发的MVT工具对其进行了测试。当时,MVT 通过解析DataUsage数据库以及其他取证工件来识别恶意软件指标。

由于移动恶意软件变得越来越普遍,并且检测方法非常耗时,因此研究人员试图寻找一种更快、更简单的方法。虽然网络流量分析是识别潜在iPhone感染的一种非常有效的轻量级方法,但处理网络流量可能需要高水平的专业知识和资源。Sysdiag转储分析是一种侵入性极低且资源较少的方法,可使用基于系统的工件来识别可能的iPhone感染。它可以从不同的角度补充感染识别。

如果研究人员使用示例日志文件进行旋转,它会在“/private/var/db/com.apple.xpc.roleaccountd.staging/rolexd”下显示已知的Pegasus感染跟踪。

Shutdown.log 条目中的示例感染跟踪

在收到此日志中的感染指示器并使用MVT对其他iOS工件的处理确认感染后,此日志现在成为调查感染的整体方法的一部分。由于研究者确认了这种行为与其分析的其他Pegasus感染的一致性,因此他们相信它将作为支持感染分析的可靠取证工件。

在分析各种感染时,研究人员进行了一些观察。其中一部受感染的手机在DataUsage数据库等常见工件中存在感染迹象,但在Shutdown.log中没有任何痕迹。进一步分析显示,用户在感染当天并未重新启动。这种观察是有道理的,因为Shutdown.log仅记录重新启动时的条目。

研究人员在另一部受感染的手机上进行的另一个有趣的观察是,有时,当存在阻止重新启动的“粘性”进程(例如与 Pegasus相关的进程)时,日志文件也会记录一条通知,指示重新启动被延迟;在超过四个重启延迟通知中观察到与 Pegasus相关的进程。虽然研究人员确实看到未受感染的手机有两到三个重启延迟通知的实例,但他们认为过度延迟(超过四个)是另一个需要调查的日志异常。

当研究人员继续研究sysdiag档案和Shutdown.log时,他们仔细阅读了CitizenLab对Reign的分析,并发现了他们以前见过的东西:恶意软件的路径。

由CitizenLab确定的iOS文件系统中的统治恶意软件路径

比较卡巴研究人员分析的Pegasus感染的Shutdown.log和上面Reign路径的工件,他们注意到与此类感染的其他相似之处。源自“/private/var/db/”的恶意软件执行似乎在其见过的所有感染中都是一致的,即使进程名称不同。对于另一个移动恶意软件家族Predator来说也是如此,其中经常使用类似的路径“/private/var/tmp/”。

由于所有三个恶意软件家族都使用相似的文件系统路径,并且从Pegasus感染分析中确认可以在Shutdown.log中看到这样的路径,因此卡巴研究人员相信该日志文件可能能够帮助识别这些恶意软件家族的感染。但有一个很大的警告......用户需要尽可能频繁地重新启动。您可能会问多久一次?这得看情况!这取决于用户的威胁概况;每隔几个小时,每天,或者可能围绕“重要事件”;卡巴将把这个问题保留为开放式问题。

分析脚本

为了自动化分析过程,卡巴研究团队创建了一些Python3脚本来帮助提取、分析和解析Shutdown.log工件。作为先决条件,用户需要生成sysdiag转储并将存档提取到分析机器。

脚本1:iShutdown_Detect

第一个脚本是关于检测上述Shutdown.log内的异常情况。该脚本在后台分析相关日志文件并显示任何异常情况。将此脚本视为一种轻量级方法,用于分析取证工件中的异常条目。它的目的是支持调查,而不是作为灵丹妙药。

检测Pegasus指标的实例

脚本2:iShutdown_parse

在某些情况下,分析师和用户希望共享他们的日志文件并出于不同目的对其进行解析。所以这个脚本是为了支持这种需求。该脚本采用sysdiag存档作为参数,并从中提取Shutdown.log文件。如果有指示,它还会将其转换为CSV文件、解码时间戳并生成解析摘要,其中包括源sysdiag和提取的Shutdown.log哈希值。

日志提取和解析输出

脚本3:iShutdown_stats

最后一个脚本可用于其它目的,例如了解用户重新启动手机的频率或时间。该脚本考虑到您已提取有问题的日志文件,而不是sysdiag存档作为参数。

目标Shutdown.log的重新启动统计信息

结论

总之,卡巴研究团队分析并确认了使用sysdiag存档中存储的Shutdown.log工件检测Pegasus恶意软件感染的可靠性。这种方法的轻量级性质使其易于使用和访问。此外,该日志文件可以将条目存储数年,使其成为分析和识别异常日志条目的宝贵取证工件。同样,这并不是可以检测所有恶意软件的灵丹妙药,并且此方法依赖于用户尽可能频繁地重新启动手机。

卡巴称将继续在不同平台上更详细地分析Shutdown.log文件。他们希望能够从其中的条目中创建更多启发。研究团队表示很乐意听取其它研究同行的意见。

参考资源

1、https://www.infosecurity-magazine.com/news/tool-identifies-pegasus-ios-spyware/

2、https://securelist.com/shutdown-log-lightweight-ios-malware-detection-method/111734/

3、https://citizenlab.ca/2023/04/spyware-vendor-quadream-exploits-victims-customers/

4、https://github.com/KasperskyLab/iShutdown?tab=readme-ov-file

声明:本文来自网空闲话plus,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。