အပလီကေးရှင်း လိုက်ဖက်မှု¶
Windows က သိမ်းဆည်းထားသည့်အရာများ¶
ShimCache (parse-registry shimcache) နှင့် Amcache (parse-registry amcache) အပြင် Windows ၏
application compatibility လုပ်ဆောင်ချက်များသည် အောက်ပါတို့ကို
Microsoft\Windows NT\CurrentVersion\AppCompatFlags အောက်တွင် သိမ်းဆည်းထားသည်-
| Source | Hive နှင့် key | ပြသသည့်အရာ |
|---|---|---|
layers |
SOFTWARE (နှင့် Wow6432Node) နှင့် NTUSER.DAT Layers |
Compatibility layer များဖြင့် run ရန် သတ်မှတ်ထားသော ပရိုဂရမ်များ- RUNASADMIN (အမြဲ administrator အဖြစ်)၊ WIN7RTM၊ HIGHDPIAWARE၊ … |
pca_store |
NTUSER.DAT Compatibility Assistant\Store (Windows 8 နှင့် နောက်ပိုင်း) |
အသုံးပြုသူ run ခဲ့သည်ကို Program Compatibility Assistant က တွေ့ခဲ့သော ပရိုဂရမ်များ |
pca_persisted |
NTUSER.DAT Compatibility Assistant\Persisted (Windows 7) |
အတူတူပင်၊ Windows 7 တွင် |
cit_module |
SOFTWARE CIT\Module\<module> |
Tracking လုပ်ထားသော module တစ်ခုကို load လုပ်ခဲ့သော ပရိုဂရမ်များနှင့် ၎င်းတို့ နောက်ဆုံး load လုပ်ခဲ့သည့်အချိန် |
cit_system |
SOFTWARE CIT\System (Windows 7 မှ အစောပိုင်း Windows 10 အထိ) |
ချုံ့ထားသော CIT database များရှိ ပရိုဂရမ် path များနှင့် command line များ |
installed_sdb |
SOFTWARE InstalledSDB\{GUID} |
sdbinst ဖြင့် ထည့်သွင်းထားသော စိတ်ကြိုက် shim database များ- ဖိုင်၊ ဖော်ပြချက်၊ ထည့်သွင်းချိန် |
custom_sdb |
SOFTWARE Custom\<program> |
ပရိုဂရမ်တစ်ခုချင်းစီတွင် အသုံးချထားသော စိတ်ကြိုက် shim database များ၊ ၎င်းတို့၏ ထည့်သွင်းချိန်များနှင့်အတူ |
အကောင်းဆုံး ကောက်ချက်: layer များနှင့် shim database များသည် ပရိုဂရမ် run ပုံကို ပြောင်းလဲစေသော configuration ဖြစ်သည်။ Program Compatibility Assistant နှင့် CIT entry များက ပရိုဂရမ်တစ်ခုကို ဤအသုံးပြုသူအဖြစ် သို့မဟုတ် ဤစနစ်ပေါ်တွင် run ခဲ့ကြောင်း (သို့မဟုတ် module တစ်ခုကို load လုပ်ခဲ့ကြောင်း) ပြသသည်။
စိတ်ကြိုက် shim database များသည် အမြဲတမ်းဝင်ရောက်နိုင်မှု (persistence) နှင့် injection နည်းလမ်းတစ်ခု ဖြစ်သည် (MITRE ATT&CK T1546.011)- shim တစ်ခုသည် ပရိုဂရမ် run တိုင်း ထိုပရိုဂရမ်ထဲသို့ DLL တစ်ခုကို load လုပ်နိုင်သည် သို့မဟုတ် အခြားပရိုဂရမ်တစ်ခုကို စတင်ဖွင့်နိုင်သည်။
တည်နေရာ¶
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 log များကို စုဆောင်းပြီး shim database ၏ path က
အမည်ပေးထားသော .sdb ဖိုင်များ (များသောအားဖြင့် C:\Windows\AppPatch\Custom\) ကိုလည်း စုဆောင်းပါ။
စိစစ်သူများ သတိပြုရန်¶
-
CIT ချဲ့ထွင်မှုကို ကန့်သတ်ထားသည်။ ချုံ့မထားသော အရွယ်အစား 64 MiB ထက်ပို၍ ကြေညာထားသော value များကို diagnostic တစ်ခုနှင့်အတူ raw byte များအဖြစ် ထိန်းသိမ်းထားသည်။ ပုံစံမမှန်သော compression နှင့် အရွယ်အစား မကိုက်ညီမှုများကို အစီရင်ခံသည်။
-
Program Compatibility Assistant entry များအတွက် run ချိန် မရှိ။
Storeဒေတာ (SACP၊DataRawတွင် ထိန်းသိမ်းထားသည်) တွင် အချိန်တစ်ခုရှိသော်လည်း Windows 8.1၊ 10 နှင့် 11 တွင် hive တစ်ခု၏ ပရိုဂရမ်အားလုံးအတွက် တူညီပြီး အခြားစနစ်များအတွက်လည်း ထိုနည်းတူပင်- ၎င်းသည် ပရိုဂရမ် run ခဲ့သည့်အချိန် မဟုတ်ပါ။Storekey ၏ နောက်ဆုံးရေးသားချိန်သာ နောက်ဆုံးပြောင်းလဲမှုကို ရက်စွဲသတ်မှတ်ပေးသည်။ - Removable media ပေါ်ရှိ ပရိုဂရမ်များ ကို
SIGN.MEDIA=<id> <path>ဟု အမည်ပေးထားသည်-Pathသည် media ပေါ်ရှိ path ဖြစ်ပြီးDetailsတွင် media id ပါဝင်သည်။ - CIT database များ ကို LZNT1 ဖြင့် ချုံ့ထားပြီး ၎င်းတို့၏ ဖွဲ့စည်းပုံကို အများသိ မှတ်တမ်းမပြုထားပါ- Juntei သည် database တစ်ခုစီတွင် တွေ့ရှိသော ပရိုဂရမ် path များနှင့် command line များကို database တစ်ခုလျှင် တစ်ကြိမ်စီ၊ အရေအတွက် သို့မဟုတ် အချိန်မပါဘဲ ဖော်ပြသည်။ Command line တစ်ခုသည် ၎င်း၏ ကိုယ်ပိုင် record ဖြစ်ပြီး ၎င်း၏ ပရိုဂရမ်နှင့် ချိတ်ဆက်မထားပါ။ Windows 10 နှင့် နောက်ပိုင်းတွင် ဤနေရာ၌ အနည်းငယ်သာ သိမ်းဆည်းသည်။
- Shim database များ။
custom_sdbနှင့်installed_sdbrecord တိုင်းကို စစ်ဆေးပါ- တရားဝင် software များက ၎င်းကို ထည့်သွင်းခဲသည်။.sdbဖိုင်ကိုယ်တိုင်က shim လုပ်ဆောင်သည့်အရာကို ဖော်ပြသည်။ - အသုံးပြုသူက သတ်မှတ်ထားသော Layer များ သည် ထိုအသုံးပြုသူအတွက်သာ သက်ရောက်သည်။
SOFTWARE၏ layer များမူ အားလုံးအတွက် သက်ရောက်သည်။RUNASADMINက ပရိုဂရမ်ကို အကြိမ်တိုင်း elevation တောင်းစေသည်။
Juntei ဖြင့် ခွဲခြမ်းစိတ်ဖြာခြင်း¶
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")'
အနှစ်ချုပ်တွင် စိတ်ကြိုက် shim database များ၊ layer များရှိသော ပရိုဂရမ်များနှင့် CIT module များ၏ နောက်ဆုံး အသုံးပြုမှုများကို ဖော်ပြသည်။
ထုတ်ယူမှု field များ¶
| Field | အဓိပ္ပာယ်ဖော်ပုံ |
|---|---|
Host, SourcePath, HiveType |
Host၊ hive ဖိုင်နှင့် SOFTWARE သို့မဟုတ် NTUSER.DAT။ |
User, UserSID |
အသုံးပြုသူ hive ၏ profile ဖိုင်တွဲအမည်နှင့် စနစ်၏ ProfileList မှ ၎င်း၏ SID။ |
Source, Scope |
layers, pca_store, pca_persisted, cit_module, cit_system, installed_sdb, custom_sdb။ machine သို့မဟုတ် user။ |
Path |
ပရိုဂရမ် (value ၏ အမည်)၊ CIT database ရှိ path သို့မဟုတ် command line၊ သို့မဟုတ် shim database အသုံးချသော ပရိုဂရမ်။ |
Layers |
ရေးသားထားသည့်အတိုင်း compatibility layer များ (~ RUNASADMIN)။ |
LastSeenUTC |
ပရိုဂရမ်တစ်ခုက CIT module ကို နောက်ဆုံး load လုပ်ခဲ့သည့်အချိန်။ |
SdbGUID, SdbPath, SdbInstalledUTC |
Shim database ၏ GUID၊ ဖိုင်နှင့် ထည့်သွင်းချိန်။ |
Details |
CIT module ၏ အမည်၊ CIT database ၏ value အမည်၊ ပရိုဂရမ်၏ removable media id (SignMedia)၊ shim database ၏ DatabaseDescription နှင့် DatabaseType။ |
KeyPath, KeyLastWrittenUTC, ValueName, WOW64 |
Record လာရာနေရာ၊ ထို key နောက်ဆုံးပြောင်းလဲခဲ့သည့်အချိန်နှင့် Wow6432Node အောက်တွင် ရှိ/မရှိ။ |
DataRaw |
Store value ၏ SACP ဒေတာ သို့မဟုတ် ဖြစ်သင့်သည့်အတိုင်း မဟုတ်သော ဒေတာ (hex)။ |
TransactionLogStatus, LogsApplied |
Registry ပြန်လည်ရယူမှု အခြေအနေ။ |
Problems |
Decode မလုပ်နိုင်သော သို့မဟုတ် မဖတ်နိုင်သော ဒေတာ။ |
စုံစမ်းစစ်ဆေးမှု ဗျူဟာ¶
- စိတ်ကြိုက် shim database တိုင်းကို ပြန်လည်သုံးသပ်ပါ- ၎င်း၏
.sdbဖိုင်၊ ထည့်သွင်းချိန်နှင့် ၎င်းအသုံးချသော ပရိုဂရမ်များ။ Prefetch၊ Amcache နှင့် process ဖန်တီးမှု event များရှိsdbinst.exeနှင့် ချိတ်ဆက်စစ်ဆေးပါ။ - Program Compatibility Assistant entry များထဲတွင် အသုံးပြုသူ ရေးသားနိုင်သော ဖိုင်တွဲများရှိ ပရိုဂရမ်များနှင့် removable media မှ ပရိုဂရမ်များကို ရှာဖွေပါ။
- ပုံမှန်မဟုတ်သော ပရိုဂရမ်များပေါ်ရှိ
RUNASADMINနှင့် အခြား layer များကို စစ်ဆေးပါ။ - လုပ်ဆောင်ချိန်များအတွက် ShimCache၊ Amcache၊ BAM၊ Prefetch နှင့် UserAssist တို့နှင့် ချိတ်ဆက်စစ်ဆေးပါ။