• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Уроки форензики. Расследуем киберинцидент CyberCorp Case 1.

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Специалисты по атакующей безопасности оттачивают навыки на Hack The Box, Root Me и VulnHub, а специально для защитников существует платформа CyberDefenders. В этой статье я покажу ход расследования киберинцидента на примере лабораторной работы с этого ресурса — CyberCorp Case 1.

Мы научимся получать необходимые данные из основных артефактов операционной системы Windows. Наша задача — понять, как злоумышленник скомпрометировал компьютер в сети организации, как закрепился в системе, какие вредоносные файлы использовал и к каким объектам локальной сети получил доступ.

По сценарию кейса в исходящем трафике инфраструктуры компании CyberCorp выявлен ряд аномалий, что свидетельствует о ее компрометации. Специалисты по реагированию на компьютерный инцидент изолировали один из потенциально скомпрометированных хостов от корпоративной сети и собрали основные артефакты Windows. Файлы артефактов находятся в архиве, который необходимо загрузить.

По результатам решения кейса нас попросят ответить на ряд вопросов. Я покажу лишь ход решения и не буду подсвечивать ответы. Ради тренировки можешь повторить весь процесс самостоятельно и ответить — для закрепления материала.

ПОЛУЧЕННЫЕ АРТЕФАКТЫ WINDOWS​

  1. Amcache.hve — файл реестра, содержащий информацию о запускаемых приложениях. Начиная с Windows 8 и Windows Server 2012 путь к файлу реестра Amcache хранится в \%SystemRoot%\AppCompat\Programs\Amcache.hve.
  2. AppCompatCache.reg — информация из ключа HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache куста реестра SYSTEM (C:\Windows\System32\configSystem). В данном ключе хранится артефакт Shimcache — это механизм, который обеспечивает обратную совместимость старых приложений с более новыми версиями Windows. В нем содержится следующая информация: путь к исполняемому файлу, размер файла, время последнего изменения.
  3. Файлы реестра: default, SAM, SECURITY, software, system. Расположены эти файлы в каталоге C:\Windows\System32\config.
  4. Memdump — файл образа оперативной памяти.
  5. Logs — файлы логов операционной системы. Они находятся в каталоге C:\Windows\System32\winevt\Logs.
  6. User Registry Hives — файл NTUSER.DAT содержит информацию, связанную с действием пользователя. Файлы NTUSER.DAT хранятся в каталоге %userprofile%.
  7. Windows Prefetch — файлы, предназначенные для ускорения запуска приложений. Файлы Prefetch содержат имя исполняемого файла, список динамических библиотек, используемых исполняемым файлом, количество запусков исполняемого файла и метку времени, указывающую, когда программа была запущена в последний раз. Данные файлы хранятся в каталоге C:\Windows\Prefetch.
  8. MFT (главная таблица файлов) — системный файл, содержащий метаданные объекта файловой системы. Этот файл расположен в корне каждого раздела NTFS, выгрузить его можно с помощью FTK Imager.
  9. OBJECTS.DATA — файл, содержащий постоянные классы WMI (Windows Management Instrumentation). Он расположен в %SystemRoot%\System32\wbem\Repository.
  10. Сетевой трафик, полученный в результате мониторинга инфраструктуры компании.

ЭТАПЫ РАССЛЕДОВАНИЯ​

  1. Поиск точки входа в систему. На данном этапе выясним, как злоумышленник скомпрометировал систему и какие использовал вредоносные файлы.
  2. Поиск способа закрепления. Выясним, как злоумышленники обеспечили себе постоянный доступ к системе.
  3. Поиск методов бокового перемещения по сети. На этом этапе выявим действия злоумышленника после получения доступа к скомпрометированному компьютеру.

ИСПОЛЬЗУЕМЫЕ УТИЛИТЫ​

  1. Утилиты Эрика Циммермана: AmcacheParser, Registry Explorer, AppCompatCacheParser, MFTECmd.
  2. Утилиты NirSoft: fulleventlogview, winprefetchview.
  3. UserAssist.
  4. Wireshark — инструмент для анализа сетевых протоколов.
  5. Olevba — инструмент для извлечения и анализа исходного кода макросов VBA из документов MS Office (OLE и OpenXML).
  6. Volatility 3 — инструмент для извлечения данных из образа оперативной памяти.
Перед тем как начать изучать артефакты скомпрометированного компьютера, получим информацию о версии операционной системы, дату установки, имя пользователя. Для этого загрузим куст реестра software в утилиту Registry Explorer и перейдем к ключу SOFTWARE\Microsoft\Windows NT\CurrentVersion.

Информация об исследуемом компьютере

Информация об исследуемом компьютере

На исследуемом компьютере установлена операционная система Windows 10 Enterprise Evaluation, дата установки — 17 июня 2020 года в 7:13:49 (параметр InstallDate), версия сборки — 17134, владелец — John Goldberg.

