
Examinateur de fichiers de lien Windows (raccourcis)
Un outil forensique pour l'examen des fichiers de lien Windows (c'est-à-dire les raccourcis Windows)
'lifer' est un outil en ligne de commande Windows ou *nix inspiré du livre blanc 'The Meaning of Link Files in Forensic Examinations' de Harry Parsonage et disponible ici. Il a commencé comme un outil léger que j'ai écrit pour extraire certaines informations de fichiers de lien afin d'aider dans les enquêtes que je menais en tant qu'analyste forensique informatique. Maintenant je suis à la retraite mais je cherche à étendre son utilité et à le publier pour que d'autres puissent en bénéficier.
Les informations extraites sont conformes au document de spécification ouverte Microsoft 'MS-SHLLNK' qui peut être trouvé en ligne ici. Au moment de la rédaction, la plupart des parties de la spécification version 4.0 sont implémentées. J'espère implémenter l'analyse des fichiers de liste de sauts non ouverts à l'avenir.
Les détails des fichiers à trouver dans le répertoire Test et comment les utiliser sont donnés dans le fichier '.\Test\Tests.txt'. Ce qui suit est un bref aperçu...
Une fois l'outil installé, ouvrez un shell en ligne de commande (par exemple bash ou Powershell) et depuis le répertoire './lifer/src' tapez :
lifer -s ./Test/Test1.lnk
Cela devrait donner la sortie :
LINK FILE -------------- .\Test\Test1.lnk
{**OPERATING SYSTEM (stat) DATA**}
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)
{**LINK FILE EMBEDDED DATA**}
{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
NOTE : La section ci-dessus intitulée '{OPERATING SYSTEM (stat) DATA}' aura des dates différentes car celles-ci dépendent des dates auxquelles vous avez installé et accédé à ce fichier de lien sur votre propre système. Les données intégrées seront cependant les mêmes.
Une sortie plus complète (incluant des horodatages plus précis) peut être obtenue en omettant l'option '-s'.
Le plus de détails sur un fichier de lien peut être obtenu en utilisant l'option '-i' qui affichera également les détails connus sur les objets idlist. Cette option n'est pas compatible avec l'option '-s'.
Tous les fichiers de lien d'un répertoire (dossier) peuvent être analysés en passant simplement le nom du répertoire :
lifer ./src/Test/WinXP
(pour des raisons de concision, la sortie n'est pas affichée).
La sortie la plus utile pour un certain nombre de fichiers de lien peut être créée en envoyant la sortie sous forme de liste séparée par des tabulations (ou des virgules) dans un fichier qui peut ensuite être importé dans un tableur pour analyse à loisir. Cela peut être réalisé comme ceci :
lifer -o tsv ./src/Test/WinXP > WinXP.tsv
ou
lifer -so tsv ./src/Test/WinXP > WinXP.tsv
pour un fichier dont certaines données superflues et sans intérêt ont été supprimées.
Les chaînes contenues dans les fichiers de lien peuvent parfois contenir des virgules. Parce que cela crée un conflit avec le séparateur de champ, toutes les virgules à l'intérieur des chaînes ont été remplacées par des points-virgules (c'est-à-dire ',' remplacé par ';'). Cela est vrai uniquement pour l'option '-o csv' et non pour les options par défaut '-o txt', '-o tsv' et '-o xml'.
Visitez la Page des versions et choisissez le fichier exécutable approprié pour votre machine dans la dernière version et téléchargez-le. Renommez l'exécutable en 'lifer' (ou 'lifer.exe' pour Windows). Assurez-vous qu'il a les attributs corrects pour être exécuté en tant que fichier exécutable et placez-le soit dans un dossier contenant les fichiers de lien que vous souhaitez examiner, soit ajoutez l'emplacement à votre variable PATH et vous serez prêt.
La première chose à faire est de vous assurer que git est installé sur votre machine/appareil ; dans un shell en ligne de commande, accédez au répertoire racine de votre projet souhaité et exécutez la commande :
git clone https://github.com/Paul-Tew/lifer.git
Un nouveau répertoire nommé 'lifer' sera créé.
(Cela peut fonctionner pour les installations Mac mais je n'ai pas le genre d'argent nécessaire pour le tester avec certitude...) Comme cet outil est assez basique, les dépendances sont minimes, assurez-vous d'avoir le compilateur 'gcc' et les bibliothèques de développement 'libc' appropriées installées, c'est tout. Ouvrez un terminal en ligne de commande et accédez au répertoire ./lifer/src. Exécutez la commande :
gcc -Wall ./lifer.c ./liblife/liblife.c ./libbin2hex/libbin2hex.c -o lifer
Si aucun avertissement ou erreur n'apparaît, vous devriez maintenant avoir un fichier exécutable 'lifer' dans le répertoire, vous voudrez peut-être vérifier cela en exécutant la commande :
ls -la
Si tout va bien, vous pouvez tester que lifer fonctionne en l'essayant sur le fichier spécifié dans le document Microsoft que j'ai inclus dans le dépôt git que vous avez cloné et qui devrait se trouver dans le répertoire ./Test/. Vous pouvez le faire en exécutant la commande :
./lifer ./Test/Test.lnk
Vous pouvez également tester que lifer fonctionne sur un ensemble de fichiers de lien dans un répertoire en exécutant la commande :
./lifer ./Test/WinXP/
Installez l'outil sur le système d'exploitation en exécutant la commande :
sudo install ./lifer /usr/bin/
Cela vous permettra d'utiliser lifer n'importe où sur votre système sans avoir à spécifier le préfixe du répertoire (par exemple lifer ./Test/Test.lnk au lieu de ./lifer ./Test/Test.lnk)