Журнал USN ($UsnJrnl:$J)¶
Що таке журнал USN¶
NTFS записує зміни файлів і каталогів у журнал змін Update Sequence Number (USN). Запис може описувати створення, розширення/перезапис даних, зміни атрибутів або параметрів безпеки, перейменування, закриття та видалення. Він зберігає посилання на файл, посилання на батьківський елемент, ім'я, причини, атрибути, позначку часу і монотонно зростаючий USN.
Журнал чудово підходить для відтворення серії файлових операцій зловмисника, особливо коли файли було видалено. Він записує факт зміни метаданих/вмісту, а не змінені байти.
Найобґрунтованіший висновок: NTFS записала вказані причини змін для
файлу, на який є посилання, у вказаний час. Причини часто накопичуються до запису CLOSE.
Розташування та збирання¶
$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 та їхні екстенти. Використовуйте його, коли важливі низькорівневі поля, специфічні для версії.
Стратегія розслідування¶
- Фільтруйте за часом, ім'ям, розширенням, шляхом батьківського каталогу або посиланням на файл.
- Сортуйте за
UpdateSequenceNumber, а також за часом, щоб бачити точний порядок у журналі. - Поєднуйте
RENAME_OLD_NAMEзRENAME_NEW_NAMEдля переміщень/перейменувань. - Використовуйте
$MFTдля перевірки стану записів, шляхів, розмірів і позначок часу. - Зіставляйте з атрибуцією процесів із журналів подій, EDR, Prefetch, служб/завдань або Defender.