ПОИСК ТОЧКИ ВХОДА​

На данном этапе исследуем образ оперативной памяти, сетевой трафик и главную таблицу разделов.

Анализ образа оперативной памяти​

Найдем активные сетевые соединения и вредоносный процесс. Для этого воспользуемся утилитой Volatility 3.

Выявим все сетевые соединения с состоянием ESTABLISHED и проверим все IP-адреса на VirusTotal.
Код:
python3 vol.py -f memdump.mem windows.netscan.NetScan
Вредоносное сетевое соединение

Вредоносное сетевое соединение

Процесс rundll32.exe (PID процесса — 4224) установил сетевое соединение с управляющим сервером по адресу 196.6.112.70. Ознакомимся с результатом проверки выбранного адреса на VirusTotal.

Получим дерево процессов и найдем процесс с идентификатором 4224.
Код:
python3 vol.py -f memdump.mem windows.pstree.PsTree
Информация о вредоносном процессе

Информация о вредоносном процессе

Родительский идентификатор вредоносного процесса rundll32.exe — 7320, но процесса с таким идентификатором не обнаружено.

Воспользуемся плагином malfind утилиты Volatility 3 и найдем код, внедренный в адресное пространство процессов операционной системы.
Код:
python3 vol.py -f memdump.mem windows.malfind.Malfind
Результат работы плагина malfind

Результат работы плагина malfind

Из рисунка выше видно, что вредоносный код внедрен в адресное пространство процесса winlogon.exe (PID 3232).

Отлично! Мы обнаружили управляющий центр и вредоносный процесс.

Анализ сетевого трафика​

Проанализируем сетевой трафик при помощи Wireshark и найдем интересные артефакты. В первом дампе трафика обнаружена почтовая сессия по протоколу SMTP. Попробуем получить сообщения eml. Для этого переходим на вкладку «Файл → Экспортировать объекты → IMF». Сохраним все сообщения для исследования.

Список сообщений, обнаруженных в сетевом трафике

Список сообщений, обнаруженных в сетевом трафике

В сообщении от richard.gorn@gmail.com содержится запароленный архив attach.zip. Исследуем файлы из него.

Содержимое сообщения

Содержимое сообщения

Как видишь, пароль от архива нашелся в письме.

Анализ вредоносных файлов​

В архиве лежит документ Why Saudi Arabia Will Lose The Next Oil Price War.docx (MD5: aa7ee7f712780aebe9136cabc24bf875). Меняем расширение на .zip и смотрим его содержимое. Вредоносных макросов здесь нет, но в файле ./word/_rels/settings.xml.rels обнаружилась ссылка на загрузку шаблона Supplement.dotm. Такой вектор атаки называется Remote Template Injection и подробно описан в блоге Сунгвана Цоя.

Основной принцип атаки заключается в следующем. Злоумышленники залили на свой сервер файл шаблона документа Word (.dotm) и внедрили в код документа Why Saudi Arabia... .docx ссылку на загрузку вредоносного шаблона. Если документ открыть, загрузится шаблон, содержащий макрос.
Адрес для загрузки вредоносного документа .dotm

Адрес для загрузки вредоносного документа .dotm

Попробуем получить этот документ из образа оперативной памяти. Для этого воспользуемся плагином FileScan утилиты Volatility 3.
Код:
python3 vol.py -f memdump.mem windows.filescan.FileScan | grep dotm
Документы с расширением dotm, выявленные в образе оперативной памяти

Документы с расширением dotm, выявленные в образе оперативной памяти

Выгрузим документ, расположенный по адресу 0xcd8401aea3f0. Для этого воспользуемся плагином dumpfiles утилиты Volatility 3.
Код:
python3 vol.py -f memdump.mem windows.dumpfiles.DumpFiles --virtaddr 0xcd8401aea3f0
Результаты работы плагина dumpfiles

Результаты работы плагина dumpfiles

Мы получили вредоносный шаблон Microsoft Office c длинным названием и расширением .dotm.dat. Проанализируем шаблон c помощью утилиты olevba. Переименуем его в dotm_malicious.
Код:
olevba dotm_malicious
В результате работы olevba мы получили скрипт на VBA, содержащийся в шаблоне документа. Исследуем код скрипта.
Участок вредоносного кода

Участок вредоносного кода

Вредоносный скрипт загружает полезную нагрузку master_page и сохраняет ее в следующем ключе реестра:
Код:
HKEY_USERS\S-1-5-21-3899523589-2416674273-2941457644-1104\Software\RegisteredApplications\AppXs42fd12c3po92dynnq2r142fs12qhvsmyy
Далее он загружает PowerShell-скрипт wrapper_page и сохраняет в каталог
Код:
C:\Users\john.golberg\AppData\Roaming\\Microsoft\Office\Recent\tmpA7Z2.ps1
Следующим этапом происходит закрепление в системе с использованием WMI, но об этом мы поговорим чуть позже.

