Stopy po použití PowerShellu na systéme, Časť 3 – AppCompatCache a JumpList

Singel-post cover image

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:

Obrázok 1: JumpList Explorer

Obrázok 1: JumpList Explorer

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