
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)
Le projet github lifer est livré avec une solution de projet Visual Studio 2017, donc le moyen le plus simple de créer un exécutable Windows est d'installer d'abord Visual Studio 2017. Il existe une version gratuite (appelée version 'community') disponible ici. Une fois Visual Studio installé :
cd "F:\\lifer\src\x64\Debug\"
.\lifer.exe ..\..\Test\Test1.lnk
Il est possible de fabriquer lifer sous Windows sans installer Visual Studio mais vous aurez toujours besoin de télécharger et d'installer les outils de construction Visual C++ disponibles ici Une fois installés, lifer peut être construit dans le répertoire ./src/ en exécutant la commande :
CL lifer.c .\liblife\liblife.c .\Win\dirent.c .\Win\getopt.c .\libbin2hex\libbin2hex.c
'lifer' était à l'origine un outil uniquement Linux/GNU qui n'était pas vraiment portable sous Windows jusqu'à ce que je trouve des solutions aux principaux obstacles que sont la navigation dans un répertoire et l'analyse des options de ligne de commande de la même manière que GNU. Pour cela, je suis profondément reconnaissant envers les deux projets suivants :
Les utilisateurs sont encouragés à lire le livre blanc avant d'attribuer une signification aux résultats. Aucun résultat ne doit être attribué à cet outil sans une compréhension COMPLÈTE de ce que représente la sortie ; cela s'applique particulièrement aux questions de fait pour une détermination devant un tribunal. Dans de tels cas, il incombe à l'utilisateur de comprendre pleinement les deux documents susmentionnés ainsi que d'avoir une maîtrise complète de la façon dont Windows et les autres systèmes d'exploitation traitent la création, le déplacement et la suppression de ces fichiers. Une connaissance pratique de la façon dont 'lifer' a interprété et présenté les données est également nécessaire (cela nécessite de lire et de comprendre le code).
Je ne suis qu'un programmeur autodidacte, donc il y a sans doute une multitude d'erreurs et de 'pièges' dans le code. Pour cette raison, je ne fais absolument AUCUNE promesse que cet outil n'endommagera pas votre système. J'ai essayé de ne pas casser votre machine, mais le chemin de l'enfer est pavé de bonnes intentions...
CE MATÉRIEL EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER OU DE NON-CONTREFAÇON. CERTAINES JURIDICTIONS N'AUTORISENT PAS L'EXCLUSION DES GARANTIES IMPLICITES, DE SORTE QUE L'EXCLUSION CI-DESSUS PEUT NE PAS S'APPLIQUER À VOUS. EN AUCUN CAS JE NE SERAI TENU RESPONSABLE ENVERS UNE PARTIE POUR DES DOMMAGES DIRECTS, INDIRECTS, SPÉCIAUX OU AUTRES DOMMAGES CONSÉCUTIFS DÉCOULANT DE L'UTILISATION DE CE MATÉRIEL, Y COMPRIS, SANS LIMITATION, TOUTE PERTE DE PROFITS, INTERRUPTION D'ACTIVITÉ, PERTE DE PROGRAMMES OU D'AUTRES DONNÉES SUR VOTRE SYSTÈME DE TRAITEMENT DE L'INFORMATION OU AUTREMENT, MÊME SI NOUS AVONS ÉTÉ EXPRESSÉMENT AVISÉS DE LA POSSIBILITÉ DE TELS DOMMAGES.
Paul Tew - Mars 2020