Уроки форензики. Исследуем дампы и ищем следы взлома в системе

Содержание статьи

  • Инструменты
  • Плагины Volatility2 для извлечения данных
  • Объекты домена
  • Образ диска AD.E01
  • Образ оперативной памяти хоста DC01
  • Выводы

Се­год­ня я рас­ска­жу, как извле­кать дан­ные из таб­лицы MFT, получать информа­цию из фай­лов Prefetch и монито­ра исполь­зования сис­темных ресур­сов (srum), а еще — ана­лизи­ровать фай­лы логов опе­раци­онной сис­темы. При иссле­дова­нии обра­за опе­ратив­ной памяти мы поз­накомим­ся с внут­ренним устрой­ством памяти Windows и най­дем арте­фак­ты, сви­детель­ству­ющие о ком­про­мета­ции сис­темы.

Рас­сле­дова­ние киберин­циден­тов — это очень увле­катель­ное занятие, тре­бующее опре­делен­ных зна­ний и навыков. Отто­чить их помога­ют спе­циаль­ные лабора­тор­ные работы, ими­тиру­ющие реаль­ные слу­чаи успешных атак зло­умыш­ленни­ков и взло­ма, с которы­ми встре­чают­ся на прак­тике спе­циалис­ты по информа­цион­ной безопас­ности. Сегод­ня мы раз­берем лабора­тор­ную работу 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 — инс­тру­мент для ана­лиза и получе­ния обра­зов дис­ка.
  • WinDBGx64 — ути­литы для ана­лиза ава­рий­ных дам­пов.
  • 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.zip, который хра­нит информа­цию об объ­ектах домена. Заг­рузим его в BloodHound вер­сии 4.0.1.

    Пе­рей­дем на вклад­ку Analysyis → Find Shotest Paths to Domain Admins и про­ана­лизи­руем корот­кий путь до ком­про­мета­ции кон­трол­лера домена.

    Ко­рот­кий путь до адми­нис­тра­тора домена

    За­дача зло­умыш­ленни­ка в сети орга­низа­ции — получить дос­туп к учет­ной записи поль­зовате­ля 0xMohammed, который вхо­дит в груп­пу Domain Admins.

     

    Образ диска AD.E01

    При­мон­тиру­ем файл побито­вой копии дис­ка AD.E01 и извле­чем из него необ­ходимые арте­фак­ты. Для это­го откро­ем ути­литу FTK Imager, перей­дем на вклад­ку File → Image Mounting. В поле Image File выберем образ AD.E01, а затем вве­дем ука­зан­ные ниже нас­трой­ки.

    Мон­тирова­ние обра­за дис­ка

    На­жима­ем Mount — иссле­дуемый образ дол­жен при­мон­тировать­ся к фай­ловой сис­теме.

    По­лучим информа­цию из кус­тов реес­тра SYSTEM и SOFTWARE (C:WindowsSystem32config), заг­рузим их в ути­литу Registry Explorer. Затем перехо­дим в раз­дел File -> Load hive и выбира­ем иссле­дуемый файл.

    Что­бы получить информа­цию об опе­раци­онной сис­теме, перей­дем в ключ реес­тра SOFTWAREMicrosoftWindows NTCurrentVersion.

    Ин­форма­ция об опе­раци­онной сис­теме

    Вер­сия опе­раци­онной сис­темы — Windows 10 Enterprise 2016 LTSB. Теперь прос­мотрим ключ реес­тра SYSTEMControlSet01ControlComputerNameComputerName и получим информа­цию об име­ни компь­юте­ра.

    Имя компь­юте­ра

    Имя компь­юте­ра: PC01.

    Те­перь откро­ем ключ реес­тра SYSTEMControlSet001ServicesTcpipParametersInterfaces{ea202436-8a31-4cb6-9b59-5be0c2bc1692} и получим информа­цию о сетевых нас­трой­ках.

    Ин­форма­ция о сетевых нас­трой­ках

    IP-адрес иссле­дуемо­го хос­та — 192.168.112.142.

    По­лучим информа­цию о при­мон­тирован­ных дис­ках. Для это­го перей­дем в вет­ку реес­тра SYSTEMMountedDevices: нас инте­ресу­ет GUID дис­ка C.

    GUID дис­ка С

    Как вид­но из рисун­ка выше, GUID дис­ка C — fad905b3-fb35-4dbd-ab31-a44f022809d2, такую же информа­цию мож­но получить из логов сис­темы, прос­мотрев событие eventid 142 жур­нала Microsoft-Windows-Ntfs/Operational.

    Те­перь най­дем пор­ты служб на PC01, для это­го перей­дем к фай­лу Windows/System32/drivers/etc/services.

    Со­дер­жимое фай­ла services

    Здесь мы можем уви­деть, что служ­ба Remote Man Server работа­ет на пор­те 9535. Про­ана­лизи­руем файл System.evtx и най­дем отметку вре­мени, ког­да про­изош­ло незап­ланиро­ван­ное отклю­чение, а так­же узна­ем, сколь­ко вре­мени про­рабо­тал компь­ютер. Для это­го мож­но вос­поль­зовать­ся ути­литой TurnOnTimesView, либо при­дет­ся ана­лизи­ровать лог вруч­ную.

    Ре­зуль­тат работы ути­литы TurnOnTimesView

    21.11.2021 питание машины незап­ланиро­ван­но отклю­чилось, до это­го компь­ютер про­рабо­тал 11 часов и 31 минуту (об этом говорит зна­чение 11:31).

    Нач­нем ана­лизи­ровать логи. Для это­го откро­ем ути­литу fulleventlogview, наж­мем Choose Data Store → Load events from external folder with log files и ука­жем путь к пап­ке с логами WindowsSystem32winevtLogs.

    От­филь­тру­ем логи по событию 4624 и пос­мотрим, кто авто­ризо­вывал­ся в сис­теме пос­ледний раз перед инци­ден­том. Для это­го перехо­дим на вклад­ку Options → Advanced Options, выбира­ем Show only the specified events IDs и вво­дим наше событие.

    23.11.2021 в 23:36:05 UTC поль­зователь 0xMohammed авто­ризо­вал­ся в сис­теме — это был пос­ледний зарегис­три­рован­ный логин перед взло­мом.

    Пос­ледний авто­ризо­ван­ный поль­зователь в сис­теме

    Про­ана­лизи­руем исто­рию бра­узе­ра Firefox поль­зовате­ля labib. Для это­го вос­поль­зуем­ся ути­литой BrowsingHistoryView: перей­дем на вклад­ку Options → Advanced Options и ука­жем путь до поль­зователь­ско­го катало­га.

    По­луче­ние исто­рии из бра­узе­ра Firefox

    Ис­тория Firefox

    Поль­зователь labib 22.11.2021 в 19:45:52 UTC посетил сайт bluedemy.cyberdefenders.org.

    Про­ана­лизи­руем базу дан­ных управле­ния исполь­зовани­ем сис­темных ресур­сов (srum), которая при­сутс­тву­ет в сов­ремен­ных сис­темах Windows и собира­ет ста­тис­тику выпол­нения дво­ичных фай­лов. Эта база хра­нит­ся в фай­ле C:WindowsSystem32sru\RUDB.dat. С исполь­зовани­ем ути­литы srum-dump про­ана­лизи­руем srum и най­дем, сколь­ко бай­тов было при­нято бра­узе­ром Firefox.

    Ра­бота Srum-dump ути­литы

    Не забыва­ем так­же ука­зать файл SRUM_TEMPLATE.xlsx, который заг­ружа­ем из репози­тория ути­литы.

    От­кры­ваем выход­ной файл SRUM_DUMP_OUTPUT.xlsx, перехо­дим на лист Network Data Usage, находим firefox.exe и ана­лизи­руем таб­лицу. Количес­тво получен­ных дан­ных — 20418287.

    Те­перь пос­мотрим, какие пос­ледние фай­лы запус­кал поль­зователь labib. Перехо­дим по пути С/Users/labib/AppData/Roaming/Microsoft/Windows/Recent/ и в этом катало­ге находим файл 20211119103954_BloodHound.lnk, соз­данный 19.11.2021.

    В ссыл­ке на файл ука­зан путь к архи­ву C:UserslabibDesktop20211119103954_BloodHound.zip., содер­жащий информа­цию об объ­ектах домена. Эта информа­ция собира­лась для ана­лиза в BloodHound.

    Про­ана­лизи­руем MFT с помощью ути­литы MFTECmd. Из кор­ня фай­ловой сис­темы извле­чем файл $MFT, это мож­но сде­лать с помощью R-Studio или FTKImager.

    В катало­ге Users/labib/Desktop соз­дан файл Business.xlsx с мет­кой вре­мени 22.11.2021 22:40:06, этот файл содер­жит информа­цию о поль­зовате­лях домена и их деятель­нос­ти в ком­пании. Най­дем ука­зан­ный файл в таб­лице MFT:

    MFTECmd.exe -f "C:UsersDonNodDownloadsAD-101AD-E01MFT" --csv "AD-101AD-E01"

    В фай­ле вывода ути­литы MFTECmd обна­ружи­ваем Business.xlsx и его поле LogfileSequenceNumber, которое име­ет зна­чение 1422361276.

    Поп­робу­ем получить пароль поль­зовате­ля 0xMohammed, который вхо­дит в груп­пу адми­нис­тра­торов домена. Выг­рузим вет­ки реес­тра SAM, SYSTEM, SECURITY и вытащим из них хеши поль­зовате­лей. Для это­го вос­поль­зуем­ся скрип­том secretdum.py из пакета Impacket.

    Выг­ружен­ные аутен­тифика­цион­ные дан­ные из веток реес­тра

    На хос­те PC01 авто­ризо­вывал­ся домен­ный поль­зователь 0xMohammed, его дан­ные сох­ранены в кеше. С помощью ути­литы hashcat сбру­тим mccache2 хеша поль­зовате­ля 0xMohammed:

    $DCC2$10240#0xMohammed#e7b8d19008520207ca8ef94680db0f28

    В резуль­тате этой опе­рации выяс­няет­ся, что его пароль — 0xmohammed!.

    Те­перь попыта­емся узнать, как зло­умыш­ленник ском­про­мети­ровал хост PC01. Ана­лизи­руя фай­лы, в катало­ге C:UserslabibDocumentsOutlook FilesOutlook.pst поль­зовате­ля labib мы обна­ружи­ваем поч­товый кон­тей­нер Outlook. Пре­обра­зуем кон­тей­нер в eml-сооб­щения, для это­го откро­ем ути­литу PST-Xtracrot, заг­рузим в нее кон­тей­нер и наж­мем Convert. Пос­ле это­го мож­но про­ана­лизи­ровать все сооб­щения анти­вирус­ными средс­тва­ми, что­бы поис­кать вре­донос­ные вло­жения.

    Со­дер­жимое пись­ма

    За­голо­вок вре­донос­ного пись­ма

    Сре­ди сооб­щений поль­зовате­ля мы обна­ружи­ваем вре­донос­ное вло­жение. Сооб­щение отправ­лено 12/08/2021 04:47:49 AM UTC с поч­тового сер­вера 159.65.58.195. В качес­тве вло­жения исполь­зует­ся файл Unpaid Invoice.xls. Выяс­ним, ког­да поль­зователь открыл этот файл.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *