ShimCache (AppCompatCache)¶
Apa itu ShimCache¶
Subsistem Application Compatibility Windows menyimpan path executable dan metadata dalam cache saat mengevaluasi perilaku kompatibilitas/shim. Cache ini tetap bertahan meskipun berkas diganti namanya, dihapus, atau terputus bersama volume lepas pasang. Tata letak dan field yang tersedia berbeda-beda dari Windows XP hingga Windows 11.
ShimCache bernilai untuk menemukan path historis dan, bila formatnya memiliki flag eksekusi yang andal, sebagai dukungan tambahan atas eksekusi. Waktu yang di-cache biasanya adalah waktu modifikasi terakhir berkas, bukan waktu Windows melihat atau menjalankannya.
Kesimpulan terbaik: Windows mengamati path tersebut untuk pemrosesan
kompatibilitas. Sebuah entri saja merupakan bukti keberadaan/pengamatan; gunakan Executed hanya bila didukung.
Lokasi dan pengumpulan¶
Byte-nya berada di hive registry SYSTEM, umumnya di bawah:
Kumpulkan SYSTEM, SYSTEM.LOG1, dan SYSTEM.LOG2. Juntei membaca semua control set dan mengidentifikasi
Select\Current bila memungkinkan.
Entri live terbaru mungkin tidak ada di dalam hive
Windows dapat menahan pembaruan ShimCache di memori dan menuliskannya (flush) saat shutdown/reboot. Hive yang disalin dari sistem yang sedang berjalan mungkin tidak berisi pengamatan terbaru. Waktu last-write registry cache membantu menjelaskan kapan cache disimpan, tetapi bukan waktu eksekusi per entri.
Peringatan bagi analis¶
- Entri cache dengan sendirinya bukan bukti eksekusi.
Executeddapat bernilaiYes,No, atauNA; semantik yang tersedia bergantung pada format/versi.LastModifiedTimeUTCadalah milik berkas yang dirujuk, bukan waktu pengamatan atau eksekusi.- Urutan berguna tetapi bukan timeline presisi yang universal; duplikat muncul di berbagai control set/slack.
- Entri
FromSlackdipulihkan dari luar cache aktif dan memerlukan kehati-hatian tambahan. SYSTEMyang dirty tanpa log yang dapat digunakan mungkin tidak memuat catatan terkini. Baca ringkasan pemulihan.- Temuan menunjukkan pola penamaan/path yang mencurigakan, bukan putusan malware.
Mengurai dengan Juntei¶
Usage: juntei parse-registry shimcache <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM hives
-f, --file <FILE> Parse SYSTEM or a raw AppCompatCache value
--no-logs Do not replay SYSTEM.LOG1/SYSTEM.LOG2
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry shimcache -f SYSTEM -o shimcache.csv
juntei parse-registry shimcache -d evidence/ -t jsonl \
| jq 'select(.Executed == true or (.Findings | length > 0))'
Field keluaran¶
| Field | Interpretasi |
|---|---|
ControlSet |
Nomor control set yang menyimpan cache. Bandingkan IsCurrent sebelum memilih salah satunya. |
CacheEntryPosition |
Posisi/urutan di dalam cache yang didekode. Berguna untuk urutan relatif, bukan waktu. |
Path |
Path executable/paket yang di-cache. Pivot hunting utama. |
LastModifiedTimeUTC |
Waktu modifikasi berkas yang disimpan di dalam entri—bukan waktu eksekusi/pengamatan. |
Executed |
Yes, No, atau NA sesuai flag format yang didukung. Gunakan hanya dengan konteks versi. |
Duplicate |
Entri yang sama sudah terlihat di control set atau slack sebelumnya; membantu mencegah penghitungan ganda. |
SourceFile |
Hive/nilai mentah masukan. Penting saat bekerja dengan banyak host. |
FromSlack |
Entri yang dipulihkan dari slack nilai cache, bukan dari daftar aktif. Tingkat keyakinan lebih rendah dan mungkin lebih lama. |
CacheFormat |
Tata letak Windows/cache yang didekode. Menentukan ketersediaan dan semantik field. |
CacheLastWrittenUTC |
Waktu penyimpanan kunci registry/cache. Ini adalah konteks bersama, bukan waktu eksekusi setiap entri. |
InsertFlags, ShimFlags |
Flag kompatibilitas mentah; Executed adalah hasil interpretasi Juntei bila didukung. |
DataSize |
Ukuran data entri ini, berguna untuk validasi struktural. |
Machine |
Arsitektur yang dicatat oleh format yang lebih baru (x64, x86, ARM64). |
FileSize, LastUpdateTimeUTC |
Metadata cache khusus Windows XP bila ada. |
PackageName, PackageVersion, PackagePublisherID |
Identitas aplikasi terpaket pada entri yang didukung. Publisher ID adalah konteks, bukan bukti tanda tangan. |
Findings |
Kode anomali Juntei seperti biner sistem yang dipindahkan atau path staging yang mencurigakan. Hanya petunjuk. |
RegistryPath, RegistryValueName |
Sumber kunci/nilai hive yang persis. Pertahankan untuk validasi. |
CacheValueSize |
Ukuran seluruh nilai registry, bukan DataSize entri individual. |
IsCurrent |
Apakah control set entri ini sama dengan SYSTEM\Select\Current; kosong jika tidak dapat diketahui dengan pasti. |
SelectCurrent, SelectDefault, SelectLastKnownGood, SelectFailed |
Nomor control set SYSTEM\Select mentah untuk konteks dan analisis pemulihan. |
JSON/JSONL juga mempertahankan data entri, tag, sub-catatan aplikasi terpaket, temuan terstruktur, masalah cache, dan detail pemulihan.
Strategi investigasi¶
- Utamakan control set saat ini tetapi simpan set lain dan slack sebagai bukti historis.
- Telusuri path dan temuan; jangan gunakan
LastModifiedTimeUTCsebagai waktu eksekusi. - Bila
Executed == Yes, korroborasi dengan Prefetch, SRUM, log peristiwa, atau jejak runtime lainnya. - Cocokkan path dengan
$MFT/USN untuk menentukan riwayat pembuatan, penghapusan, dan metadata. - Laporkan apakah log transaksi diputar ulang dan apakah cache live mungkin belum di-flush.