Форензика (Forensics) - это компьютерная криминалистика, наука о расследовании киберпреступлений, то есть прикладная наука о раскрытии преступлений, связанных с компьютерной информацией. Неотъемлемой частью форензики является исследование цифровых доказательств, использование методов поиска, получения и закрепления данных доказательств.
Когда произошел инцидент, необходимо оперативно получить ответы на следующие вопросы:
- понять, как была реализована атака;
- построить сценарий взлома;
- восстановить хронологию (таймлайн) атаки;
- собрать артефакты, оставшиеся после атаки следы, и проанализировать их;
- предложить превентивные защитные меры, чтобы такого впредь не повторилось.
Форензика делится на следующие направления:
- computer forensics – к ней относится все, что связано с поиском артефактов взлома на локальной машине: анализ ram, hdd, реестра, журналов ОС и т. д.;
- network forensics – анализ сетевого трафика;
- forensic data analysis – посвящена анализу файлов, структур данных и бинарных последовательностей, оставшихся после атаки или использовавшихся при вторжении;
- mobile device forensics – занимается всем, что касается особенностей извлечения данных из android и ios;
- hardware forensic – экспертиза аппаратного обеспечения и технических устройств прошивки, bios и т. д.
В задачи исследователя входит анализ скомпрометированной машины на наличие доказательств компрометации (улик). То есть, по сути, нам важно понимать, как злоумышленник проник в систему, какие уязвимости он использовал, какие учетные записи были скомпрометированы и т. д.
Важно отметить, что доказательства должны быть сохранены в исходном виде, для того чтобы впоследствии эксперты со стороны защиты не смогли заявить, что эти доказательства были подделаны или изменены.
Экспертиза взломанного хоста состоит из Статического анализа и Динамического анализа.
Статический анализ
Задачи статического анализа:
- создать образ жесткого диска или дампа оперативной памяти;
- выявить и восстановить удаленные файлы;
- остатки аномальных файлов в %temp% и системных директориях;
- собрать историю серфинга веб-браузера;
- системные логи события авторизации;
- аудит доступа к файлам и директориям и т. д.;
- получить список запущенных в памяти процессов и открытых коннектов сети.
Динамический анализ
Динамический анализ использует нарезку из снимков состояния системы, запускаемой в различных условиях для получения полной картины происходящего для сохранения артефактов. Типичный пример – снимки состояния виртуальных машин (снапшоты).
Каков алгоритм действий в случае выявления скомпрометированной системы? Ни в коем случае не выключаем питание скомпрометированного узла! Дело в том, что многие вредоносы могут либо не иметь файлового тела, либо файл хорошо обфусцирован. В случае отключения питания мы теряем содержимое оперативной памяти и, следовательно, возможные доказательства.
С другой стороны, мы не можем оставлять взломанному компьютеру доступ к сети, так как вредонос или хакер может продолжить выполнять какие-то атакующие действия. Просто выдергивать сетевой кабель или гасить беспроводной интерфейс тоже не стоит, так как вредонос может воспринять подобные действия как обнаружение и выгрузить себя из системы.
Лучшим способом изоляции является ограничение доступа к сети на канальном или сетевом уровне, т.е. можно оперативно поместить проблемную машину в отдельный VLAN или подсеть.
Общая последовательность действий при сборе артефактов: сначала дамп RAM, потом дамп диска.
Для сбора дампов жестких дисков необходимо воспользоваться специализированными утилитами, например решениями от Paragon/Acronis. После того как дамп диска создан, образ можно развернуть в тестовой среде для последующего анализа.
Для сбора дампов оперативной памяти следует до перезагрузки машины запустить специальную утилиту, например Live Ram Capturer или Magnet RAM Capture.
Можно, конечно, использовать штатные средства операционной системы, но они сохранят не все данные, например не получится сохранить системные области.
Для обработки собранных данных можно прибегнуть к специальным дистрибутивам:
Deft, Remnux, Parrot OS.
Также можно воспользоваться специальными утилитами для анализа дампов памяти:
Keefarce, Rekall, Volatility.
Если нам необходимо собрать информацию об активности пользователей на хосте под управлением Window то прежде всего необходимо сделать дамп памяти системы. Используем Belkasoft Live RAM Capturer (https://belkasoft.com/ru/ram-capturer). Эта утилита является бесплатной и предназначена для создания полного дампа памяти системы.
Размер созданного файла дампа будет равен размеру оперативной памяти на данной машине. Так что если у вас сервер с 128 Гб RAM, то неплохо бы заранее подумать о том, как вы будете копировать этот файл. Что можно сделать с полученным файлом? Конечно, можно анализировать вручную, например с помощью шестнадцатеричного редактора. Но на практике это будет крайне неэффективно, так как необходимо будет самостоятельно разбираться в структуре памяти, в какой области что хранится, какие адреса используются и т. д. Гораздо лучше использовать анализаторы дампов, например Volatility (https://www.volatilityfoundation.org/). Эта утилита также является бесплатной. Для работы с ней достаточно командной строки.
Другой вариант когда у нас уже имеется файл, который, скорее всего на 99%, содержит вредоносный код. Варианты с отправкой этого файла на virustotal.com мы рассматривать не будем, так как это слишком просто. Можно, конечно, поднять виртуалку/контейнер с Windows/Linux и в нем с помощью специальных инструментов анализировать работу данного файла.
Естественно, использовать свою рабочую машину для анализа вредоносов – идея, мягко говоря, не очень хорошая. Рано или поздно вы не уследите, и вредонос выполнится полностью и захватит контроль над машиной. Поэтому изоляция его работы внутри контейнера или виртуальной машины будет наилучшим решением. Можно, конечно, самостоятельно подготовить образ с нужным набором инструментов, но гораздо удобнее использовать уже готовый образ, содержащий основной набор инструментов, который при необходимости уже можно дополнить своими средствами анализа.
Дистрибутив REMnux
Мы будем использовать инструмент REMnux в качестве нашего инструментария для анализа вредоносных программ. Данный образ доступен для загрузки на сайте REMnux.org. Он включает в себя сотни предварительно настроенных инструментов и поэтому очень популярен среди специалистов по анализу вредоносных программ. Получить REMnux можно несколькими способами. Прежде всего можно загрузить готовую виртуальную машину в виде виртуального устройства (OVA). Удобно при использовании VirtualBox. В готовом образе создан пользователь remnux с паролем malware.
Установка REMnux
Также можно установить с нуля в выделенной системе под управлением ОС Ubuntu. Для этого сначала загрузим установочный файл:
wget https://REMnux.org/remnux-cli
Проверьте, что хеш SHA256 загруженного файла соответствует ожидаемому значению. Сделать это можно с помощью такой команды:
sha256sum remnux-cli
Настройте установщик REMnux, выполнив следующие команды:
mv remnux-cli remnux
chmod +x remnux
sudo mv remnux /usr/local/bin
Стоит отметить, что минимальная версия Ubuntu включает в себя очень мало компонентов. Поэтому установите GnuPG, чтобы установщик REMnux мог автоматически проверять подпись файлов конфигурации REMnux, которые он загрузит в процессе установки. Для установки GnuPG запустите
sudo apt install -y gnupg
Теперь вы готовы к установке дистрибутива REMnux. Если вы планируете запустить REMnux локально, запустите установку, выполнив команду
sudo remnux install
Как только установка REMnux завершится, перезагрузите вашу новую систему REMnux, набрав
sudo reboot
Вариант Remnux в контейнере
Еще одним достаточно удобным вариантом использования Remnux является его запуск как контейнера Docker. Общий вид команды для запуска такого контейнера:
docker --rm -it -u remnux remnux/remnux-дистрибутив bash
Если у вас установлен Docker, вы можете запустить контейнер дистрибутива REMnux в интерактивном режиме, как описано ниже. Следующая команда автоматически загрузит образ дистрибутива (приблизительно 4 ГБ), если в вашей системе его еще нет.
Чтобы запустить версию REMnux, созданную поверх Ubuntu 20.04 (Focal):
docker run --rm -it -u remnux remnux/remnux-distro:focal bash
Чтобы сопоставить локальный каталог с каталогом контейнера /home/remnux/files, вы могли бы использовать команду, подобную этой, указав соответствующее имя каталога следующим образом:
docker run --rm -it -u remnux -v <local_directory>:/home/remnux/files remnux/
remnux-distro bash
Чтобы получить доступ к контейнеру дистрибутива REMnux с помощью SSH, вы можете вызвать его, сопоставив TCP-порт 22 вашей системы с внутренним TCP-портом 22 контейнера. Один из способов сделать это – использовать следующую команду, которая откроет прослушивание SSH и запустит контейнер в фоновом режиме. Чтобы запустить версию REMnux, созданную поверх Ubuntu 20.04 (Focal):
docker run -d -p 22:22 remnux/remnux-distro:focal
Ваша forensics-лаборатория готова.
По материалам книги Бирюкова А. А. "Реверсивный инжиниринг приложений под Windows".
Успехов.
No comments:
Post a Comment
А что вы думаете по этому поводу?