Расследование взлома компьютера Windows

Форензика инцидент взлома

Если вы занимаетесь информационной безопасность, то наверняка знакомы с площадками для оттачивания хакерского мастерства, такими как Hack The Box, а для специалистов компьютерной криминалистики существует плат­форма CyberDefenders. В сегодняшней статье продолжим обучение компьютерной криминалистике, где я познакомлю вас с интересным форензик кейсом взлома Windows. В этом нам поможет лабора­тор­ная работа с ресур­са — CyberCorp Case 1.

Еще по теме: Форензик кейс взлома серверов Linux

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

Расследование взлома компьютера Windows

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

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

Полученные артефакты Windows

Amcache.hve — файл реес­тра, содер­жит информа­цию о запус­каемых при­ложе­ниях. Расположение файла Amcache:

AppCompatCache.reg — информа­ция из клю­ча кус­та реес­тра SYSTEM ( C:\Windows\System32\configSystem):

В этом клю­че содержится арте­факт Shimcache — эта функция обес­печива­ет сов­мести­мость ста­рых при­ложе­ний с более новыми вер­сиями ОС. В нем хранится информация: путь к фай­лу, вре­мя пос­ледне­го изме­нения и раз­мер исполняемого фай­ла.

Фай­лы реес­тра: default, SAM, SECURITY, software, system. Рас­положе­ние файлов:

Logs — логи ОС. Расположение файлов:

User Registry Hives — файл NTUSER.DAT содер­жит информа­цию, свя­зан­ную с дей­стви­ем поль­зовате­ля. Фай­лы NTUSER.DAT хра­нят­ся в катало­ге:

Windows Prefetch — фай­л оптимизации запус­ка при­ложе­ний. Фай­лы Prefetch могут содержать важную информацию, такую как: имя исполня­емо­го фай­ла, спи­сок динами­чес­ких биб­лиотек, исполь­зуемых исполня­емым фай­лом, количес­тво запус­ков исполня­емо­го фай­ла и временную мет­ку, которая указывает, ког­да приложение было запуще­но в пос­ледний раз. Расположение файлов:

MFT (глав­ная таб­лица фай­лов) — сис­темный файл ОС, содер­жит метадан­ные объ­екта фай­ловой сис­темы. MFT находится в кор­не раз­делов NTFS, выг­рузить его мож­но инструментом FTK Imager.

OBJECTS.DATA — файл содер­жит пос­тоян­ные клас­сы WMI (Windows Management Instrumentation). Расположение файла:

Memdump — файл обра­за RAM.

Се­тевой тра­фик, получен­ный в резуль­тате монито­рин­га сети организации.

Этапы расследования

  • По­иск точ­ки вхо­да в сис­тему.
  • По­иск спо­соба зак­репле­ния.
  • По­иск методов боково­го переме­щения по сети.

Используемые утилиты

Пе­ред началом изучения арте­фак­тов взломанного компь­юте­ра, надо узнать версию ОС, имя пользователя и дату уста­нов­ки. Для это­го заг­ружаем куст реес­тра software в программу Registry Explorer и переходим к клю­чу:

Информация о компь­юте­ре
Информация о компь­юте­ре

На ском­про­мети­рован­ном компь­юте­ре стоит Windows 10 Enterprise Evaluation, дата уста­нов­ки — 17.06.2020 (параметр InstallDate), вер­сия сбор­ки ОС — 17134, вла­делец — John Goldberg.

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

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

Начнем с поиска активных сетевых соеди­нении и вре­донос­ного про­цесса. Это можно сделать с помощью инструмента Volatility 3 (см. также Анализ дампа памяти с помощью Volatility).

Отметим все сетевые соеди­нения с сос­тоянием ESTABLISHED и про­бьем все IP-адре­са на ВирусТотал.

Вре­донос­ное соеди­нение
Вре­донос­ное соеди­нение

