
Анализатор файлов-ссылок Windows (ярлыков)
Инструмент криминалистической экспертизы для анализа файлов ссылок Windows (т.е. ярлыков Windows)
lifer — это инструмент командной строки для Windows или *nix, вдохновлённый техническим документом 'The Meaning of Link Files in Forensic Examinations' Гарри Парсонажа и доступным здесь. Он начинался как лёгкий инструмент, который я написал для извлечения определённой информации из файлов ссылок, чтобы помочь в расследованиях, которые я проводил, работая компьютерным криминалистом. Теперь я на пенсии, но я стремлюсь расширить его полезность и опубликовать, чтобы другие могли извлечь пользу.
Извлекаемая информация соответствует спецификации Microsoft Open Specification Document 'MS-SHLLNK', которую можно найти онлайн здесь. На момент написания реализованы большинство частей спецификации версии 4.0. Я надеюсь в будущем реализовать разбор неоткрытых файлов списков переходов.
Подробности о файлах, находящихся в каталоге Test, и о том, как их использовать, приведены в файле '.\Test\Tests.txt'. Ниже приводится краткое описание...
После установки инструмента откройте командную оболочку (например, bash или Powershell) и из каталога './lifer/src' введите:
lifer -s ./Test/Test1.lnk
Это должно дать следующий вывод:
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
ПРИМЕЧАНИЕ: Раздел выше под названием '{OPERATING SYSTEM (stat) DATA}' будет иметь разные даты, так как они будут зависеть от дат установки и доступа к этому файлу ссылки на вашей системе. Однако встроенные данные останутся теми же.
Более полный вывод (включая более точные временные метки) можно получить, опустив параметр '-s'.
Наибольшую детализацию о файле ссылки можно получить, используя параметр '-i', который также выводит известные сведения о любых объектах idlist. Этот параметр несовместим с параметром '-s'.
Все файлы ссылок в каталоге (папке) можно разобрать, просто передав имя каталога:
lifer ./src/Test/WinXP
(для краткости вывод не показан).
Наиболее полезный вывод для нескольких файлов ссылок можно создать, направив вывод в виде списка, разделённого табуляцией (или запятыми), в файл, который затем можно импортировать в электронную таблицу для анализа в удобное время. Это можно сделать так:
lifer -o tsv ./src/Test/WinXP > WinXP.tsv
или
lifer -so tsv ./src/Test/WinXP > WinXP.tsv
для файла, в котором удалены некоторые избыточные и неинтересные данные.
Строки в файлах ссылок иногда могут содержать запятые. Поскольку это вызывает конфликт с разделителем полей, все запятые внутри строк были заменены точкой с запятой (т.е. ',' заменено на ';'). Это верно только для параметра '-o csv', а не для параметров по умолчанию '-o txt', '-o tsv' и '-o xml'.
Посетите Страницу релизов и выберите подходящий исполняемый файл для вашей машины из последнего релиза и скачайте его. Переименуйте исполняемый файл в 'lifer' (или 'lifer.exe' для Windows). Убедитесь, что он имеет правильные атрибуты для запуска как исполняемый файл, и либо поместите его в папку, содержащую файлы ссылок, которые вы хотите исследовать, либо добавьте его расположение в переменную PATH, и всё будет готово.
Первое, что нужно сделать — убедиться, что на вашей машине/устройстве установлен git; в командной оболочке перейдите в желаемый корневой каталог проекта и выполните команду:
git clone https://github.com/Paul-Tew/lifer.git
Будет создан новый каталог с именем 'lifer'.
(Это может сработать для установок на Mac, но у меня нет тех денег, чтобы проверить это наверняка...) Поскольку этот инструмент довольно простой, зависимости минимальны: убедитесь, что у вас установлен компилятор 'gcc' и соответствующие библиотеки разработки 'libc', и всё. Запустите терминал командной строки и перейдите в каталог ./lifer/src. Выполните команду:
gcc -Wall ./lifer.c ./liblife/liblife.c ./libbin2hex/libbin2hex.c -o lifer
Если предупреждений или ошибок не появилось, у вас теперь должен быть исполняемый файл 'lifer' в каталоге. Вы можете проверить это, выполнив команду:
ls -la
Если всё в порядке, то вы можете проверить, что lifer работает, протестировав его на файле, указанном в документе Microsoft, который я включил в состав клонированного вами git-репозитория и который должен находиться в каталоге ./Test/. Это можно сделать, выполнив команду:
./lifer ./Test/Test.lnk
Вы также можете проверить, что lifer работает с группой файлов ссылок в каталоге, выполнив команду:
./lifer ./Test/WinXP/
Установите инструмент в ОС, выполнив команду:
sudo install ./lifer /usr/bin/
Это позволит вам использовать lifer в любом месте вашей системы без указания префикса каталога (например, lifer ./Test/Test.lnk вместо ./lifer ./Test/Test.lnk)
Проект lifer на github включает полное решение для Visual Studio 2017, поэтому самый простой способ создать исполняемый файл Windows — сначала установить Visual Studio 2017. Бесплатная версия (известная как 'community') доступна здесь. После установки Visual Studio:
cd "F:\\lifer\src\x64\Debug\"
.\lifer.exe ..\..\Test\Test1.lnk
Собрать lifer в Windows можно и без установки Visual Studio, но вам всё равно потребуется скачать и установить инструменты сборки Visual C++, доступные здесь. После установки lifer можно собрать в каталоге ./src/, выполнив команду:
CL lifer.c .\liblife\liblife.c .\Win\dirent.c .\Win\getopt.c .\libbin2hex\libbin2hex.c
'lifer' изначально был инструментом только для Linux/GNU, который не был по-настоящему переносим в Windows, пока я не нашёл решения основных препятствий: навигации по каталогу и разбора параметров командной строки так же, как это делает GNU. За это я глубоко признателен следующим двум проектам:
Пользователям рекомендуется прочитать технический документ перед тем, как придавать какое-либо значение результатам. Никакие результаты не должны приписываться этому инструменту без ПОЛНОГО понимания того, что представляет собой вывод; это особенно относится к вопросам факта для определения в суде. В таких случаях пользователь обязан полностью понимать оба вышеупомянутых документа, а также иметь всестороннее представление о том, как Windows и другие ОС обрабатывают создание, перемещение, удаление таких файлов. Также требуется рабочее понимание того, как 'lifer' интерпретировал и представил данные (для этого требуется прочитать и понять код).
Я всего лишь программист-самоучка, поэтому, несомненно, в коде есть множество ошибок и 'подводных камней'. В связи с этим я НИКАК не гарантирую, что этот инструмент не навредит вашей системе. Я очень старался не сломать вашу машину, но дорога в ад вымощена благими намерениями...
ДАННЫЙ МАТЕРИАЛ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ ИЛИ НЕНАРУШЕНИЯ ПРАВ. В НЕКОТОРЫХ ЮРИСДИКЦИЯХ НЕ ДОПУСКАЕТСЯ ИСКЛЮЧЕНИЕ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ПОЭТОМУ ВЫШЕУКАЗАННОЕ ИСКЛЮЧЕНИЕ МОЖЕТ НЕ ОТНОСИТЬСЯ К ВАМ. НИ В КОЕМ СЛУЧАЕ Я НЕ НЕСУ ОТВЕТСТВЕННОСТИ ПЕРЕД КАКОЙ-ЛИБО СТОРОНОЙ ЗА ПРЯМЫЕ, КОСВЕННЫЕ, ОСОБЫЕ ИЛИ ИНЫЕ ПОСЛЕДСТВЕННЫЕ УБЫТКИ, ВОЗНИКШИЕ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ДАННОГО МАТЕРИАЛА, ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, ЛЮБУЮ ПОТЕРЮ ПРИБЫЛИ, ПРЕРЫВАНИЕ ДЕЛОВОЙ АКТИВНОСТИ, ПОТЕРЮ ПРОГРАММ ИЛИ ДРУГИХ ДАННЫХ В ВАШЕЙ ИНФОРМАЦИОННОЙ СИСТЕМЕ ИЛИ ИНЫМ ОБРАЗОМ, ДАЖЕ ЕСЛИ МЫ БЫЛИ ПРЯМО УВЕДОМЛЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
Paul Tew - Март 2020