Выгрузим скрипт на PowerShell, чтобы изучить его содержимое.

Участок вредоносного скрипта tmp7AZ2.ps1

Участок вредоносного скрипта tmp7AZ2.ps1

Скрипт берет полезную нагрузку из ключа реестра (переменная $rk), декодирует ее из Base64, а далее выполняется спуфинг родительского процесса dwm.exe. Вредоносная нагрузка загружается в память созданного процесса и мигрирует в процесс winlogon.exe.

Выгрузим вредоносную нагрузку. Загрузим куст NTUSER.DAT пользователя john.goldberg в утилиту Reg Explorer. Перейдем в Software\RegisteredApplications и найдем ключ AppXs42fd12c3po92dynnq2r142fs12qhvsmyy.

Вредоносная нагрузка

Вредоносная нагрузка

Декодируем полезную нагрузку, получим MD5-сумму и проверим ее на VirusTotal.

Анализ MFT​

Разберем, в какое время пользователь открыл вредоносный документ Why Saudi Arabia... .docx в системе, чтобы понимать, когда произошел инцидент. Для этого проанализируем файл MFT. Воспользуемся инструментом MFTECmd.exe и выгрузим информацию об объектах файловой системы в файл CSV.
Код:
MFTECmd.exe -f $MFT.copy0 --csv .\RESULT\MFT
Мы получили файл, содержащий пути ко всем файлам файловой системы, а также метки времени. Через поиск найдем информацию о документе Why Saudi Arabia Will Lose The Next Oil Price War.docx. Все метки времени в таблице MFT в UTC, но московское время — UTC+3.

Информация о запуске вредоносного документа по UTC

Информация о запуске вредоносного документа по UTC

В таблице MFT представлены две метки времени создания файла: STANDART_INFO и FILE_INFO. Злоумышленник использует утилиты антикриминалистики, которые изменяют метку времени STANDART_INFO, поэтому необходимо смотреть на метку времени FILE_INFO. Подробности описаны в блоге Cyb3rSn0rlax.
Итак, по результатам первого этапа мы обнаружили, что пользователь john.goldberg получил по электронной почте сообщение, содержащее вредоносное вложение. 20.06.2020 в 22:27:31 (по московскому времени) пользователь открыл документ Why Saudi Arabia... .docx, который загрузил шаблон c 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.

Код:
python PyWMIPersistenceFinder.py OBJECTS.DATA
Результат работы утилиты PyWMIPersistenceFinder.py

Результат работы утилиты PyWMIPersistenceFinder.py

Мы обнаружили название события 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 злоумышленник загрузил с адреса http://196.6.112.70/disco.jpg вспомогательные утилиты для бокового перемещения по сети и сохранил их в файл C:\Windows\TEMP\disco.jpg.

Декодирование загруженного файла по алгоритму Base64

Декодирование загруженного файла по алгоритму Base64

В 22:31:16 декодировали загруженный файл disco.jpg по алгоритму Base64 и сохранили в файл C:\Windows\TEMP\sh.exe.

Запуск исполняемого файла sh.exe

Запуск исполняемого файла sh.exe

В 22:31:34 запустили исполняемый файл sh.exe (сборщик данных для BloodHound), результат работы которого сохранен в файл ddr.zip.

Проанализируем таблицу MFT и посмотрим, какие еще файлы были созданы в каталоге C:\Windows\Temp. Для этого откроем полученный файл CSV, содержащий объекты файловой системы, и найдем все файлы в каталоге Windows\Temp.

Файл, обнаруженный в каталоге C:\Windows\Temp

Файл, обнаруженный в каталоге C:\Windows\Temp

В 22:31:38 создан файл с расширением bin.

Следующий этап для злоумышленника — получение логинов и паролей пользователей.

Список локальных администраторов скомпрометированного компьютера

Список локальных администраторов скомпрометированного компьютера

В 22:33:10 перечислили всех локальных администраторов пользователей скомпрометированного компьютера.

Сохранение куста реестра sam

Сохранение куста реестра sam
https://st768.s3.eu-central-1.amazonaws.com/9aa14d36b4fac38901b8d42940344fb7/23851/22.png
Сохранение куста реестра system

Сохранение куста реестра system

В 22:33:18 злоумышленник с применением утилиты reg.exe (программа в Windows для настройки реестра) выгрузил куст реестра hklm\sam и сохранил его в файл C:\Windows\TEMP\sa.tmp. В 22:33:24 выгрузил куст реестра hklm\system и сохранил в файл 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 и скомпрометировал контроллер домена.

Таким образом, мы восстановили полную картину действий, а значит, наша работа как криминалистов закончена.

Автор rayhunt454
хакер.ру
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Здраствуйте! Можно как то получить эту статью на почту а то тут уже нет некоторых скриншотов.
В этом выпуске за ноябрь 2к21
Screenshot_20220225-221329_Office.jpg
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх