
Esaminatore di file di collegamento di Windows (scorciatoie)
Uno strumento forense per l'esame dei file di collegamento di Windows (cioè le shortcut di Windows)
'lifer' è uno strumento da riga di comando per Windows o *nix ispirato al whitepaper 'The Meaning of Link Files in Forensic Examinations' di Harry Parsonage e disponibile qui. Ha iniziato la sua vita come uno strumento leggero che ho scritto per estrarre determinate informazioni dai file di collegamento per assistere nelle indagini che stavo svolgendo mentre lavoravo come analista forense informatico. Ora sono in pensione, ma sto cercando di espanderne l'utilità e pubblicarlo in modo che altri possano trarne beneficio.
Le informazioni estratte sono conformi al documento di specifica aperta Microsoft 'MS-SHLLNK' che può essere trovato online qui. Al momento della scrittura, la maggior parte delle parti della specifica versione 4.0 sono state implementate. Spero di implementare in futuro l'analisi dei file di elenco di salti non aperti.
I dettagli dei file che si trovano nella directory Test e come usarli sono forniti nel file '.\Test\Tests.txt'. Quello che segue è un breve schema...
Una volta installato lo strumento, apri una shell a riga di comando (es. bash o Powershell) e dalla directory './lifer/src' digita:
lifer -s ./Test/Test1.lnk
Questo dovrebbe dare l'output:
LINK FILE -------------- .\Test\Test1.lnk
{**DATI (stat) DEL SISTEMA OPERATIVO**}
Last Accessed: 2017-04-18 20:28:19 (UTC)
Last Modified: 2017-04-18 20:28:19 (UTC)
Last Changed: 2017-04-18 20:28:19 (UTC)
{**DATI INCORPORATI DEL FILE DI COLLEGAMENTO**}
{S_2.1 - ShellLinkHeader}
Attributes: 0x00000020 FILE_ATTRIBUTE_ARCHIVE
Creation Time: 2008-09-12 20:27:17 (UTC)
Access Time: 2008-09-12 20:27:17 (UTC)
Write Time: 2008-09-12 20:27:17 (UTC)
Target Size: 0 bytes
{S_2.3 - LinkInfo}
{S_2.3.1 - LinkInfo - VolumeID}
Drive Type: DRIVE_FIXED
Drive Serial No: 307A8A81
Volume Label: [EMPTY]
Local Base Path: C:\test\a.txt
{S_2.4 - StringData}
{S_2.4 - StringData - RELATIVE_PATH}
Relative Path: .\a.txt
{S_2.4 - StringData - WORKING_DIR}
Working Dir: C:\test
{S_2.5 - ExtraData}
{S_2.5.10 - ExtraData - TrackerDataBlock}
MachineID: chris-xps
Droid1: {94C77840-FA47-46C7-B356-5C2DC6B6D115}
Droid2: {7BCD46EC-7F22-11DD-9499-00137216874A}
UUID Sequence: 153
UUID Time: 2008-09-10 10:23:17 (UTC)
UUID Node (MAC): 00:13:72:16:87:4A
NOTA: La sezione sopra intitolata '{DATI (stat) DEL SISTEMA OPERATIVO}' avrà date diverse perché queste dipenderanno dalle date in cui hai installato e hai acceduto a quel file di collegamento sul tuo sistema. I dati incorporati saranno comunque gli stessi.
Un output più completo (compresi timestamp più precisi) può essere ottenuto omettendo l'opzione '-s'.
Il maggior livello di dettaglio su un file di collegamento può essere ottenuto usando l'opzione '-i' che stamperà anche i dettagli noti su eventuali oggetti idlist. Questa opzione non è compatibile con l'opzione '-s'.
Tutti i file di collegamento in una directory (cartella) possono essere analizzati semplicemente passando il nome della directory:
lifer ./src/Test/WinXP
(per brevità l'output non è stato mostrato).
L'output più utile per un certo numero di file di collegamento può essere creato inviando l'output come elenco separato da tabulazioni (o virgole) in un file che può quindi essere importato in un foglio di calcolo per l'analisi a piacere. Ciò può essere ottenuto così:
lifer -o tsv ./src/Test/WinXP > WinXP.tsv
o
lifer -so tsv ./src/Test/WinXP > WinXP.tsv
per un file che ha alcuni dei dati superflui e poco interessanti oscurati.
Le stringhe all'interno dei file di collegamento possono talvolta contenere virgole. Poiché ciò causa un conflitto con il separatore di campo, tutte le virgole all'interno delle stringhe sono state sostituite con punti e virgola (cioè ',' sostituito con ';'). Questo è vero solo per l'opzione '-o csv' e non per le opzioni predefinite '-o txt' o '-o tsv' e '-o xml'.
Visita la Pagina delle Release e scegli il file eseguibile appropriato per la tua macchina dall'ultima release e scaricalo. Rinomina l'eseguibile in 'lifer' (o 'lifer.exe' per Windows). Assicurati che abbia gli attributi corretti per essere eseguito come file eseguibile e posizionalo in una cartella contenente i file di collegamento che vuoi esaminare oppure aggiungi la posizione alla tua variabile PATH e sarai a posto.
La prima cosa da fare è assicurarsi di avere git installato sulla tua macchina/dispositivo; in una shell a riga di comando, spostati nella directory principale del progetto desiderata e digita il comando:
git clone https://github.com/Paul-Tew/lifer.git
Verrà creata una nuova directory chiamata 'lifer'.
(Potrebbe funzionare per installazioni Mac ma non ho il denaro necessario per testarlo con certezza...) Poiché questo strumento è piuttosto semplice, le dipendenze sono minime, assicurati di avere il compilatore 'gcc' e le librerie di sviluppo 'libc' appropriate installate, tutto qui. Avvia un terminale a riga di comando e naviga nella directory ./lifer/src. Digita il comando:
gcc -Wall ./lifer.c ./liblife/liblife.c ./libbin2hex/libbin2hex.c -o lifer
Se non sono apparsi avvisi o errori, ora dovresti avere un file eseguibile 'lifer' nella directory, potresti verificarlo digitando il comando:
ls -la
Se tutto è OK, puoi testare che lifer funzioni provandolo sul file specificato nel documento Microsoft che ho incluso come parte del repository git che hai clonato e che dovrebbe trovarsi nella directory ./Test/. Puoi farlo digitando il comando:
./lifer ./Test/Test.lnk
Puoi anche testare che lifer funzioni su un gruppo di file di collegamento in una directory digitando il comando:
./lifer ./Test/WinXP/
Installa lo strumento sul sistema operativo digitando il comando:
sudo install ./lifer /usr/bin/
Questo ti permetterà di usare lifer ovunque sul tuo sistema senza specificare il prefisso della directory (es. lifer ./Test/Test.lnk invece di ./lifer ./Test/Test.lnk)