iShutdown 脚本:从 iOS 系统诊断档案中提取、分析和解析 Shutdown.log 取证文物
本项目包含三个 Python3 脚本,每个脚本在分析系统诊断档案或 Shutdown.log 文件时都有不同的辅助作用。
- iShutdown_detect.py:用于分析系统诊断 tar 档案中的异常条目,以推断潜在的恶意软件指标。这个过程不会提取目标 Shutdown.log 文物,而是在后台进行检测/分析。
- iShutdown_parse.py:用于从目标系统诊断 tar 档案中提取 Shutdown.log 文物并进行解析。输出是一个包含可读格式条目的 CSV 文件,同时包括文物的哈希值(MD5、SHA1、SHA256)和处理时间戳。
- iShutdown_stats.py:用于从目标 Shutdown.log 文物中提取重启统计信息。例如,第一次重启、最后一次重启、每月重启次数等。
欲了解更多信息,请阅读 Securelist
联系方式:intelreports@kaspersky.com
先决条件
这些脚本分别依赖以下 Python 库:
- datetime, os, re, sys, tarfile, termcolor
- argparse, csv, datetime, hashlib, os, re, shutil, tarfile
- argparse, collections, datetime, re
安装
只要安装了上述依赖项,这些脚本就可以直接运行:
python3 <iShutdown_脚本>.py
使用方法
要使用这些脚本,必须从目标 iOS 手机生成并收集系统诊断转储。一旦 tar 档案在您的电脑上可用,您就可以使用这些脚本了。
iShutdown_detect
用法:python3 iShutdown_detect.py /path/to/your/sysdiagnose_file.tar.gz
该脚本简单明了,除了目标系统诊断档案外,不需要太多输入。它将检查我们怀疑可能检测到潜在 iOS 恶意软件的异常情况。例如,重启前的多次延迟或 /private/var/db/ 或 /private/var/tmp/ 下的进程,这些都是我们分析的移动恶意软件感染中常见的异常情况。
输出示例:
+++ 检测到 41 次重启。这是良好的做法。
*** 检测到 29 次重启前有 3 次或更多延迟。
.......
.......
2021-mm-dd hh:mm:ss UTC
*** '/private/var/db/' 中出现可疑进程 4 次。需要进一步调查!
*** 可疑进程是:
com.apple.xpc.roleaccountd.staging/mptbd/42286BD8-3758-3B85-B19F-6E1FDB2CB030)
com.apple.xpc.roleaccountd.staging/mptbd/42286BD8-3758-3B85-B19F-6E1FDB2CB030)
com.apple.xpc.roleaccountd.staging/mptbd/42286BD8-3758-3B85-B19F-6E1FDB2CB030)
com.apple.xpc.roleaccountd.staging/mptbd/42286BD8-3758-3B85-B19F-6E1FDB2CB030)
*** 在以下重启时检测到:
2021-mm-dd hh:mm:ss UTC
+++ 未在 '/private/var/tmp/' 中检测到可疑进程。最后一次重启时间为:
2021-mm-dd hh:mm:ss UTC
iShutdown_parse
用法:iShutdown_parse.py [-h] -e EXTRACT [-p] [-o OUTPUT]
从 .tar.gz 档案中提取和解析 iOS 关机日志的工具。预期输出是 csv 文件、摘要文件和日志文件。
可选参数:
-h, --help 显示此帮助信息并退出
-e EXTRACT, --extract EXTRACT
用于提取 shutdown.log 文件的 .tar.gz 档案路径。
-p, --parse 指示是否应解析提取的日志的标志。
-o OUTPUT, --output OUTPUT
保存输出的路径。
这个脚本有几个目标。首先,它旨在从系统诊断 tar 档案中提取 Shutdown.log 文件,然后如果指示,它将解析日志文件并创建一个包含人类可读输出的 CSV 文件。CSV 输出包含 UTC 格式的解码重启时间、所见的进程 ID 和进程的相应系统路径。在处理结束时,将生成一个提取摘要文件,其中包含处理时间戳、文件路径和相关哈希值。
输出示例:
extraction_summary.txt
parsed_shutdown.csv
<shutdown.log 哈希值>.log
iShutdown_stats
用法:iShutdown_stats.py [-h] logfile
处理 iOS shutdown.log 文件以创建重启统计。
位置参数:
logfile 要分析的日志文件路径。
可选参数:
-h, --help 显示此帮助信息并退出
这个脚本旨在为目标 iOS 设备的重启创建遥测文件。它需要使用上面的 iShutdown_parse 脚本提取日志文件。
输出示例:
======================================================
日志中的重启次数:40
日志中检测到的第一次重启:yyyy-mm-dd hh:mm:ss
日志中检测到的最后一次重启:yyyy-mm-dd hh:mm:ss
======================================================
每月重启次数:
yyyy-mm:1
yyyy-mm:3
..........
..........
yyyy-mm:4
yyyy-mm:10
更新:2024 年 1 月 22 日
- 更新了 README(修正了拼写错误并添加了相关 Securelist 链接)
- 修复了 iShutdown_parse 中的一个问题,以处理跨平台提取的临时文件夹
- 使用 Pyinstaller 为所有脚本添加了跨平台编译版本
待办事项和未来工作
- 我们的目标是引入更多启发式方法来检测 Shutdown.log 文物中的异常进程
- 通过系统诊断分析进行更多 iOS 恶意软件检测研究