Про­цесс rundll32.exe (PID 4224) уста­новил подозрительное сетевое соеди­нение с управля­ющим сер­вером по IP-адре­су 196.6.112.70. Пробьем IP на VirusTotal.

Просмотрим дерево про­цес­сов и отыщем про­цесс с PID 4224.

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

Ро­дитель­ский PID вре­донос­ного про­цес­са:

Но про­цес­са с таким нет.

С помощью плагина malfind из комплекта Volatility 3 находим код, внед­ренный в адресное прос­транс­тво про­цес­сов ОС.

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

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

Хороший результат! Мы выявили вре­донос­ный про­цесс и управля­ющий центр.

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

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

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

В сооб­щении от richard.gorn@gmail.com находится зашифрованный архив attach.zip. Попробуем открыть запароленый архив.

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

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

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

В архи­ве лежит документ:

Меня­ем рас­ширение на .zip и смот­рим его содер­жимое. Вре­донос­ных мак­росов здесь нет, но обна­ружи­лась ссыл­ка на заг­рузку шаб­лона Supplement.dotm в фай­ле:

Такой век­тор ата­ки называ­ется Remote Template Injection и под­робно опи­сан в бло­ге Сун­гва­на Цоя.

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

Ад­рес вре­донос­ного докумен­та .dotm
Ад­рес вре­донос­ного докумен­та .dotm

Поп­робу­ем получить этот документ из обра­за опе­ратив­ной памяти. Для это­го вос­поль­зуем­ся пла­гином FileScan ути­литы Volatility 3.

Файлы с рас­ширени­ем dotm, найденные в обра­зе оперативной памяти
Файлы с рас­ширени­ем dotm, найденные в обра­зе оперативной памяти

Выг­рузим документ, рас­положен­ный по адре­су 0xcd8401aea3f0. Для это­го вос­поль­зуем­ся пла­гином dumpfiles ути­литы Volatility 3.

Ре­зуль­таты dumpfiles
Ре­зуль­таты dumpfiles

Мы получи­ли вре­донос­ный шаб­лон Microsoft Office c длин­ным наз­вани­ем и рас­ширени­ем .dotm.dat. Про­ана­лизи­руем шаб­лон c помощью ути­литы olevba. Пере­име­нуем его в dotm_malicious.

В резуль­тате работы olevba мы получи­ли скрипт на VBA, содер­жащий­ся в шаб­лоне докумен­та. Иссле­дуем код скрип­та.

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

Вре­донос­ный скрипт заг­ружа­ет полез­ную наг­рузку master_page и сох­раня­ет ее в сле­дующем клю­че реес­тра:

Да­лее он заг­ружа­ет PowerShell-скрипт wrapper_page и сох­раня­ет в каталог

Сле­дующим эта­пом про­исхо­дит зак­репле­ние в сис­теме с исполь­зовани­ем WMI, но об этом мы погово­рим чуть поз­же.

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

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

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

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

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

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

Анализ MFT

Раз­берем, в какое вре­мя поль­зователь открыл вре­донос­ный документ Why Saudi Arabia... .docx в сис­теме, что­бы понимать, ког­да про­изо­шел инци­дент. Для это­го про­ана­лизи­руем файл MFT. Вос­поль­зуем­ся инс­тру­мен­том MFTECmd.exe и выг­рузим информа­цию об объ­ектах фай­ловой сис­темы в файл CSV.

Мы получи­ли файл, содер­жащий пути ко всем фай­лам фай­ловой сис­темы, а так­же мет­ки вре­мени. Через поиск най­дем информа­цию о докумен­те:

Все мет­ки вре­мени в таб­лице 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, который заг­рузил шаб­лон содер­жащий мак­рос с:

Вре­донос­ный мак­рос заг­рузил полез­ную наг­рузку и PowerShell-скрипт.

Закрепление в скомпрометированной системе

На этом эта­пе про­ана­лизи­руем файл OBJECTS.DATA, но сна­чала нем­ного погово­рим о сох­ранении пос­тоянс­тва в сис­теме с помощью WMI.

