Если вы занимаетесь информационной безопасность, то наверняка знакомы с площадками для оттачивания хакерского мастерства, такими как Hack The Box, а для специалистов компьютерной криминалистики существует платформа CyberDefenders. В сегодняшней статье продолжим обучение компьютерной криминалистике, где я познакомлю вас с интересным форензик кейсом взлома Windows. В этом нам поможет лабораторная работа с ресурса — CyberCorp Case 1.
Еще по теме: Форензик кейс взлома серверов Linux
На примере CyberCorp Case 1, я покажу, как вытащить информацию из артефактов Windows. Попробуем понять, как хакер взломал компьютер в сети организации, какой использовал вредонос и как закрепился в операционной системе.
Расследование взлома компьютера Windows
По сценарию форензик кейса в исходящем трафике сети компании CyberCorp был выявлен ряд аномалий, что говорит о взломе. Специалисты ИБ изолировали скомпрометированный хост от сети и собрали важные артефакты Windows. Артефакты лежат в архиве, который необходимо скачать.
По результатам решения кейса нас попросят ответить на ряд вопросов. Я покажу лишь ход решения и не буду подсвечивать ответы. Ради тренировки можете повторить весь процесс самостоятельно и ответить — для закрепления материала.
Полученные артефакты Windows
Amcache.hve — файл реестра, содержит информацию о запускаемых приложениях. Расположение файла Amcache:
1 |
\%SystemRoot%\AppCompat\Programs\Amcache.hve |
AppCompatCache.reg — информация из ключа куста реестра SYSTEM ( C:\Windows\System32\configSystem):
1 |
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache |
В этом ключе содержится артефакт Shimcache — эта функция обеспечивает совместимость старых приложений с более новыми версиями ОС. В нем хранится информация: путь к файлу, время последнего изменения и размер исполняемого файла.
Файлы реестра: default, SAM, SECURITY, software, system. Расположение файлов:
1 |
C:\Windows\System32\config |
Logs — логи ОС. Расположение файлов:
1 |
C:\Windows\System32\winevt\Logs |
User Registry Hives — файл NTUSER.DAT содержит информацию, связанную с действием пользователя. Файлы NTUSER.DAT хранятся в каталоге:
1 |
%userprofile% |
Windows Prefetch — файл оптимизации запуска приложений. Файлы Prefetch могут содержать важную информацию, такую как: имя исполняемого файла, список динамических библиотек, используемых исполняемым файлом, количество запусков исполняемого файла и временную метку, которая указывает, когда приложение было запущено в последний раз. Расположение файлов:
1 |
C:\Windows\Prefetch |
MFT (главная таблица файлов) — системный файл ОС, содержит метаданные объекта файловой системы. MFT находится в корне разделов NTFS, выгрузить его можно инструментом FTK Imager.
OBJECTS.DATA — файл содержит постоянные классы WMI (Windows Management Instrumentation). Расположение файла:
1 |
%SystemRoot%\System32\wbem\Repository |
Memdump — файл образа RAM.
Сетевой трафик, полученный в результате мониторинга сети организации.
Этапы расследования
- Поиск точки входа в систему.
- Поиск способа закрепления.
- Поиск методов бокового перемещения по сети.
Используемые утилиты
- UserAssist.
- Wireshark
- Olevba.
- Volatility 3.
- fulleventlogview, winprefetchview.
- AmcacheParser, Registry Explorer, AppCompatCacheParser, MFTECmd.
Перед началом изучения артефактов взломанного компьютера, надо узнать версию ОС, имя пользователя и дату установки. Для этого загружаем куст реестра software в программу Registry Explorer и переходим к ключу:
1 |
SOFTWARE\Microsoft\Windows NT\CurrentVersion |
На скомпрометированном компьютере стоит Windows 10 Enterprise Evaluation, дата установки — 17.06.2020 (параметр InstallDate), версия сборки ОС — 17134, владелец — John Goldberg.
Переходим к анализу образа оперативной памяти, сетевого трафика и главную таблицу разделов.
Анализ образа оперативной памяти
Начнем с поиска активных сетевых соединении и вредоносного процесса. Это можно сделать с помощью инструмента Volatility 3 (см. также Анализ дампа памяти с помощью Volatility).
Отметим все сетевые соединения с состоянием ESTABLISHED и пробьем все IP-адреса на ВирусТотал.
1 |
python3 vol.py -f memdump.mem windows.netscan.NetScan |
Процесс rundll32.exe (PID 4224) установил подозрительное сетевое соединение с управляющим сервером по IP-адресу 196.6.112.70. Пробьем IP на VirusTotal.
Просмотрим дерево процессов и отыщем процесс с PID 4224.
1 |
python3 vol.py -f memdump.mem windows.pstree.PsTree |
Родительский PID вредоносного процесса:
1 |
rundll32.exe — 7320 |
Но процесса с таким нет.
С помощью плагина malfind из комплекта Volatility 3 находим код, внедренный в адресное пространство процессов ОС.
1 |
python3 vol.py -f memdump.mem windows.malfind.Malfind |
Из скрина выше можно увидеть, что вредоносный код внедрен в адресное пространство процесса winlogon.exe (PID 3232).
Хороший результат! Мы выявили вредоносный процесс и управляющий центр.
Анализ сетевого трафика
Для анализа сетевого трафика воспользуемся сниффером Wireshark и попробуем найтио важные артефакты. В первом дампе трафика находим почтовую сессию по протоколу SMTP. Получим сообщения eml. Для этого перейдем на вкладку «Файл —> Экспортировать объекты —> IMF». Сохраним все сообщения для будущего анализа.
В сообщении от richard.gorn@gmail.com находится зашифрованный архив attach.zip. Попробуем открыть запароленый архив.
Как видите на скрине выше, пароль оказался в самом сообщении.
Анализ вредоносных файлов
В архиве лежит документ:
1 |
Why Saudi Arabia Will Lose The Next Oil Price War.docx (MD5: aa7ee7f712780aebe9136cabc24bf875) |
Меняем расширение на .zip и смотрим его содержимое. Вредоносных макросов здесь нет, но обнаружилась ссылка на загрузку шаблона Supplement.dotm в файле:
1 |
./word/_rels/settings.xml.rels |
Такой вектор атаки называется Remote Template Injection и подробно описан в блоге Сунгвана Цоя.
Основной принцип атаки заключается в следующем. Злоумышленники залили на свой сервер файл шаблона документа Word (.dotm) и внедрили в код документа Why Saudi Arabia... .docx ссылку на загрузку вредоносного шаблона. Если документ открыть, загрузится шаблон, содержащий макрос.
Попробуем получить этот документ из образа оперативной памяти. Для этого воспользуемся плагином FileScan утилиты Volatility 3.
1 |
python3 vol.py -f memdump.mem windows.filescan.FileScan | grep dotm |
Выгрузим документ, расположенный по адресу 0xcd8401aea3f0. Для этого воспользуемся плагином dumpfiles утилиты Volatility 3.
1 |
python3 vol.py -f memdump.mem windows.dumpfiles.DumpFiles --virtaddr 0xcd8401aea3f0 |
Мы получили вредоносный шаблон Microsoft Office c длинным названием и расширением .dotm.dat. Проанализируем шаблон c помощью утилиты olevba. Переименуем его в dotm_malicious.
1 |
olevba dotm_malicious |
В результате работы olevba мы получили скрипт на VBA, содержащийся в шаблоне документа. Исследуем код скрипта.
Вредоносный скрипт загружает полезную нагрузку master_page и сохраняет ее в следующем ключе реестра:
1 |
HKEY_USERS\S-1-5-21-3899523589-2416674273-2941457644-1104\Software\RegisteredApplications\AppXs42fd12c3po92dynnq2r142fs12qhvsmyy |
Далее он загружает PowerShell-скрипт wrapper_page и сохраняет в каталог
1 |
C:\Users\john.golberg\AppData\Roaming\\Microsoft\Office\Recent\tmpA7Z2.ps1 |
Следующим этапом происходит закрепление в системе с использованием WMI, но об этом мы поговорим чуть позже.
Выгрузим скрипт на PowerShell, чтобы изучить его содержимое.
Скрипт берет полезную нагрузку из ключа реестра (переменная $rk), декодирует ее из Base64, а далее выполняется спуфинг родительского процесса dwm.exe. Вредоносная нагрузка загружается в память созданного процесса и мигрирует в процесс winlogon.exe.
Выгрузим вредоносную нагрузку. Загрузим куст NTUSER.DAT пользователя john.goldberg в утилиту Reg Explorer. Перейдем в Software\RegisteredApplications и найдем ключ:
1 |
AppXs42fd12c3po92dynnq2r142fs12qhvsmyy |
Декодируем полезную нагрузку, получим MD5-сумму и проверим ее на VirusTotal.
Анализ MFT
Разберем, в какое время пользователь открыл вредоносный документ Why Saudi Arabia... .docx в системе, чтобы понимать, когда произошел инцидент. Для этого проанализируем файл MFT. Воспользуемся инструментом MFTECmd.exe и выгрузим информацию об объектах файловой системы в файл CSV.
1 |
MFTECmd.exe -f $MFT.copy0 --csv .\RESULT\MFT |
Мы получили файл, содержащий пути ко всем файлам файловой системы, а также метки времени. Через поиск найдем информацию о документе:
1 |
Why Saudi Arabia Will Lose The Next Oil Price War.docx |
Все метки времени в таблице MFT в UTC, но московское время — UTC+3.
В таблице MFT представлены две метки времени создания файла: STANDART_INFO и FILE_INFO. Злоумышленник использует утилиты антикриминалистики, которые изменяют метку времени STANDART_INFO, поэтому необходимо смотреть на метку времени FILE_INFO. Подробности описаны в блоге Cyb3rSn0rlax.
Итак, по результатам первого этапа мы обнаружили, что пользователь john.goldberg получил по электронной почте сообщение, содержащее вредоносное вложение. 20.06.2020 в 22:27:31 (по московскому времени) пользователь открыл документ Why Saudi Arabia... .docx, который загрузил шаблон содержащий макрос с:
1 |
http://75.19.45.11/Suplement.dotm |
Вредоносный макрос загрузил полезную нагрузку и PowerShell-скрипт.
Закрепление в скомпрометированной системе
На этом этапе проанализируем файл OBJECTS.DATA, но сначала немного поговорим о сохранении постоянства в системе с помощью WMI.
WMI (Windows Management Instrumentation) — набор инструментов, предназначенных для управления системами Windows как локально, так и удаленно. Одна из техник закрепления в системе через WMI — это WMI Subscriptions (подписки WMI). Эта техника запускает действие при возникновении события.
Действия и события могут быть определены пользователем. В определениях WMI действия называются потребителями (Consumers), а события — фильтрами (Filters). Существует также третий компонент, который связывает их вместе, — привязка ( __FilterToConsumerBinding).
Значит, наша задача — обнаружить в файле OBJECTS.DATA связку действия и события ( __FilterToConsumerBinding). Можно открыть исследуемый файл с помощью hex-редактора и в поиске вбить строку __FilterToConsumerBinding, но мы воспользуемся утилитой PyWMIPersistenceFinder.
1 |
python PyWMIPersistenceFinder.py OBJECTS.DATA |
Мы обнаружили название события LogRotate Event и название действия Logrotate Consumer.
При возникновении события авторизации пользователя в системе запускается действие — запуск вредоносного скрипта tmpA7Z2.ps1. Вредоносный скрипт запускается, когда пользователь вводит логин и пароль от своей учетной записи и начинает работать в системе.
Боковое перемещение по сети
Для анализа дальнейших действий хакера воспользуемся логами Windows.
Загрузим каталог Logs в утилиту fulleventlogview.exe. Для этого перейдем на вкладку File —> Choose Data Source и укажем путь, где хранятся файлы логов. Перейдем на вкладку Options —> Advanced Options и укажем, с какого времени показать события операционной системы. В качестве начальной точки укажем 20.06.2020 22:27:31 — это метка времени создания вредоносного файла Why Saudi Arabia... .docx.
В 22:27:46 зафиксировано исходящее сетевое соединение к вредоносному ресурсу 75.19.45.11, вызвано файлом winword.exe. Далее выполняется вредоносный макрос, который содержится в загруженном шаблоне.
В 22:31:08 хакер загрузил вспомогательные утилиты для бокового перемещения по сети с адреса:
1 |
http://196.6.112.70/disco.jpg |
Сохранил их в файл:
1 |
C:\Windows\TEMP\disco.jpg |
В 22:31:16 декодировали загруженный файл disco.jpg по алгоритму Base64 и сохранили в файл:
1 |
C:\Windows\TEMP\sh.exe |
В 22:31:34 запустили исполняемый файл sh.exe (сборщик данных для BloodHound), результат работы которого сохранен в файл ddr.zip.
Проанализируем таблицу MFT и посмотрим, какие еще файлы были созданы в каталоге C:\Windows\Temp. Для этого откроем полученный файл CSV, содержащий объекты файловой системы, и найдем все файлы в каталоге Windows\Temp.
В 22:31:38 создан файл с расширением bin.
Следующий этап для злоумышленника — получение логинов и паролей пользователей.
В 22:33:10 перечислили всех локальных администраторов пользователей скомпрометированного компьютера.
В 22:33:18 хакер с применением утилиты reg.exe (программа в Windows для настройки реестра) выгрузил куст реестра hklm\sam и сохранил его в файл:
1 |
C:\Windows\TEMP\sa.tmp |
В 22:33:24 выгрузил куст реестра hklm\system и сохранил в файл:
1 |
C:\Windows\Temp\sy.tmp |
Следующим этапом злоумышленник выгружает файлы sa.tmp и sy.tmp и получает из них NTLM-хеши паролей пользователей. Теперь ему достаточно пробрутить полученные хеши пользователей с имеющимся в его арсенале словарем. Пароль !!feb15th2k6!! — словарный и есть в файле rockyou.txt.
В 22:35:38 злоумышленник узнал пароль !!feb15th2k6!! пользователя cybercorp\backupsrv и подключился к административному ресурсу \\192.168.184.100\C$ контроллера домена, тем самым получив полный доступ к домену. Ему осталось лишь загрузить вредоносный модуль на скомпрометированный контроллер домена, чтобы закрепиться на нем.
Выводы
В этом форензик кейсе мы расследовали киберинцидент и выявили такую картину:
- Злоумышленник использовал письмо по электронной почте с вредоносным вложением и скомпрометировал хост с адресом 192.168.100.130.
- Затем он загрузил полезную нагрузку, которую записал в реестр, и скрипт на PowerShell, который запускается при вводе авторизационных данных в системе.
- Далее хакер загрузил утилиту для перечисления данных контроллера домена, получил авторизационные данные пользователя cybercorp\backup и скомпрометировал контроллер домена.
Таким образом, мы восстановили полную картину действий, а значит, наша работа как компьютерного криминалистов закончена.
Еще по теме: Создание лаборатории для анализа вредоносных файлов