ऐप्लिकेशन संगतता¶
Windows क्या रखता है¶
ShimCache (parse-registry shimcache) और Amcache (parse-registry amcache) के अलावा,
Windows की application compatibility सुविधाएँ ये जानकारी
Microsoft\Windows NT\CurrentVersion\AppCompatFlags के अंतर्गत रखती हैं:
| स्रोत | Hive और key | यह क्या दिखाता है |
|---|---|---|
layers |
SOFTWARE (और Wow6432Node) और NTUSER.DAT Layers |
Compatibility layers के साथ चलने के लिए सेट किए गए programs: RUNASADMIN (हमेशा administrator के रूप में), WIN7RTM, HIGHDPIAWARE, … |
pca_store |
NTUSER.DAT Compatibility Assistant\Store (Windows 8 और बाद के) |
वे programs जिन्हें Program Compatibility Assistant ने उपयोगकर्ता को चलाते देखा |
pca_persisted |
NTUSER.DAT Compatibility Assistant\Persisted (Windows 7) |
वही, Windows 7 पर |
cit_module |
SOFTWARE CIT\Module\<module> |
वे programs जिन्होंने किसी tracked module को load किया, और उन्होंने आख़िरी बार ऐसा कब किया |
cit_system |
SOFTWARE CIT\System (Windows 7 से प्रारंभिक Windows 10 तक) |
Compressed CIT databases में program paths और command lines |
installed_sdb |
SOFTWARE InstalledSDB\{GUID} |
sdbinst से install किए गए custom shim databases: फ़ाइल, विवरण, install का समय |
custom_sdb |
SOFTWARE Custom\<program> |
हर program पर लागू custom shim databases, उनके install समय के साथ |
सर्वोत्तम निष्कर्ष: layers और shim databases ऐसा configuration हैं जो यह बदलता है कि कोई program कैसे चलता है; Program Compatibility Assistant और CIT entries दिखाती हैं कि कोई program इस उपयोगकर्ता के रूप में या इस सिस्टम पर चला (या उसने कोई module load किया)।
Custom shim databases एक persistence और injection तकनीक हैं (MITRE ATT&CK T1546.011): जब भी कोई program चलता है, shim उसमें एक DLL load कर सकता है या कोई अन्य program शुरू कर सकता है।
स्थान¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers <program> = <layers>
Microsoft\Windows NT\CurrentVersion\AppCompatFlags\CIT\Module\<module> <program> = FILETIME
Microsoft\Windows NT\CurrentVersion\AppCompatFlags\CIT\System <id> = compressed database
Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDB\{GUID} DatabasePath, …
Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom\<program.exe> {GUID}.sdb = FILETIME
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
SOFTWARE, हर NTUSER.DAT और उनके transaction logs, तथा shim database के path में नामित .sdb फ़ाइलें
(आमतौर पर C:\Windows\AppPatch\Custom\) एकत्र करें।
विश्लेषक के लिए सावधानियाँ¶
-
CIT expansion सीमित है। जो values 64 MiB से अधिक uncompressed आकार घोषित करती हैं, वे एक diagnostic के साथ कच्चे bytes के रूप में रखी जाती हैं। विकृत compression और आकार के mismatch report किए जाते हैं।
-
Program Compatibility Assistant entries के लिए run का समय नहीं।
Storedata (SACP, जोDataRawमें रखा जाता है) में एक समय होता है, लेकिन Windows 8.1, 10 और 11 पर यह एक hive के हर program के लिए समान होता है, और अन्य सिस्टमों के लिए: यह वह समय नहीं है जब program चला। केवलStorekey का last write सबसे हाल के बदलाव का समय बताता है। - Removable media पर programs का नाम
SIGN.MEDIA=<id> <path>होता है:Pathmedia पर का path है, औरDetailsमें media id होती है। - CIT databases LZNT1-compressed होते हैं और उनकी संरचना सार्वजनिक रूप से प्रलेखित नहीं है: Juntei हर database में पाए गए program paths और command lines को, प्रति database एक बार, बिना counts या समय के सूचीबद्ध करता है। Command line अपना अलग record है, अपने program से बंधा नहीं। Windows 10 और बाद के संस्करण यहाँ कम ही जानकारी रखते हैं।
- Shim databases. हर
custom_sdbऔरinstalled_sdbrecord जाँचें: वैध software शायद ही कभी इन्हें install करता है। Shim क्या करता है, यह स्वयं.sdbफ़ाइल बताती है। - किसी उपयोगकर्ता द्वारा सेट की गई Layers केवल उसी उपयोगकर्ता पर लागू होती हैं;
SOFTWAREवाली सभी पर।RUNASADMINprogram को हर बार elevation माँगने पर मजबूर करता है।
Juntei से parse करें¶
Usage: juntei parse-registry app-compat <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 app-compat -d evidence/ -o appcompat.csv
juntei parse-registry app-compat -d evidence/ -t jsonl \
| jq 'select(.Source == "installed_sdb" or .Source == "custom_sdb")'
Summary में custom shim databases, layers वाले programs, और CIT modules के अंतिम उपयोग सूचीबद्ध होते हैं।
आउटपुट fields¶
| फ़ील्ड | व्याख्या |
|---|---|
Host, SourcePath, HiveType |
Host, hive फ़ाइल, और SOFTWARE या NTUSER.DAT। |
User, UserSID |
User hive के profile folder का नाम, और सिस्टम की ProfileList से उसका SID। |
Source, Scope |
layers, pca_store, pca_persisted, cit_module, cit_system, installed_sdb, custom_sdb; machine या user। |
Path |
Program (value का नाम), CIT database में कोई path या command line, या वह program जिस पर shim database लागू होता है। |
Layers |
Compatibility layers, जैसी लिखी गई हैं (~ RUNASADMIN)। |
LastSeenUTC |
किसी program ने आख़िरी बार CIT module कब load किया। |
SdbGUID, SdbPath, SdbInstalledUTC |
Shim database का GUID, फ़ाइल और install का समय। |
Details |
CIT module का नाम, CIT database का value नाम, program की removable media id (SignMedia), shim database का DatabaseDescription और DatabaseType। |
KeyPath, KeyLastWrittenUTC, ValueName, WOW64 |
Record कहाँ से आता है, वह key आख़िरी बार कब बदली, और क्या वह Wow6432Node के अंतर्गत है। |
DataRaw |
Store value का SACP data, या ऐसा data जो अपेक्षित रूप में नहीं है (hex)। |
TransactionLogStatus, LogsApplied |
Registry recovery का संदर्भ। |
Problems |
ऐसा data जिसे decode या पढ़ा नहीं जा सका। |
जाँच की रणनीति¶
- हर custom shim database की समीक्षा करें: उसकी
.sdbफ़ाइल, install का समय, और वे programs जिन पर वह लागू होता है; Prefetch, Amcache और process creation events मेंsdbinst.exeसे correlate करें। - Program Compatibility Assistant entries में user-writable folders के programs, और removable media के programs खोजें।
- असामान्य programs पर
RUNASADMINऔर अन्य layers जाँचें। - निष्पादन समय के लिए ShimCache, Amcache, BAM, Prefetch और UserAssist से correlate करें।