Перейти до змісту

Журнал USN ($UsnJrnl:$J)

Що таке журнал USN

NTFS записує зміни файлів і каталогів у журнал змін Update Sequence Number (USN). Запис може описувати створення, розширення/перезапис даних, зміни атрибутів або параметрів безпеки, перейменування, закриття та видалення. Він зберігає посилання на файл, посилання на батьківський елемент, ім'я, причини, атрибути, позначку часу і монотонно зростаючий USN.

Журнал чудово підходить для відтворення серії файлових операцій зловмисника, особливо коли файли було видалено. Він записує факт зміни метаданих/вмісту, а не змінені байти.

Найобґрунтованіший висновок: NTFS записала вказані причини змін для файлу, на який є посилання, у вказаний час. Причини часто накопичуються до запису CLOSE.

Розташування та збирання

C:\$Extend\$UsnJrnl:$J

$J — це іменований потік метаданих NTFS. Збирайте його криміналістичним інструментом із підтримкою сирого доступу. Також зберіть $MFT того самого тому, оскільки записи USN зберігають посилання на батьківські файли, а не повні шляхи.

Застереження для аналітика

  • Журнал циклічний і має обмежений розмір. Старі записи перезаписуються.
  • FILE_DELETE вказує, що NTFS обробила видалення; вміст може залишатися придатним для відновлення в іншому місці.
  • Причина на кшталт DATA_OVERWRITE не розкриває байтів, процесу чи відповідального користувача.
  • В одному записі може поєднуватися кілька причин; CLOSE часто позначає кінець накопичених змін.
  • Шляхи відтворюються. Батьківські каталоги могли бути перейменовані, видалені або повторно використані.
  • Порядкові номери посилань на файли важливі. Сам лише номер запису може вказати на неправильне покоління.
  • Вирізання (carving) може відновити коректні записи без їхнього початкового контексту журналу; повідомляйте про цю відмінність.

Аналіз за допомогою Juntei

Usage: juntei parse-ntfs usn-journal <INPUT> [OPTIONS]

Input:
  -d, --directory <DIR>  Recursively find $J files
  -f, --file <FILE>      Parse one $J, or any file with --carve
  -m, --mft <FILE>       Use the matching volume's $MFT for paths
      --carve            Search a disk image/unallocated file for records

Output:
  -o, --output <PATH>       Save records
  -t, --output-type <TYPE>  csv, json, or jsonl
juntei parse-ntfs usn-journal -f 'C/$Extend/$J' -m 'C/$MFT' -o usn.csv
juntei parse-ntfs usn-journal -d evidence/ -o usn-jsonl -t jsonl
juntei parse-ntfs usn-journal -f unallocated.bin --carve -o carved-usn.csv

Поля виводу CSV

Поле Інтерпретація
Name Ім'я файлу/каталогу, збережене в цьому записі USN. Це не повний шлях.
Extension Розширення для зручності, отримане з Name; не використовуйте його як надійний тип вмісту.
EntryNumber, SequenceNumber Посилання NTFS на файл. Використовуйте обидва значення, щоб визначити покоління запису.
ParentEntryNumber, ParentSequenceNumber Посилання NTFS на батьківський каталог на момент зміни.
ParentPath Відтворений Juntei з урахуванням часу шлях батьківського каталогу. Позначки невідомого означають, що предків не вдалося розв'язати.
UpdateSequenceNumber Значення впорядкування USN. Корисне для стабільного сортування та переходів до Amcache/MFT.
UpdateTimestamp Позначка часу, збережена в записах V2/V3. Перевіряйте позначки часу з вирізаного контексту так само, як і будь-який запис.
UpdateReasons Один або кілька іменованих прапорців змін, об'єднаних через |. Інтерпретуйте комбінації та CLOSE разом.
FileAttributes Атрибути NTFS, записані на момент зміни; невідомі біти залишаються в шістнадцятковому вигляді.
OffsetToData Байтове зміщення у вхідних даних. Необхідне для перевірки та вирізаних записів.
SourceFile Вхідний журнал/образ; розрізняє хости та томи.
SourceInfo Прапорці джерела, що описують, як зміна потрапила до журналу. Зазвичай це контекст, а не атрибуція.
SecurityID Індекс ідентифікатора безпеки NTFS для запису, а не SID користувача.
Version Версія запису USN. Juntei записує V2/V3 у CSV; JSON зберігає екстенти відстеження діапазонів V4.

JSON/JSONL коректно представляє 128-бітні посилання V3 і зберігає записи відстеження діапазонів V4 та їхні екстенти. Використовуйте його, коли важливі низькорівневі поля, специфічні для версії.

Стратегія розслідування

  1. Фільтруйте за часом, ім'ям, розширенням, шляхом батьківського каталогу або посиланням на файл.
  2. Сортуйте за UpdateSequenceNumber, а також за часом, щоб бачити точний порядок у журналі.
  3. Поєднуйте RENAME_OLD_NAME з RENAME_NEW_NAME для переміщень/перейменувань.
  4. Використовуйте $MFT для перевірки стану записів, шляхів, розмірів і позначок часу.
  5. Зіставляйте з атрибуцією процесів із журналів подій, EDR, Prefetch, служб/завдань або Defender.

Додаткові відомості