UserAssist¶
Apa itu UserAssist¶
Windows Explorer menghitung program dan pintasan yang dijalankan pengguna dari shell Explorer:
Start menu, taskbar, desktop, dan klik ganda di folder. Explorer menyimpan hitungan tersebut di
NTUSER.DAT milik pengguna. Setiap item memiliki:
- jumlah eksekusi;
- pada Windows 7 dan yang lebih baru, berapa kali dan berapa lama (dalam milidetik) item tersebut mendapatkan fokus;
- kapan item tersebut terakhir dijalankan.
Nama nilai dienkode dengan ROT13. Nama program biasanya diawali dengan GUID known folder
({1AC14E77-…} adalah System32).
UserAssist menunjukkan apa yang dijalankan secara interaktif oleh pengguna tertentu, hal yang tidak diatribusikan ke pengguna oleh sebagian besar bukti eksekusi lainnya.
Kesimpulan terbaik: pengguna menjalankan program atau pintasan ini melalui Explorer, sebanyak ini, terakhir kali pada waktu ini. Program yang dijalankan dengan cara lain (baris perintah, layanan, tugas terjadwal, program lain) tidak dihitung.
Lokasi¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count
| GUID | Isi |
|---|---|
{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA} |
Program (executable), Windows 7 dan yang lebih baru |
{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F} |
Pintasan (shortcut), Windows 7 dan yang lebih baru |
{75048700-EF1F-11D0-9888-006097DEACF9} |
Program dan pintasan (active_desktop), Windows 2000 hingga Vista |
{5E6AB780-7743-11CF-A12B-00AA004AE837} |
Toolbar internet (internet_toolbar), Windows 2000 hingga Vista |
GUID lain dilaporkan sebagai other. Kumpulkan NTUSER.DAT beserta log transaksinya untuk setiap
profil, serta hive SOFTWARE milik sistem, yang memberikan SID pengguna.
Peringatan bagi analis¶
- Profil baru diisi item awal. Pada Windows 7 dan yang lebih baru, profil baru dimulai dengan item default (Getting Started, Calculator, Paint, Sticky Notes, …). Jumlah eksekusinya menghitung mundur dari 14, dan semuanya berbagi satu waktu eksekusi terakhir, sekitar saat profil dibuat. Item-item ini bukan aktivitas pengguna.
- Versi 3 menghitung dari 5 (Windows 2000 hingga Vista). Hitungan yang tersimpan dimulai dari 5, sehingga 5
dikurangkan darinya. Hitungan tersimpan di bawah 5 dilaporkan di
Problems. - Path menggunakan path default known folder (
%windir%\system32,%ProgramFiles%,%APPDATA%\…). Folder yang dialihkan ke tempat lain tetap menampilkan path default-nya. App ID (Microsoft.Windows.Explorer,Microsoft.WindowsNotepad_8wekyb3d8bbwe!App) dan item Control Panel (::{…}) tidak memiliki path. - Pelacakan dapat dinonaktifkan dengan
Explorer\AdvancedStart_TrackProgs= 0,Policies\ExplorerNoInstrumentation= 1, atauUserAssist\SettingsNoLog= 1. Ringkasan mencantumkan hive tempat pelacakan dinonaktifkan. UserAssist yang kosong atau tidak ada pada profil yang aktif dapat menandakan anti-forensik. NoEncrypt= 1 membuat Windows menulis nama tanpa ROT13. Nama-nama seperti itu terdekode secara salah, sehingga setiap item dari hive tersebut menyatakannya diProblems(dan di stderr ketika record dikirim ke stdout).- Waktu eksekusi terakhir dan hitungan disimpan per item, tetapi waktu last-write key
(
KeyLastWrittenUTC) hanyalah waktu pembaruan terbaru pada salah satu item. - Jumlah eksekusi dapat bernilai 0 untuk item yang hanya mendapatkan fokus. Hitungan dan waktu fokus hanya ada di versi 5 (Windows 7 dan yang lebih baru).
Mengurai dengan Juntei¶
Usage: juntei parse-registry user-assist <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 user-assist -d evidence/ -o userassist.csv
juntei parse-registry user-assist -f NTUSER.DAT -t jsonl \
| jq 'select(.Path? // "" | test("\\\\(Users|ProgramData|Temp)\\\\"; "i"))'
Ringkasan mencantumkan item yang terakhir dijalankan (terbaru terlebih dahulu) beserta penggunanya, serta hive tempat UserAssist dinonaktifkan.
Field keluaran¶
| Field | Interpretasi |
|---|---|
Host, User, UserSID, SourcePath |
Host, nama folder profil, SID pengguna dari ProfileList milik sistem (dengan hive SOFTWARE milik sistem), dan hive. |
GUID, Kind |
Key {GUID} dan isinya (executable, shortcut, active_desktop, internet_toolbar, other). |
NameRot13, Name |
Nama nilai sebagaimana tersimpan, dan setelah didekode. |
Path |
Nama yang didekode sebagai path, dengan GUID known folder diganti dengan path default-nya; kosong untuk app ID dan shell item. |
RunCount |
Berapa kali item dijalankan dari Explorer (versi 3: hitungan tersimpan dikurangi 5). |
FocusCount, FocusTimeMs |
Berapa kali item mendapatkan fokus, dan berapa lama dalam milidetik (versi 5). |
LastRunUTC |
Kapan item terakhir dijalankan. Kosong bila Windows menyimpan 0, atau bila waktu yang tersimpan melewati tahun 9999 (dalam hal itu Problems mencantumkannya dan DataRaw menyimpan byte-nya). |
Format, SessionID |
Tata letak data (5: 72 byte, 3: 16 byte) dan nomor sesi tempat data terakhir ditulis. |
KeyLastWrittenUTC |
Last write dari key Count: pembaruan terbaru pada salah satu itemnya. |
DataRaw |
Byte nilai (hex), bila tidak dapat didekode. |
TransactionLogStatus, LogsApplied |
Konteks pemulihan registry. |
Problems |
Data dengan ukuran yang tidak diketahui, ukuran yang tidak sesuai dengan Version key, hitungan versi 3 di bawah 5, eksekusi terakhir melewati tahun 9999, NoEncrypt. |
Strategi investigasi¶
- Urutkan berdasarkan
LastRunUTCdan sisihkan item awal bawaan: semuanya berbagi satu waktu, sekitar saat pembuatan profil. - Cari program di lokasi yang dapat ditulis pengguna (
%USERPROFILE%,Downloads,Temp,ProgramData), drive lepas pasang, dan path jaringan, serta alat administrasi dan akses jarak jauh. - Korelasikan dengan Prefetch (eksekusi beserta waktu eksekusi), Amcache dan ShimCache (keberadaan),
Jump Lists dan berkas LNK (apa yang dibuka dengannya), serta
$MFTuntuk berkas program. - Periksa hive tempat pelacakan dinonaktifkan, dan profil yang UserAssist-nya kosong, untuk mendeteksi pembersihan.
- Gunakan
parse-registry read --recover-deleteduntuk nilai UserAssist yang dihapus.