Создание событий
Начнем с подготовки набора данных, который мы будем использовать в исследованиях.
info
Все описанные эксперименты я провожу на VMware Workstation 14 Pro. Соответственно, зависимые от гипервизора команды в статье приведены для нее.
Для подготовки тестовых событий нам понадобится две виртуальные машины: на одной будет работать Windows 10, на второй — Kali Linux 2021.2. Если будешь собирать тестовую среду самостоятельно, рекомендую не делать большой диск для винды, хватит и 40 Гбайт — потом все процессы будут протекать быстрее. Плюс для большей наглядности при анализе рекомендую установить на подопытную машину Sysmon. Про эту утилиту в рубрике «Админ» была статья «Sysmon для безопасника». Когда мы пойдем по следам злоумышленника, ты поймешь, в чем ценность этой утилиты.
Описывать заражение и постэксплуатацию системы не буду, чтобы в дальнейшем нам было интереснее добывать из образа улики. Все равно, если ты внимательно читаешь статьи из рубрики «Взлом», ничего нового я тебе не расскажу.
После того как мы от души пошалили в подопытной системе, пришла пора снимать маску киберпреступника и доставать чемоданчик криминалиста.
info
Делать именно так, как описано ниже, необязательно. В статье я привожу общий подход для всех подобных ситуаций, в том числе на реальном железе. Инструмент Plaso, которым мы будем пользоваться, успешно скушает и образ от виртуалки, если он у тебя хранится одним файлом .vmdk.
После сбора улик с виртуалки я еще раз закину на атакуемую систему шелл, зачищу логи с помощью команды clearev из Meterpreter и сделаю повторный сбор улик. В конце статьи посмотрим, насколько эффективно Meterpreter умеет заметать следы и можно ли на него в этом полагаться.
Выключим обе виртуалки, подкинем в Kali вторым жестким диском виртуальный диск от Windows и настроим для Kali Shared Folder на жестком диске твоего хостового компа, где будет достаточно свободного места, чтобы сделать побайтовую копию диска винды. Если ты выделил на нее 40 Гбайт, то на диске должно быть минимум столько же свободного места.
Загрузимся в Kali, создадим точку монтирования и подмонтируем Shared Folder:
$ sudo mkdir /mnt/hgfs
$ sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other
Находим интересующий нас жесткий диск:
$ sudo fdisk -l
В нашем случае это sda
. Запускаем создание побайтовой копии:
$ sudo dd if=/dev/sda of=/mnt/hgfs/dd/disk1.dd bs=8M
Дожидаемся окончания копирования и выключаем виртуалку. Теперь, согласно всем протоколам, осталось посчитать контрольную сумму от полученного образа, и можно вносить флюгергехаймер.
Plaso
Plaso (рекурсивный акроним от исландского Plaso Langar Að Safna Öllu, или для тех, кто не очень понимает исландский, «Plaso хочет собрать все») — инструмент, разработанный на Python, основная задача которого — построить супертаймлайн‑всего‑возможного‑что‑происходило‑в-системе и выплюнуть все это в один гигабайтный CSV.
Релиз 1.0.0 состоялся 5 декабря 2012 года, хотя если смотреть глубже, на утилиту log2timeline, написанную на Perl, то первое упоминание на Forensics Wiki датируется аж 28 августа 2009-го. В те времена некоторые нынешние компьютерные хулиганы еще только начали посещать частные детские дошкольные учреждения, в которых им, к сожалению, ничего про уголовный кодекс не рассказывали.
Установка
Для установки Plaso (на момент написания статьи актуальный релиз 20210606) особых скиллов не требуется, на Linux так и вообще все, что тебе нужно, — терминал и доступ в интернет. На случай, если тебе захочется покопаться в исходниках, клонируй репозиторий, если не захочется — используй pip.
$ sudo apt-install python3-pip
$ pip install plaso elasticsearch
Далее устанавливаем все требуемые зависимости:
$ pip install -r requirements.txt
В файле requirements.txt отсутствуют опциональные зависимости chardet, fakeredis и mock, поэтому еще одна команда, и все успешно заведется:
$ pip install chardet fakeredis mock
На винде дела обстоят посложнее только лишь из‑за того, что тебе придется доустановить в систему Build Tools for Visual Studio. Но проблема решается элементарно, если у тебя есть в загашнике установочный пакет Visual Studio 2017 (именно с ним у меня все получилось). Запусти установку и выбери в разделе Individual components компонент VC++ 2015.3 v14.00 (v140) toolset for desktop. После этого все зависимости установятся через pip.
Набор инструментов
В состав Plaso входит несколько утилит, они находятся в каталоге tools.
image_export — утилита для извлечения из устройства или его образа файлов по различным критериям: начиная c расширения и путей, заканчивая сигнатурами и временем создания или модификации. Кроме того, данный инструмент после извлечения файлов сгенерирует файл hashes.
, в который попадут хеш‑значения всех извлеченных файлов для дальнейшей проверки, например на VirusTotal.
Примеры запуска:
py image_export.py disk1.dd
Параметры --names
, --extensions
и --date-filter
не должны вызвать у тебя никаких вопросов, рассмотрим подробнее только извлечение по сигнатурам.
py image_export.py --signatures list
Эта команда выведет все описанные в data\
сигнатуры, которые можно поискать среди исследуемых файлов для извлечения. Понятное дело, в конфиге записаны только базовые сигнатуры на все случаи жизни, но никто не мешает самостоятельно добавить в конфиг строку с необходимой тебе специфической сигнатурой файла, главное при этом — выбрать уникальный идентификатор.
Например, извлечь все файлы Windows PE можно с использованием готовой сигнатуры exe_mz
:
py image_export.py --signatures exe_mz disk1.dd
log2timeline — основной инструмент, с которого, собственно, двенадцать лет назад все и началось. Он используется для извлечения разных событий из файлов, каталогов (например, точек монтирования), устройства или его образа. В результате работы утилита формирует файл в формате Plaso, в дальнейшем он и будет использоваться для анализа.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»