Извлечение журналов событий: Apple Unified Logs и логи sysdiagnose

13 октября, 2025, Elcomsoft R&D
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

В статье Журналы событий: как извлечь и чем анализировать логи 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.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft iOS Forensic Toolkit

Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).

Официальная страница Elcomsoft iOS Forensic Toolkit »

НАШИ НОВОСТИ