FeatureUsage, RecentApps і закріплені на панелі завдань елементи¶
Що це таке¶
Провідник зберігає в NTUSER.DAT користувача кілька записів про те, як користувач використовує програми:
- FeatureUsage (Windows 10 і новіші): лічильники для кожної програми за видами використання.
AppSwitched: скільки разів користувач перемикався на вікно програми (клацання на панелі завдань, Alt+Tab).AppLaunch: скільки разів програму було запущено з панелі завдань (закріплений елемент).ShowJumpView: скільки разів відкривався її список переходів (клацання правою кнопкою на панелі завдань).AppBadgeUpdated: скільки разів змінювався її значок-індикатор на панелі завдань (кількість непрочитаних).TrayButtonClicked: скільки разів клацали кожну кнопку панелі завдань (StartButton,SearchButton,TaskViewButton,ClockButton, …).
Програмою є ідентифікатор моделі користувача програми (application user model ID) (Microsoft.Windows.Explorer,
Microsoft.WindowsCalculator_8wekyb3d8bbwe!App), шлях, перша частина якого може бути GUID відомої
папки ({1AC14E77-…}\cmd.exe — це %windir%\system32\cmd.exe), або ідентифікатор процесу
(*PID00001d74) для вікон, які Провідник не зміг зіставити з програмою.
- RecentApps (Windows 10 до версії 1709): програми, які користувач нещодавно запускав, із лічильником
запусків і часом останнього запуску; під кожною — файли, які вона відкривала (RecentItems).
- Закріплені на панелі завдань елементи (Taskband): програми, закріплені на панелі завдань, у вигляді елементів оболонки
(Favorites) і у вигляді посилання кожного закріпленого ярлика (FavoritesResolve). У Windows 10 і
новіших версіях для кожного закріпленого елемента вказано, чи закріпила його Windows (SystemPinned), чи користувач (UserPinned).
- ProgramsCache (StartPage, StartPage2; від Windows XP до 7): кешовані програми меню «Пуск»
(ProgramsCache), а у Windows 7 — закріплені програми меню «Пуск» і панелі завдань
(ProgramsCacheSMP, ProgramsCacheTBP).
Найобґрунтованіший висновок: цей користувач використовував цю програму стільки разів у такий спосіб (FeatureUsage), запускав її в цей час (RecentApps) або закріпив її. Лічильники не мають власного часу; датувати щось можуть лише останній запис ключа та час RecentApps.
Розташування¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage\<kind> value: application, data: count
Software\Microsoft\Windows\CurrentVersion\Search\RecentApps\{GUID} AppId, AppPath, LaunchCount, LastAccessedTime
Software\Microsoft\Windows\CurrentVersion\Search\RecentApps\{GUID}\RecentItems\{GUID} DisplayName, Path, LastAccessedTime
Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband Favorites, FavoritesResolve
Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage2 ProgramsCache, ProgramsCacheSMP, ProgramsCacheTBP
Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage ProgramsCache (Windows XP, Vista)
KeyCreationTime ключа FeatureUsage — це момент, коли почався підрахунок; його показано в підсумку. Збирайте
NTUSER.DAT разом із журналами транзакцій для кожного профілю, а також кущі SYSTEM і
SOFTWARE системи для імені хоста та SID користувача.
Застереження для аналітика¶
- Лічильники без часу. Лічильник FeatureUsage показує, як часто, а не коли. Час останнього запису
ключа виду (
KeyLastWrittenUTC) — це найновіша зміна будь-якого з його лічильників. - Не кожен запуск.
AppSwitchedрахує перемикання вікон, а не запуски; програма, що працювала без вікна або на яку користувач жодного разу не перемикався, не враховується.AppLaunchрахує лише запуски з панелі завдань. - Пакетні програми та шляхи. Програму названо так, як Windows згрупувала її вікна: ідентифікатор
пакетної програми, ідентифікатор, який програма встановила для себе сама (
Chrome,VMware.Workstation.vmui), або шлях.AppPathподає шлях, у якому GUID відомої папки замінено на шлях папки за замовчуванням. - Закріплення за замовчуванням. Нові профілі отримують закріплені за замовчуванням елементи (Провідник, Edge, Store); у Windows 10
і новіших версіях для них указано
SystemPinned. ЗакріпленняUserPinned— це вибір користувача. - Закріплені елементи у двох списках.
FavoritesіFavoritesResolveописують ті самі закріплені елементи в тому самому порядку (Index), але подаються як окремі записи. - Шляхи ProgramsCache відносні: за папкою (
Programs\Accessories) ідуть ярлики, що в ній містяться (Notepad.lnk). - Пошкоджені значення. Лічильник, який не є
REG_DWORD, час, який не єREG_QWORD, закріплений елемент, який не вдалося розпізнати, або посилання, яке насправді не є посиланням, зберігає свої байти (DataRaw) і вказується вProblems.
Аналіз за допомогою Juntei¶
Usage: juntei parse-registry feature-usage <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find NTUSER.DAT hives
-f, --file <FILE> Parse one NTUSER.DAT
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry feature-usage -d evidence/ -o featureusage.csv
juntei parse-registry feature-usage -f NTUSER.DAT -t jsonl \
| jq 'select(.Source == "AppSwitched") | [.Count, .AppPath // .App]'
Підсумок перелічує записи за джерелами, момент початку підрахунку FeatureUsage для кожного куща, програми, на які найчастіше перемикалися, нещодавні програми й елементи (спершу найновіші) та закріплені на панелі завдань елементи.
Поля виводу¶
| Поле | Інтерпретація |
|---|---|
Host, User, UserSID, SourcePath |
Хост, назва папки профілю, SID користувача з ProfileList системи та кущ. |
Source |
AppSwitched, AppLaunch, ShowJumpView, AppBadgeUpdated, TrayButtonClicked (FeatureUsage), RecentApps, RecentItems, Taskband або ProgramsCache. |
App |
Назва значення FeatureUsage, AppId нещодавньої програми або ідентифікатор моделі користувача програми для закріпленого елемента. |
AppPath |
App у вигляді шляху, у якому GUID відомої папки замінено на її шлях за замовчуванням; порожнє для ідентифікаторів. |
Count |
Лічильник FeatureUsage або LaunchCount нещодавньої програми. |
LastAccessedUTC |
LastAccessedTime нещодавньої програми або елемента. |
ItemPath |
Path нещодавнього елемента (або AppPath нещодавньої програми); шлях елемента оболонки закріпленого елемента або кешованої програми (User Pinned\TaskBar\File Explorer.lnk, Applications\<app ID>); шлях посилання FavoritesResolve. |
DisplayName |
DisplayName нещодавнього елемента. |
PinType |
SystemPinned або UserPinned для закріплення в Favorites. |
Index |
Місце закріпленого елемента або кешованої програми в її списку. |
ValueName, KeyPath, KeyLastWrittenUTC |
Значення та ключ, з яких походить запис, і останній запис ключа. |
DataRaw |
Байти (у шістнадцятковому вигляді), які не вдалося декодувати. |
TransactionLogStatus, LogsApplied |
Контекст відновлення реєстру. |
Problems |
Значення неправильного типу, закріплені елементи або списки, які не вдалося розпізнати, посилання, які насправді не є посиланнями. |
Стратегія розслідування¶
- Відсортуйте
AppSwitchedзаCount, щоб побачити програми, у яких користувач працював найбільше, і шукайте засоби адміністрування, віддаленого доступу, архівування та передавання файлів, а також шляхи в розташуваннях, доступних користувачу для запису (\Users\,Downloads,Temp). - Перевірте закріплені елементи: інструмент із
UserPinnedабо закріплений елемент, ярлик якого розташовано в незвичному місці. - Використовуйте час RecentApps разом з UserAssist, Prefetch, BAM і Jump Lists, щоб датувати використання.
- Порівняйте
KeyCreationTimeіз часом створення профілю: саме тоді починається підрахунок. - Використовуйте
parse-registry read --recover-deleted, щоб знайти видалені лічильники та закріплені елементи.