В статье Журналы событий: как извлечь и чем анализировать логи Apple мы подробно рассказали о том, какие системные журналы бывают в устройствах Apple, как создаются и извлекаются sysdiagnose и чем они отличаются от унифицированных логов Unified Logs. Сегодня мы поговорим о том, как можно извлечь унифицированные журналы Apple Unified Logs при помощи новой функции iOS Forensic Toolkit.
Напомним вкратце, что такое унифицированные журналы Apple Unified Logs и чем они отличаются от журналов sysdiagnose. Наверное, самое важное различие — в том, что журналы sysdiagnose нужно специально генерировать (о разных способах это сделать мы рассказали в предыдущей статье), и содержат они детализацию системных событий за последние 24 часа до момента создания. Да, есть исключения, и их немало, но в целом найти в журналах sysdiagnose ценную информацию — например, о событиях разблокировки экрана по сканеру лица, — можно лишь за очень короткий временной промежуток. Стоит промешкать с генерациях журналов, и сгенерированный лог становится бесполезным: специалист увидит только события, которые произошли уже в лаборатории — и ещё немного таких, у которых длительное время жизни (TTL, Time To Live).
Cрок хранения записей в унифицированных журналах длиннее, но всё равно ограничен. Некоторые типы записей имеют ограниченное время жизни (TTL), исчезая спустя короткое время независимо от того, какой механизм извлечения используется. Однако большая часть логов Apple Unified Logs всё-таки хранится дольше, и из устройства можно извлечь записи за 10, 20 или 30 дней (это зависит не только от прошитых в систему настроек, но и от типа устройства — например, на iPad записи хранятся дольше, чем на iPhone). Некоторые записи и вовсе живут годами, с момента начальной настройки устройства. В то же время устойчивое мнение о том, что унифицированные журналы хранятся 30 дней, в общем случае неверно: об этом мы подробно рассказали в предыдущей статье.
Практический вывод прост: журналы событий необходимо извлекать как можно быстрее. Если такой возможности нет, стоит хотя бы инициировать сбор логов через sysdiagnose — так будут захвачены события, произошедшие за предшествующие сутки.
Извлечение журналов — как sysdiagnose, так и унифицированных логов, — производится в рамках расширенного логического анализа при помощи iOS Forensic Toolkit.
До последнего обновления инструмент поддерживал только извлечение журналов sysdiagnose (подробно все шаги описаны в шпаргалке, а шаги по их созданию — в соответствующей статье.) Для этого использовалась команда:
./EIFT_cmd normal dumpcrash -o crashlogs.tar
В свежем обновлении инструментария мы оптимизировали низкоуровневые алгоритмы, что позволило увеличить скорость извлечения приблизительно в 50 раз.
Унифицированные журналы извлекаются другой командой:
./EIFT_cmd normal dumplogarch -o logarchive.tar
Если вы используете Mac, то извлечённые логи можно открыть в приложении Console, для чего нужно выполнить последовательность действий:
1) Создать папку для логов с расширением .logarchive
mkdir devicelogs.logarchive
2) Распаковать полученный tar в папку:
tar -xf logs.tar -C devicelogs.logarchive
Далее папку (обязательно с расширением .logarchive) можно просто открыть в приложении Console.
В папке .logarchive может найтись несколько сотен тысяч записей, в которых хранятся в основном события, не представляющие никакого интереса. Продраться сквозь них в процессе ручного просмотра тяжело; проще использовать для просмотра специализированный инструмент (если используемый криминалистический пакет поддерживает этот формат) или сконвертировать логи во что-то, что легче анализировать и просматривать — например, в формат JSON или CSV. На Mac для этого есть специальная команда:
log show --style json --archive devicelogs.logarchive > output.json
На других платформах приходится использовать сторонние инструменты — например, unifiedlog_iterator. В Windows формат команды может быть примерно таким:
unifiedlog_iterator.exe --mode log-archive --input devicelogs.logarchive --output converted-archive.csv --format csv
Обратите внимание, что даже относительно небольшая папка .logarchive содержит события в сжатом представлении. После декомпрессии в текстовый формат размер файла может достигать существенных размеров.
Если у вас уже установлен какой-либо мощный криминалистический пакет, есть вероятность, что функция анализа журналов Apple Unified Logs в нём уже встроена. В противном случае вы можете воспользоваться, к примеру, приложением iLEAPP с открытым исходным кодом — но имейте в виду: приложение не поддерживает проприетарный формат журналов, требуя их конвертации в формат JSON. Также можно воспользоваться набором бесплатных скриптов или бесплатной программой на Python.
С сожалением отметим, что, протестировав все эти инструменты, мы не нашли среди них идеального. Они выполняют — с рядом ограничений! — лишь базовые функции; ими удобно пользоваться для просмотра, но не для анализа данных. Мы серьёзно обдумываем вопрос о создании собственного инструмента для анализа системных журналов.
В журналах может содержаться много тысяч и даже миллионов событий. Вот пример парсинга папки devicelogs.logarchive:
Logarchive analysed: devicelogs.logarchive Logarchive path: /Users/ElcomSoft/Desktop/devicelogs.logarchive Analysis started on: 2025-07-18 19:52:20.020356 Analysis ended on: 2025-07-18 20:26:03.975950 Total duration: 2023.96 seconds The MD5 hash of the log archive is: 01d15685b6eb72ed2ac88d3f58b0e74a The SHA1 hash of the log archive is: 7982cb21dcd9b364e2120ec18ca0a6e0d8fbd9cb ===== Summary of the SQLite database generated from the logarchive ===== Size: 23,622,516,736 bytes Start: 2025-06-26 18:43:43.000000+0300 End: 2025-07-10 18:43:42.999128+0300 Total events: 43,240,238 Boots: 4 Log message types: --------------- Default : 25,068,147 (empty) : 10,650,585 Info : 6,143,926 Error : 1,065,501 Debug : 164,841 Fault : 147,238 Event types: --------------- logEvent : 32,589,653 signpostEvent : 9,397,206 activityCreateEvent : 1,189,772 stateEvent : 62,851 userActionEvent : 303 timesyncEvent : 302 lossEvent : 151
Предположим, что журналы событий вам открыть удалось. Вам повезло, перед вами — несколько тысяч записей, и даже включив фильтр по дате и времени предполагаемого события вы всё равно видите слишком много эвентов. Что с ними делать и как в них ориентироваться? Чтобы отделить важные события от системного мусора, стоит разобраться с тем, что именно попадает в лог и под какими именами сохраняются эти записи.
На сайте ios-unifiedlogs.com собрано множество полезных статей о том, какую информацию можно извлечь из унифицированных журналов AUL. Среди тем — события разблокировки экрана, запусков приложений, звонков, использование диктафона, активация и деактивация полётного режима и другие действия пользователя. Отдельная статья посвящена логам, полученным с Apple Watch. Также рекомендуем изучить содержимое сайта Artifacts – Thesis Friday – Fridays are for artifacts (например, самую первую статью про событие Face ID).
Системные журналы — важная и полезная вещь, причём доступная в рамках расширенного логического анализа. Для извлечения логов не нужны низкоуровневые методы (хотя с их помощью, конечно, можно извлечь больше информации — в том числе и больше журналов), достаточно просто подключить телефон, разблокировать его и выполнить несколько команд в iOS Forensic Toolkit.
Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).