Forensic Analysis delle OpenSave Dialog e loro personalizzazione in Windows 10

Le dialog di sistema per l’apertura e il salvataggio dei file memorizzano nel registro di sistema le impostazioni relative agli ultimi utilizzi e quindi anche al percorso da suggerire alla loro successiva apertura.

In particolare tramite la chiave di registro HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU, che a partire da Windows Vista ha preso il posto della chiave LastVisitedMRU, in cui vengono memorizzati i dati relati agli ultimi file aperti o salvati da una determinata applicazione utilizzata dall’utente. Tale chiave viene usata dalle Open Save Dialog per suggerire l’ultima directory usata dall’applicazione. A riguardo si veda il post OpenSaveMRU and LastVisitedMRU pubblicato sul SANS Digital Forensics and Incident Response Blog:

“This key is a little simpler, but often misunderstood. It is located at HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDIg32\LastVisitedMRU (LastVisitedPidlMRU in Vista/Win7) and tracks the specific executable used by an application to open the files documented in the OpenSaveMRU key. In addition, each value also tracks the directory location for the last file that was accessed by that application. Data is stored in binary format. Ever wonder how an application remembers where you last opened a file from? This key is used by the OpenSave dialog box to show the last directory used by that application when you are attempting to open or save a file. It keeps its own MRU list and last write time.

La chiave di registro contiene una serie di valori 0,1,2,… che memorizzano la combinazione applicazione cartella visitata e un valore binario MRUListEx che memorizza l’ordine con cui tali cartelle sono state aperte. Per ulteriori informazioni si veda anche Forensics Wiki – LastVisitedMRU.

Le chiave di registro LastVisitedPidlMRU può anche essere utilizzata per posizionare le OpenSave Dialog in una certa cartella per una determinata applicazione se questa non prevede impostazioni che possano configurare tale aspetto. Vi sono purtroppo varie applicazioni che non prevedono impostazioni che permettano di configurarne il comportamento in modo tale che sia possibile impostare specifiche cartelle in cui salvare e utilizzare tale applicazione, questo tipo di configurazioni risultano particolarmente utili quando le applicazioni devono essere usate in rete.

Un esempio di applicazione che non permette questo tipo di applicazione è ad esempio SymWriter un programma per scrivere testi che vengono automaticamente tradotti anche in forma simbolica. Per poter configurare ad esempio SymWriter per fare puntare le OpenSave Dialog su un disco di rete ad esempio Z: è possibile utilizzare una Group Policy Preference per configurare la chiave LastVisitedPidlMRU in modo tale che le OpenSave Dialog suggeriscano come ultima directory utilizzata quella configurata tramite la chiave di registro.

Per costruire correttamente il valore con cui impostare i valori “0” e “MRUListEx” della chiave LastVisitedPidlMRU il metodo più semplice è quello di aprire la dialog su un sistema di test e di esportare poi la chiave, di seguito l’export della chiave di registro LastVisitedPidlMRU configurata in modo da puntare il processo SymWriter.exe a Z:\:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU]

“0”=hex:53,00,00,79,00,00,6d,00,00,57,00,00,72,00,00,69,00,00,74,00,00,65,00,\

00,72,00,00,2e,00,00,65,00,00,78,00,00,65,00,00,00,00,00,14,00,00,1f,05,00,\

e0,04,f0,d0,02,00,ea,03,a0,69,01,00,a2,0d,80,08,00,00,2b,03,00,30,09,d0,19,\

00,00,2f,05,a0,3a,05,c0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\

00,00,00,00,00,00,00,00,00,00,00,00,00,00

“MRUListEx”=hex:01,00,00,00,00,00,00,00,ff,ff,ff,ff

“1”=hex:53,00,79,00,6d,00,57,00,72,00,69,00,74,00,65,00,72,00,2e,00,65,00,78,\

00,65,00,00,00,14,00,1f,50,e0,4f,d0,20,ea,3a,69,10,a2,d8,08,00,2b,30,30,9d,\

19,00,2f,5a,3a,5c,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\

00,00

Per costruire la group policy preference i valori vinari dovranno essere inseriti in forma esclusivamente numerica quindi ad esempio il valore:

“0”=hex:53,00,00,79,00,00,6d,00,00,57,00,00,72,00,00,69,00,00,74,00,00,65,00,\

00,72,00,00,2e,00,00,65,00,00,78,00,00,65,00,00,00,00,00,14,00,00,1f,05,00,\

e0,04,f0,d0,02,00,ea,03,a0,69,01,00,a2,0d,80,08,00,00,2b,03,00,30,09,d0,19,\

00,00,2f,05,a0,3a,05,c0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\

00,00,00,00,00,00,00,00,00,00,00,00,00,00

Deve essere inserito come:

Nome valore: 0

Dati valore: 530079006d005700720069007400650072002e00650078006500000014001f50e04fd020ea3a6910a2d808002b30309d19002f5a3a5c000000000000000000000000000000000000000000