AppCompatCache/ShimCache
Shimcache alebo AppCompatCache je súčasťou tzv. Application Compatibility Database. Táto databáza bola po prvý krát uvedená vo Windows XP a operačnému systému slúži na identifikáciu problémov aplikácie s kompatibilitou. Napríklad, ak je aplikácia napísaná pre Windows XP, používateľské dáta sa bude snažiť zapísať do priečinka C:\Documents and Settings\…, ktorý sa ale na Windows Vista+ systémoch nenachádza. Pre kompatibilitu aplikácie je potrebné zabezpečiť “preklad” cesty tak, aby aplikácia fungovala správne. Takéto úpravy majú na starosti tzv. Shims, malé knižnice, ktoré zabezpečia kompatibilitu staršej aplikácie s novším systémom a naopak.
Pred každým spustením je každá aplikácia kontrolovaná, či nepotrebuje nejaký “shim”. Z toho dôvodu je AppCompatCache cenným zdrojom forenzných dát. Uchováva cestu k súboru a jeho veľkosť, čas poslednej modifikácie súboru (podľa časovej pečiatky v MFT atribúte $Standard_Information) a príznak, či bol súbor skutočne spustený. Príznak nie je celkom spoľahlivý - ak hovorí, že aplikácia spustená bola, dá sa tomu veriť. Ak však flag chýba, aplikácia predsa len mohla byť spustená, len o tom nie je záznam. Databáza ShimCache sa nachádza v registroch, konkrétne v
- HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\AppCompatCache\AppCompatCache
V závislosti od verzie OS sa tu nachádza 96 až 1024 záznamov. Zoradené sú chronologicky, takže aj pri absencií času spustenia aplikácie môžeme na základe pozadia položiek určiť, v akom poradí boli programy spúšťané. Dôležitým faktom pre forenzného analytika je, že ShimCache v registroch obsahuje len informácie spred posledného štartu zariadenia. Položky pridané od posledného bootu sú iba v pamäti a na disk (do registra) sa zapíšu až pri vypnutí zariadenia. Ak zaistíme pamäť RAM, je možné z nej aktuálne dáta zo ShimCache extrahovať.
Na parsovanie registrového kľúča AppCompatCache môžeme použiť nástroj z dielne Erica Zimmermana, AppCompatCacheParser.
AppCompatCacheParser.exe -f Windows\system32\config\SYSTEM --csv tests --csvf appcompatcache.csv
AppCompatCache Parser version 1.4.4.0
Author: Eric Zimmerman ([email protected])
https://github.com/EricZimmerman/AppCompatCacheParser
Command line: -f Windows\system32\config\SYSTEM --csv tests --csvf appcompatcache.csv
Warning: Administrator privileges not found!
Processing hive 'Windows\system32\config\SYSTEM'
Two transaction logs found. Determining primary log...
Primary log: Windows\system32\config\SYSTEM.LOG2, secondary log: Windows\system32\config\SYSTEM.LOG1
Replaying log file: Windows\system32\config\SYSTEM.LOG2
Replaying log file: Windows\system32\config\SYSTEM.LOG1
At least one transaction log was applied. Sequence numbers have been updated to 0x0245. New Checksum: 0xE5364930
Found 469 cache entries for Windows10Creators in ControlSet001
Results saved to 'tests\appcompatcache.csv'
Alternatívne môžeme použiť nástroj RegRipper. Nižšie uvádzame úryvok výstupu, ktorý obsahuje PowerShell.exe. Čas poslednej modifikácie je z roka 2019 – dátum vydania v danej verzií OS. Na základe okolitých riadkov vieme odhadnúť, že PowerShell bol vykonaný niekedy medzi 3. a 16. augustom 2021.
C:\Users\joe\AppData\Local\Google\Chrome\User Data\SwReporter\92.267.200\software_reporter_tool.exe 2021-07-21 11:45:12
C:\Windows\SysWOW64\wevtutil.exe 2019-03-19 04:45:17
C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeClickToRun.exe 2021-08-23 08:00:40
C:\Windows\system32\mspaint.exe 2019-12-05 00:53:19
C:\Windows\system32\cmd.exe 2019-12-05 00:53:02
C:\Windows\SoftwareDistribution\Download\Install\MpSigStub.exe 2021-08-09 18:38:19
C:\Windows\system32\schtasks.exe 2019-12-05 00:53:23
00000009 07e2033a004e0000 000a000045630000 8664 Microsoft.WindowsCamera 8wekyb3d8bbwe
0000000b 000a000047ba01c1 000a000047ba01c1 8664 1527c705-839a-4832-9118-54d4Bd6a0c89 cw5n1h2txyewy neutral
C:\Program Files\WindowsApps\Microsoft.OneConnect_5.1902.361.0_x64__8wekyb3d8bbwe\Application 2021-08-03 22:38:14
C:\Windows\SystemApps\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\Application 2021-08-03 22:34:58
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 2019-03-19 04:46:56
00000000 000e000075530000 000a0000273a0000 8664 Microsoft.VCLibs.140.00.UWPDesktop 8wekyb3d8bbwe
C:\Program Files\Mozilla Firefox\default-browser-agent.exe 2021-08-16 18:29:14
00000009 0005071427570000 000a000045630000 8664 Microsoft.WindowsMaps 8wekyb3d8bbwe
JumpList
Jumplisty uchovávajú zoznamy posledných otvorených súborov v určitej aplikácií, alebo aplikáciou naposledy vykonané akcie. Takouto akciou môže byť napríklad otvorenie okna prehliadača v privátnom móde. Keď klikneme pravým tlačidlom na odkaz na nejakú aplikáciu - napríklad MS Office Word - zobrazí sa aj zoznam naposledy manipulovaných súborov. Používateľ tak môže rýchlejšie pokračovať v práci.
JumpListy sa nachádzajú v lokalite
-
%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
-
%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations
V týchto priečinkoch sa nachádzajú súbory s príponou .automaticDestinations-ms resp. .customDestinations-ms. Meno súboru je vo formáte zdanlivo náhodného reťazca písmen a číslic: ide o ID aplikácie, ktorej prislúcha ten-ktorý jumplist. Keďže sa budeme zaujímať o aktivitu spojenú s PowerShellom, zameriame sa jumplisty s ID² prislúchajúce PowerShellu:
-
590aee7bdd69b59b - Powershell Windows 10
-
590aee7bdd69b59b - Windows Powershell 5.0 64-bit
-
d93f411851d7c929 - Windows Powershell 5.0 32-bit
-
3c3871276e149215 - PowerShell 7
JumpListy sú dvoch typov: tie, ktoré sa generujú automaticky – AutomaticDestinations, a jumplisty definované vývojárom nejakej aplikácie - CustomDestinations. AutomaticDestinations sú “spoľahlivejšie”, keďže za ich vytváranie zodpovedá priamo operačný systém.
JumpListy sú súbory obsahujúce očíslovaný zoznam LNK súborov. LNK súbory sú špecifickým typom súborov, známe aj ako odkazy (Microsoft Windows shortcut files). Typickým príkladom LNK súboru je odkaz na súbor alebo program, vytvorený na ploche či inde. Takýto LNK súbor obsahuje informácie o súbore či lokalite, na ktorú odkazuje - metadáta. V LNK súbore je uložený čas vytvorenia, poslednej modifikácie a posledného prístupu k súboru.
Analýzou JumpListov môžeme zistiť, či a aký typ interpretera bol použitý (32- alebo 64-bitový PS? Aká verzia?), ako aj čas kedy sa tak pravdepodobne stalo. Ak je v jumpliste zapísaná nejaká akcia, môžeme sa na základe časových pečiatok pokúsiť určiť, kedy akcia mohla byť vykonaná.
Na parsovanie JumpListov je možné použiť ďalší z nástrojov E. Zimmermana – JumpList Explorer. Na skúmanom systéme sme našli jumplist prislúchajúci 64-bitovému Windows PowerShellu 5.0. V nástroji otvoríme súbor 590aee7bdd69b59b.customDestinations-ms:
V JumpListe sú uchované tri LNK súbory. Prvý je odkazom na Windows PowerShell.lnk umiestnený v používateľovom menu Štart. TargetCreationDate je totožný s časom, kedy bolo vytvorené používateľské konto. Vtedy pravdepodobne automaticky vznikol odkaz. Čas posledného prístupu zodpovedá času, kedy sme počas testovania naposledy spustili PowerShell z používateľovho menu.
Na potvrdenie aké informácie o použití PowerShellu jumplisty uchovávajú a ich presnosti by bolo ideálne vykonať viac testov. Počas doterajších pozorovaní čas posledného prístupu k LNK súboru jumplistu reflektoval čas posledného spustenia jeho cieľového súboru (napr. PowerShell ISE). Pre JumpListy všeobecne platí, že čas poslednej modifikácie JumpListu zodpovedá času posledného spustenia príslušného programu, počas ktorého program operoval s nejakým súborom (či akciou).
Odkazy
- Stopy po použití PowerShellu na systéme, Časť 1 – Úvod do PowerShell
- Stopy po použití PowerShellu na systéme, Časť 2 – Windows Prefetch
- Stopy po použití PowerShellu na systéme, Časť 3 – AppCompatCache a JumpList
- Stopy po použití PowerShellu na systéme, Časť 4 – História príkazov
- Stopy po použití PowerShellu na systéme, Časť 5 – Windows Event Log