Yüklü Programlar¶
Windows neleri saklar¶
Windows ve yükleyiciler, yüklü yazılımları birkaç kayıt defteri listesine kaydeder. Her listede program, ürün, dağıtım veya paket başına bir anahtar bulunur; Juntei her anahtar için bir kayıt verir.
| Kaynak | Kovan ve anahtar | İçerdiği |
|---|---|---|
uninstall |
SOFTWARE ve NTUSER.DAT …\CurrentVersion\Uninstall\* ile SOFTWARE\Wow6432Node\… |
Ayarlar'ın ve Programlar ve Özellikler'in listelediği bilgiler: ad, sürüm, yayımcı, yükleme tarihi, klasörler, kaldırma komutları, boyut, gizli olup olmadığı |
msi_product |
SOFTWARE\Classes\Installer\Products\*, NTUSER.DAT Software\Microsoft\Installer\Products\* |
Windows Installer ürünleri: ürün adı ve sürümü, paketin dosya adı ve yüklendiği klasör |
app_path |
SOFTWARE ve NTUSER.DAT …\CurrentVersion\App Paths\* |
Windows'un adıyla başlattığı programlar (Win+R, start tool): programın yolu ve klasörü |
wsl |
NTUSER.DAT …\CurrentVersion\Lxss\{GUID} |
Windows Subsystem for Linux dağıtımları: ad, dosyalarının veya diskinin nerede olduğu, WSL 1 veya 2 |
package |
SOFTWARE …\Appx\AppxAllUserStore |
Paketlenmiş (Store) uygulamalar: tüm kullanıcılar için sağlananlar, Windows'un kendi uygulamaları, hazırlananlar (staged), sağlaması kaldırılanlar (deprovisioned) ve her kullanıcınınkiler |
En iyi sonuç: bu program, ürün veya paket sisteme tüm kullanıcılar için veya bu kullanıcı için yüklenmiştir (ya da kaydedilmiştir). Yükleme tarihi yükleyicinin yazdığı değerdir; anahtarın son yazılma zamanı ise girdinin en son ne zaman değiştiğidir.
Konum¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows\CurrentVersion\Uninstall\<name or {ProductCode}>
Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<…> 32-bit programs
Classes\Installer\Products\<packed product code>[\SourceList]
Microsoft\Windows\CurrentVersion\App Paths\<program.exe>
Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\{Applications,InboxApplications,Staged,Deprovisioned,<SID>,EndOfLife\<SID>}\<package>
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Uninstall\<…>
Software\Microsoft\Installer\Products\<packed product code>
Software\Microsoft\Windows\CurrentVersion\App Paths\<program.exe>
Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}
SOFTWARE kovanını, tüm NTUSER.DAT kovanlarını ve bunların işlem günlüklerini toplayın. SYSTEM ana bilgisayarı
adlandırır; SOFTWARE içindeki ProfileList ise her kullanıcının SID'ini verir.
Analist için uyarılar¶
- Yükleme tarihi ve anahtar zamanı.
InstallDate, yükleyicinin yerel saatle yazdığı bir tarihtir (saat içermez); bazı yükleyiciler bunu yazmaz, bazıları da başka bir biçimde yazar (InstallDateRawiçinde yazıldığı gibi korunur). Bir güncelleme tarihi değiştirmeden girdiyi yeniden yazabilir veya program pek değişmeden tarihi değiştirebilir:InstallDateileKeyLastWrittenUTCdeğerlerini karşılaştırın. - Kaldırılmış yazılımlar. Düzgün biçimde kaldırılan bir program anahtarlarını kaybeder. Silinmiş
Uninstallanahtarları içinparse-registry read --recover-deleted, geride kalan izler için de Amcache, Prefetch ve$MFTkullanın. - Kullanıcı başına kayıtlar.
NTUSER.DATgirdileri bir profil için kaydedilmiş yazılımları belirtir. Bu kapsam, yükleyiciyi kimin çalıştırdığını veya yönetici haklarının kullanılıp kullanılmadığını göstermez. - Gizli girdiler.
SystemComponentbir girdiyi Programlar ve Özellikler'den gizler;DisplayNameiçermeyen girdiler (güncellemeler, bileşenler) de gösterilmez. Bunların tümü raporlanır. - Ürün kodları. GUID biçimli bir
Uninstallanahtarı,ProductCodearacılığıyla paketlenmiş birmsi_productanahtarıyla eşleştirilebilir. GUID biçimli ad tek başına girdinin Windows Installer tarafından oluşturulduğunu kanıtlamaz. - App Paths. Bunlar yürütme kayıtları değil, programları bulmak için kullanılan
kayıtlardır.
Pathdeğeri birden fazla arama dizini içerebilir ve yükleme dizini olmak zorunda değildir. - Yayımcı. Bu, yükleyicinin sağladığı kayıt defteri meta verisidir; doğrulanmış imza bilgisi değildir.
- Mimari.
Wow6432Node, 64 bit Windows'ta 32 bit programları tutar (Architecturex86,Wow64True); diğer girdiler sistemin kendi mimarisindedir (boş). Bir paketin mimarisi kendisine aittir (x64,neutral, …). - WSL.
Version, dağıtımınFlagsdeğerinden alınan WSL sürümüdür (0x8: WSL 2'nin sanal makinesinde çalışır). Dağıtımın kendiVersiondeğeri (Detailsiçinde) dosya sisteminin sürümüdür ve WSL 1 dağıtımlarında da 2'dir.BasePath, dağıtımınext4.vhdx(WSL 2) veyarootfs(WSL 1) konumunu tutar: içine bakmak için bunu toplayın. - Paketler.
<SID>listeleri her kullanıcı için kaydedilmiş paketlerdir; çoğu Windows'un kendi paketleridir.Deprovisionedpaketler yeni kullanıcılar için,EndOfLife\<SID>paketleri ise o kullanıcı için kaldırılmıştır. - Hasarlı değerler. Bozuk sayılar, yanlış değer türleri ve geçersiz UTF-16
Problemsalanında raporlanır veDataRawiçinde korunur; sıfır bayt uzunluğunda mevcut bir değer için boş bir onaltılık dize de buna dahildir. İsteğe bağlı sayısal bir alandaki temiz boş dize, bulunmuyor olarak değerlendirilir. Bir paket sürümü, her biri işaretsiz 16 bit aralığında olan dört ondalık bileşen içermelidir.-tkayıtları stdout'a aktarırken kovan düzeyindeki uyarılar stderr'de kalır.
Juntei ile ayrıştırma¶
Usage: juntei parse-registry installed-programs <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE and NTUSER.DAT hives
-f, --file <FILE> Parse one SOFTWARE or NTUSER.DAT hive
--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 installed-programs -d evidence/ -o installed.csv
juntei parse-registry installed-programs -d evidence/ -t jsonl \
| jq 'select(.Scope == "user" and .Source != "package")'
Özet; en son yüklenen programları (InstallDate değerine göre), kullanıcıların kendileri için yüklediklerini
ve WSL dağıtımlarını listeler.
Çıktı alanları¶
| Alan | Yorumlama |
|---|---|
Host, SourcePath, HiveType |
Ana bilgisayar, kovan dosyası ve SOFTWARE veya NTUSER.DAT. |
User, UserSID |
Bir kullanıcı kovanının kullanıcısı (profil klasörü ve ProfileList SID'i) veya bir paketin listelendiği kullanıcı. |
Source, Scope |
Liste (uninstall, msi_product, app_path, wsl, package) ve machine veya user. |
Name, Version, Publisher |
DisplayName, DisplayVersion, Publisher; bir ürünün ProductName ve Version değerleri; bir App Path'in program dosyası adı; bir dağıtımın adı ve WSL sürümü; bir paketin adı ve sürümü. |
InstallDate, InstallDateRaw |
YYYYMMDD olarak yazıldığında tarih olarak InstallDate; aksi hâlde yazıldığı gibi. |
KeyLastWrittenUTC |
Girdinin anahtarının en son ne zaman değiştiği. |
InstallLocation, InstallSource |
InstallLocation (bir App Path'in Path değeri, bir dağıtımın BasePath değeri, bir paketin Path değeri); InstallSource (bir ürünün en son kullanılan kaynak klasörü). |
Program |
Bir App Path'in programı. |
UninstallCommand, QuietUninstallCommand |
UninstallString, QuietUninstallString. |
SizeKB, SystemComponent, WindowsInstaller |
KiB cinsinden EstimatedSize; gizli olup olmadığı; Windows Installer tarafından yüklenip yüklenmediği. |
ProductCode |
Windows Installer ürün kodu ({GUID}). |
Architecture, WOW64 |
Wow6432Node altında x86 veya bir paketin mimarisi; anahtarın Wow6432Node altında olup olmadığı. |
Details |
Ek bilgiler: DisplayIcon, ModifyPath, ParentKeyName, ReleaseType, Inno Setup: User (bir Inno Setup yükleyicisini çalıştıran hesap); bir ürünün PackageCode, PackageName değerleri; bir dağıtımın Flags, State, DefaultUid, Version, PackageFamilyName, Default değerleri; bir paketin List, ResourceId, PublisherId değerleri. |
KeyPath |
Girdinin anahtarı. |
DataRaw |
Adlarının söylediği gibi olmayan değerlerin baytları (onaltılık). |
TransactionLogStatus, LogsApplied |
Kayıt defteri kurtarma bağlamı. |
Problems |
Okunamayan veya adlarının söylediği gibi olmayan değerler. |
İnceleme stratejisi¶
- Olay zamanı civarında
InstallDateveKeyLastWrittenUTCdeğerlerine göre sıralayın; uzaktan erişim araçlarına, tünelleme ve dosya aktarım istemcilerine, arşivleyicilere, betik çalışma ortamlarına ve güvenlik araçlarına bakın. Scopedeğeriuserolan kayıtları inceleyin: yönetici hakları olmadan yüklenmiş yazılımlar.InstallLocation,InstallSourceveUninstallCommanddeğerlerinde kullanıcının yazabildiği klasörleri (Downloads,AppData,Temp,ProgramData) kontrol edin.- WSL dağıtımlarını arayın ve bunların
BasePathkonumlarını toplayın. - Amcache ve Prefetch (yükleyici ve çalışan program),
$MFT(yükleme klasörünün oluşturulması) ve Application olay günlüğü (MsiInstaller olayları) ile ilişkilendirin.