
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)
Il progetto lifer su github viene fornito completo con una soluzione di progetto di Visual Studio 2017, quindi il modo più semplice per creare un eseguibile Windows è installare prima Visual Studio 2017. C'è una versione gratuita (conosciuta come versione 'community') disponibile qui. Una volta installato Visual Studio:
cd "F:\\lifer\src\x64\Debug\"
.\lifer.exe ..\..\Test\Test1.lnk
È possibile creare lifer in Windows senza installare Visual Studio, ma dovrai comunque scaricare e installare gli strumenti di compilazione Visual C++ disponibili qui Una volta installati, lifer può essere compilato nella directory ./src/ digitando il comando:
CL lifer.c .\liblife\liblife.c .\Win\dirent.c .\Win\getopt.c .\libbin2hex\libbin2hex.c
'lifer' era originariamente uno strumento solo Linux/GNU che non era realmente portabile su Windows finché non ho trovato soluzioni ai principali ostacoli della navigazione di una directory e dell'analisi delle opzioni da riga di comando nello stesso modo in cui fa GNU. A tal fine sono profondamente grato ai seguenti due progetti:
Si invitano gli utenti a leggere il whitepaper prima di attribuire qualsiasi significato ai risultati. Nessun risultato dovrebbe essere attribuito a questo strumento senza una COMPLETA comprensione di ciò che rappresenta l'output; questo si applica in particolare alle questioni di fatto per la determinazione in un tribunale. In tali casi è compito dell'utente comprendere appieno entrambi i documenti menzionati, oltre ad avere una conoscenza approfondita di come Windows e altri sistemi operativi trattano la creazione, lo spostamento e la cancellazione di tali file. È inoltre necessaria una conoscenza pratica di come 'lifer' ha interpretato e presentato i dati (questo richiede la lettura e la comprensione del codice).
Sono solo un programmatore autodidatta, quindi senza dubbio ci sono carichi di errori e 'trappole' nel codice. A tal fine, non faccio ASSOLUTAMENTE NESSUNA promessa che questo strumento non danneggi il tuo sistema. Ho cercato duramente di non rovinare la tua macchina, ma la strada per l'inferno è lastricata di buone intenzioni...
QUESTO MATERIALE È FORNITO "COSÌ COM'È" SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE, MA NON LIMITATE A, LE GARANZIE IMPLICITE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE O NON VIOLAZIONE. ALCUNE GIURISDIZIONI NON CONSENTONO L'ESCLUSIONE DELLE GARANZIE IMPLICITE, PERTANTO L'ESCLUSIONE DI CUI SOPRA POTREBBE NON APPLICARSI A TE. IN NESSUN CASO SARÒ RESPONSABILE VERSO TERZI PER DANNI DIRETTI, INDIRETTI, SPECIALI O ALTRI DANNI CONSEQUENZIALI DERIVANTI DA QUALSIASI UTILIZZO DI QUESTO MATERIALE, INCLUSE, A TITOLO ESEMPLIFICATIVO E NON LIMITATIVO, EVENTUALI PERDITE DI PROFITTI, INTERRUZIONE DELL'ATTIVITÀ, PERDITA DI PROGRAMMI O ALTRI DATI SUL TUO SISTEMA DI GESTIONE DELLE INFORMAZIONI O ALTRO, ANCHE SE ESPRESSAMENTE INFORMATI DELLA POSSIBILITÀ DI TALI DANNI.
Paul Tew - Marzo 2020