WMI (Windows Management Instrumentation) — набор инс­тру­мен­тов, пред­назна­чен­ных для управле­ния сис­темами Windows как локаль­но, так и уда­лен­но. Одна из тех­ник зак­репле­ния в сис­теме через WMI — это WMI Subscriptions (под­писки WMI). Эта тех­ника запус­кает дей­ствие при воз­никно­вении события.

Дей­ствия и события могут быть опре­деле­ны поль­зовате­лем. В опре­деле­ниях WMI дей­ствия называ­ются пот­ребите­лями (Consumers), а события — филь­тра­ми (Filters). Сущес­тву­ет так­же тре­тий ком­понент, который свя­зыва­ет их вмес­те, — при­вяз­ка ( __FilterToConsumerBinding).

Зна­чит, наша задача — обна­ружить в фай­ле OBJECTS.DATA связ­ку дей­ствия и события ( __FilterToConsumerBinding). Мож­но открыть иссле­дуемый файл с помощью hex-редак­тора и в поис­ке вбить стро­ку __FilterToConsumerBinding, но мы вос­поль­зуем­ся ути­литой PyWMIPersistenceFinder.

Ре­зуль­тат работы ути­литы 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 хакер заг­рузил вспо­мога­тель­ные ути­литы для боково­го переме­щения по сети с адреса:

Сох­ранил их в файл:

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

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

За­пуск исполня­емо­го фай­ла 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

 

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

В 22:33:18 хакер с при­мене­нием ути­литы reg.exe (прог­рамма в Windows для нас­трой­ки реес­тра) выг­рузил куст реес­тра hklm\sam и сох­ранил его в файл:

В 22:33:24 выг­рузил куст реес­тра hklm\system и сох­ранил в файл:

Сле­дующим эта­пом зло­умыш­ленник выг­ружа­ет фай­лы sa.tmp и sy.tmp и получа­ет из них NTLM-хеши паролей поль­зовате­лей. Теперь ему дос­таточ­но проб­рутить получен­ные хеши поль­зовате­лей с име­ющим­ся в его арсе­нале сло­варем. Пароль !!feb15th2k6!! — сло­вар­ный и есть в фай­ле rockyou.txt.

Зап­рос на получе­ние адре­са кон­трол­лера домена
Зап­рос на получе­ние адре­са кон­трол­лера домена

 

По­луче­ние дос­тупа к адми­нис­тра­тив­ному ресур­су кон­трол­лера домена
По­луче­ние дос­тупа к адми­нис­тра­тив­ному ресур­су кон­трол­лера домена

В 22:35:38 зло­умыш­ленник узнал пароль !!feb15th2k6!! поль­зовате­ля cybercorp\backupsrv и под­клю­чил­ся к адми­нис­тра­тив­ному ресур­су \\192.168.184.100\C$ кон­трол­лера домена, тем самым получив пол­ный дос­туп к домену. Ему оста­лось лишь заг­рузить вре­донос­ный модуль на ском­про­мети­рован­ный кон­трол­лер домена, что­бы зак­репить­ся на нем.

Выводы

В этом форензик кейсе мы рас­сле­дова­ли киберин­цидент и выяви­ли такую кар­тину:

  1. Зло­умыш­ленник исполь­зовал пись­мо по элек­трон­ной поч­те с вре­донос­ным вло­жени­ем и ском­про­мети­ровал хост с адре­сом 192.168.100.130.
  2. Затем он заг­рузил полез­ную наг­рузку, которую записал в реестр, и скрипт на PowerShell, который запус­кает­ся при вво­де авто­риза­цион­ных дан­ных в сис­теме.
  3. Далее хакер заг­рузил ути­литу для перечис­ления дан­ных кон­трол­лера домена, получил авто­риза­цион­ные дан­ные поль­зовате­ля cybercorp\backup и ском­про­мети­ровал кон­трол­лер домена.

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

Еще по теме: Создание лаборатории для анализа вредоносных файлов

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

Добавить комментарий