
Examinador de archivos de enlace de Windows (accesos directos)
Una herramienta forense para el examen de archivos de enlace de Windows (es decir, accesos directos de Windows)
'lifer' es una herramienta de línea de comandos para Windows o *nix inspirada en el documento técnico 'The Meaning of Link Files in Forensic Examinations' de Harry Parsonage y disponible aquí. Comenzó su vida como una herramienta ligera que escribí para extraer cierta información de archivos de enlace para ayudar en las investigaciones que realizaba mientras trabajaba como analista forense informático. Ahora estoy retirado, pero busco ampliar su utilidad y publicarla para que otros puedan beneficiarse.
La información extraída está de acuerdo con el Documento de Especificación Abierta de Microsoft 'MS-SHLLNK' que se puede encontrar en línea aquí. En el momento de escribir esto, la mayoría de las partes de la especificación versión 4.0 están implementadas. Espero implementar el análisis de archivos de lista de saltos no abiertos en el futuro.
Los detalles de los archivos que se encuentran en el directorio Test y cómo usarlos se proporcionan en el archivo '.\Test\Tests.txt'. A continuación se presenta un breve resumen...
Una vez que haya instalado la herramienta, abra un shell de línea de comandos (por ejemplo, bash o Powershell) y desde el directorio './lifer/src' escriba:
lifer -s ./Test/Test1.lnk
Esto debería dar la salida:
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
NOTA: La sección anterior titulada '{OPERATING SYSTEM (stat) DATA}' tendrá fechas diferentes, ya que estas dependerán de las fechas en que instaló y accedió a ese archivo de enlace en su propio sistema. Sin embargo, los datos incrustados serán los mismos.
Se puede obtener una salida más completa (incluyendo marcas de tiempo más precisas) omitiendo la opción '-s'.
Se puede obtener el máximo detalle sobre un archivo de enlace usando la opción '-i', que también imprimirá los detalles conocidos sobre cualquier objeto idlist. Esta opción no es compatible con la opción '-s'.
Todos los archivos de enlace en un directorio (carpeta) se pueden analizar simplemente pasando el nombre del directorio:
lifer ./src/Test/WinXP
(por brevedad, no se ha mostrado la salida).
La salida más útil para varios archivos de enlace se puede crear enviando la salida como una lista separada por tabuladores (o comas) a un archivo que luego se pueda importar a una hoja de cálculo para su análisis. Esto se puede lograr así:
lifer -o tsv ./src/Test/WinXP > WinXP.tsv
o
lifer -so tsv ./src/Test/WinXP > WinXP.tsv
para un archivo que tenga algunos de los datos superfluos y poco interesantes redactados.
Las cadenas dentro de los archivos de enlace a veces pueden contener comas. Debido a que esto entra en conflicto con el separador de campo, cualquier coma dentro de las cadenas se ha reemplazado con punto y coma (es decir, ',' reemplazado por ';'). Esto solo es cierto para la opción '-o csv' y no para las opciones predeterminadas '-o txt', '-o tsv' y '-o xml'.
Visite la Página de versiones y elija el archivo ejecutable apropiado para su máquina de la última versión y descárguelo. Renombre el ejecutable a 'lifer' (o 'lifer.exe' para Windows). Asegúrese de que tenga los atributos correctos para ejecutarse como un archivo ejecutable y colóquelo en una carpeta que contenga los archivos de enlace que desea examinar, o agregue la ubicación a su variable PATH y estará listo para usar.
Lo primero que debe hacer es asegurarse de tener git instalado en su máquina/dispositivo; en un shell de línea de comandos, cambie al directorio raíz de su proyecto deseado y ejecute el comando:
git clone https://github.com/Paul-Tew/lifer.git
Se creará un nuevo directorio llamado 'lifer'.
(Esto puede funcionar para instalaciones en Mac, pero no tengo el dinero necesario para probarlo a ciencia cierta...) Debido a que esta herramienta es bastante básica, las dependencias son mínimas; asegúrese de tener instalado el compilador 'gcc' y las bibliotecas de desarrollo 'libc' correspondientes, eso es todo. Inicie un terminal de línea de comandos y navegue hasta el directorio ./lifer/src. Ejecute el comando:
gcc -Wall ./lifer.c ./liblife/liblife.c ./libbin2hex/libbin2hex.c -o lifer
Si no aparecieron advertencias o errores, ahora debería tener un archivo ejecutable 'lifer' en el directorio; es posible que desee verificarlo ejecutando el comando:
ls -la
Si todo está bien, puede probar que lifer funciona probándolo en el archivo especificado en el documento de Microsoft que incluí como parte del repositorio git que clonó y que debería estar en el directorio ./Test/. Puede hacerlo ejecutando el comando:
./lifer ./Test/Test.lnk
También puede probar que lifer funciona en un conjunto de archivos de enlace en un directorio ejecutando el comando:
./lifer ./Test/WinXP/
Instale la herramienta en el SO ejecutando el comando:
sudo install ./lifer /usr/bin/
Esto le permitirá usar lifer en cualquier lugar de su sistema sin especificar el prefijo del directorio (por ejemplo, lifer ./Test/Test.lnk en lugar de ./lifer ./Test/Test.lnk)