Содержание статьи
Расследование киберинцидентов — это очень увлекательное занятие, требующее определенных знаний и навыков. Отточить их помогают специальные лабораторные работы, имитирующие реальные случаи успешных атак злоумышленников и взлома, с которыми встречаются на практике специалисты по информационной безопасности. Сегодня мы разберем лабораторную работу Pwned-DC с ресурса CyberDefenders.
По сценарию лабораторной работы произошел взлом Active Directory, злоумышленники смогли захватить корпоративный контроллер домена. Наша задача — провести расследование инцидента и узнать, как хакерам удалось проникнуть в сеть. Для исследования у нас имеется побитовая копия системного диска скомпрометированной машины, оперативной памяти, а также информация об объектах домена.
Загрузим файл образов и начнем их исследовать.
По результатам разбора этой лабораторной необходимо ответить на ряд вопросов, но я покажу только само решение и не буду озвучивать ответы. Тебе придется повторить весь процесс самостоятельно — так ты лучше поймешь и закрепишь материал.
Инструменты
- Утилиты Eric Zimmerman: Registry Explorer, MFTECmd.
- Утилиты Nirsoft: fulleventlogview, winprefetchview, browsinghistoryview, TurnOnTimesView.
- R-Studio — утилита для восстановления данных с диска.
- Volatility Framework 2.6.1 — инструмент, реализованный на Python версии 2 и предназначенный для извлечения артефактов из образов энергозависимой памяти.
- PST-Extractor — инструмент для восстановления PST-контейнеров в EML.
- Scdbg — программа для анализа shell-кода.
- Srum-dump — утилита для извлечения информации из базы данных управления использованием системных ресурсов.
- FTK Imager — инструмент для анализа и получения образов диска.
- WinDbg x64 — утилиты для анализа аварийных дампов.
- Olevba — инструмент для извлечения и анализа исходного кода макросов VBA из документов MS Office (OLE и OpenXML).
Плагины Volatility2 для извлечения данных
- Imageinfo — плагин для определения операционной системы, пакета обновлений и аппаратной архитектуры исследуемого образа.
- Pstree позволяет просматривать список процессов в виде дерева.
- Memdump извлекает все резидентные страницы памяти в процессе.
- Filescan — плагин для поиска объектов FILE_OBJECT в памяти с помощью сканирования тегов пула. Этот плагин найдет все открытые файлы.
- Dumpfiles извлекает кешированные файлы из образа памяти.
- Netscan ищет сетевые артефакты в 32- и 64-разрядных дампах памяти. Этот плагин находит конечные точки TCP, UDP, а также локальные и удаленные IP-адреса.
- Printkey ищет значения в указанном разделе реестра Windows.
-
Userassist позволяет получить информацию из ключа реестра
UserAssist
. - Mftparser — этот плагин сканирует записи главной таблицы файлов (MFT) в памяти и выводит информацию о временных метках файлов.
-
Autoruns — подключаемый плагин для поиска точек сохранения исполняемых файлов в системе. Для его подключения необходимо добавить плагин в каталог
plugins
инструмента Volatility. - Volshell — плагин для интерактивного изучения образа памяти, использует IPython.
- Procdump — плагин для получения дампа исполняемого файла.
- Hivelist — плагин для поиска виртуальных адресов кустов реестра.
Объекты домена
В архиве задания содержится файл 20211122102526.
, который хранит информацию об объектах домена. Загрузим его в BloodHound версии 4.0.1.
Перейдем на вкладку Analysyis → Find Shotest Paths to Domain Admins и проанализируем короткий путь до компрометации контроллера домена.
Задача злоумышленника в сети организации — получить доступ к учетной записи пользователя 0xMohammed
, который входит в группу Domain
.
Образ диска AD.E01
Примонтируем файл побитовой копии диска AD.E01 и извлечем из него необходимые артефакты. Для этого откроем утилиту FTK Imager, перейдем на вкладку File → Image Mounting. В поле Image File выберем образ AD.E01, а затем введем указанные ниже настройки.
Нажимаем Mount — исследуемый образ должен примонтироваться к файловой системе.
Получим информацию из кустов реестра SYSTEM
и SOFTWARE
(C:\
), загрузим их в утилиту Registry Explorer. Затем переходим в раздел File → Load hive и выбираем исследуемый файл.
Чтобы получить информацию об операционной системе, перейдем в ключ реестра SOFTWARE\
.
Версия операционной системы — Windows 10 Enterprise 2016 LTSB. Теперь просмотрим ключ реестра SYSTEM\
и получим информацию об имени компьютера.
Имя компьютера: PC01
.
Теперь откроем ключ реестра SYSTEM\
и получим информацию о сетевых настройках.
IP-адрес исследуемого хоста — 192.
.
Получим информацию о примонтированных дисках. Для этого перейдем в ветку реестра SYSTEM\
: нас интересует GUID диска C.
Из значения на рисунке выше следует, что GUID диска C — fad905b3-fb35-4dbd-ab31-a44f022809d2
, такую же информацию можно получить из логов системы, просмотрев событие eventid
журнала Microsoft-Windows-Ntfs/
.
Теперь найдем порты служб на PC01, для этого перейдем к файлу Windows/
.
Здесь мы можем увидеть, что служба Remote
работает на порте 9535
. Проанализируем файл System.
и найдем отметку времени, когда произошло незапланированное отключение, а также узнаем, сколько времени проработал компьютер. Для этого можно воспользоваться утилитой TurnOnTimesView, либо придется анализировать лог вручную.
21.11.2021 питание машины незапланированно отключилось, до этого компьютер проработал 11 часов и 31 минуту (об этом говорит значение 11:
).
Начнем анализировать логи. Для этого откроем утилиту fulleventlogview, нажмем Choose Data Store → Load events from external folder with log files и укажем путь к папке с логами Windows\
.
Отфильтруем логи по событию 4624
и посмотрим, кто авторизовывался в системе последний раз перед инцидентом. Для этого переходим на вкладку Options → Advanced Options, выбираем Show only the specified events IDs и вводим наше событие.
23.11.2021 в 23:36:05 UTC пользователь 0xMohammed
авторизовался в системе — это был последний зарегистрированный логин перед взломом.
Проанализируем историю браузера Firefox пользователя labib
. Для этого воспользуемся утилитой BrowsingHistoryView: перейдем на вкладку Options → Advanced Options и укажем путь до пользовательского каталога.
Пользователь labib
22.11.2021 в 19:45:52 UTC посетил сайт bluedemy.
.
Проанализируем базу данных управления использованием системных ресурсов (srum), которая присутствует в современных системах Windows и собирает статистику выполнения двоичных файлов. Эта база хранится в файле C:\
. С использованием утилиты srum-dump проанализируем srum и найдем, сколько байтов было принято браузером Firefox.
Не забываем также указать файл SRUM_TEMPLATE.
, который загружаем из репозитория утилиты.
Открываем выходной файл SRUM_DUMP_OUTPUT.
, переходим на лист Network Data Usage, находим firefox.
и анализируем таблицу. Количество полученных данных — 20418287
.
Теперь посмотрим, какие последние файлы запускал пользователь labib
. Переходим по пути С/
и в этом каталоге находим файл 20211119103954_BloodHound.
, созданный 19.11.2021.
В ссылке на файл указан путь к архиву C:\
, содержащий информацию об объектах домена. Эта информация собиралась для анализа в BloodHound.
Проанализируем MFT с помощью утилиты MFTECmd. Из корня файловой системы извлечем файл $MFT
, это можно сделать с помощью R-Studio или FTKImager.
В каталоге Users/
создан файл Business.
с меткой времени 22.11.2021 22:40:06, этот файл содержит информацию о пользователях домена и их деятельности в компании. Найдем указанный файл в таблице MFT:
MFTECmd.exe -f "C:\Users\DonNod\Downloads\AD-101\AD-E01\MFT" --csv "AD-101\AD-E01"
В файле вывода утилиты MFTECmd обнаруживаем Business.
и его поле LogfileSequenceNumber
, которое имеет значение 1422361276
.
Попробуем получить пароль пользователя 0xMohammed
, который входит в группу администраторов домена. Выгрузим ветки реестра SAM
, SYSTEM
, SECURITY
и вытащим из них хеши пользователей. Для этого воспользуемся скриптом secretdum.
из пакета Impacket.
На хосте PC01 авторизовывался доменный пользователь 0xMohammed
, его данные сохранены в кеше. С помощью утилиты hashcat сбрутим mccache2 хеша пользователя 0xMohammed
:
$DCC2$10240#0xMohammed#e7b8d19008520207ca8ef94680db0f28
В результате этой операции выясняется, что его пароль — 0xmohammed!
.
Теперь попытаемся узнать, как злоумышленник скомпрометировал хост PC01. Анализируя файлы, в каталоге C:\
пользователя labib
мы обнаруживаем почтовый контейнер Outlook. Преобразуем контейнер в eml-сообщения, для этого откроем утилиту PST-Xtracrot, загрузим в нее контейнер и нажмем Convert. После этого можно проанализировать все сообщения антивирусными средствами, чтобы поискать вредоносные вложения.
Среди сообщений пользователя мы обнаруживаем вредоносное вложение. Сообщение отправлено 12/
с почтового сервера 159.
. В качестве вложения используется файл Unpaid
. Выясним, когда пользователь открыл этот файл.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»