Уроки форензики. Расследуем киберинцидент MrRobot

Уроки форензики. Расследуем киберинцидент MrRobot

the Matrix

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

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

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

Рас­паковы­ваем архив с задани­ем и получа­ем три фай­ла, которые содер­жат обра­зы памяти ском­про­мети­рован­ных хос­тов: Target1, Target2 и POS. Фай­лы име­ют рас­ширение .vmss, то есть пред­став­ляют собой момен­таль­ные сним­ки вир­туаль­ной машины VMware. Если Volatility не может извлечь арте­фак­ты из этих фай­лов, мож­но вос­поль­зовать­ся пла­гином raw2dmp, который пре­обра­зует дамп памяти при­оста­нов­ленной вир­туаль­ной машины VMware в фор­мат, при­год­ный для ана­лиза. Так­же мож­но вос­поль­зовать­ся инс­тру­мен­том vmss2core.

Ис­сле­дова­ние обра­зов опе­ратив­ной памяти мож­но раз­делить на два эта­па: вос­ста­нов­ление дей­ствий поль­зовате­ля и поиск приз­наков вре­донос­ной активнос­ти. На пер­вом эта­пе необ­ходимо про­ана­лизи­ровать запущен­ные про­цес­сы, откры­тые докумен­ты, вос­ста­новить исто­рию бра­узе­ра. Эта информа­ция поможет опре­делить вре­мя ком­про­мета­ции сис­темы, а так­же выяс­нить, какие дей­ствия поль­зовате­ля при­вели к инци­ден­ту. А про­ана­лизи­ровав активность зло­умыш­ленни­ка, нуж­но най­ти исполь­зован­ные вре­донос­ные модули, спо­соб их зак­репле­ния в сис­теме, а так­же обна­ружить методы боково­го переме­щения по сети орга­низа­ции.

По­лучим пер­вичную информа­цию об иссле­дуемой машине, выяс­ним про­филь опе­раци­онной сис­темы, сетевой адрес и имя хос­та.

В клю­че реес­тра SYSTEM\ControlSet001\Control\ComputerName\ComputerName содер­жится информа­ция об име­ни компь­юте­ра.

Имя компь­юте­ра — FRONT-DESK-PC.

По­лучим сетевой адрес хос­та: в клю­че реес­тра SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces содер­жатся иден­тифика­торы сетевых адап­теров, в одном из которых хра­нит­ся информа­ция о сети.

Про­филь ском­про­мети­рован­ной машины Win7SP1x86_23418, IP-адрес — 10.1.1.20, имя хос­та — FRONT-DESK-PC.

Нач­нем вос­ста­нав­ливать дей­ствия поль­зовате­ля в сис­теме. Пер­вым делом получим информа­цию о запущен­ных про­цес­сах и сох­раним ее в файл для удобс­тва ана­лиза.

Мы видим запущен­ный про­цесс OUTLOOK.EXE с иден­тифика­тором 3196, в адресном прос­транс­тве которо­го содер­жится информа­ция об элек­трон­ных сооб­щени­ях и откры­тых фай­лах. Получим перепис­ку авто­ризо­ван­ного в Outlook поль­зовате­ля. Для это­го выг­рузим все фай­лы дан­ного про­цес­са и про­ана­лизи­руем их: в дес­крип­торе откры­того про­цес­са с иден­тифика­тором 3196 най­дем все объ­екты FILE.

Мы обна­ружи­ли файл с рас­ширени­ем .ost, который содер­жит кеширо­ван­ные (сох­ранен­ные в памяти сис­темы) сооб­щения элек­трон­ного поч­тового ящи­ка поль­зовате­ля. Поп­робу­ем вос­ста­новить этот файл, исполь­зуя пла­гин dumpfiles, но сна­чала нам необ­ходимо узнать физичес­кий адрес дан­ного фай­ла в памяти. Запус­тим пла­гин filescan, най­дем инте­ресу­ющий нас файл и получим его физичес­кий адрес.

Ад­рес фай­ла outlook2.ost0x000000003ecec2b0. Теперь мож­но вос­ста­новить сам файл. В парамет­ре -Q пла­гина dumpfiles ука­зыва­ем адрес фай­ла, который нуж­но выг­рузить.

Я поп­робовал вос­ста­новить все фай­лы кон­тей­нера outlook, но они ока­зались пус­тыми. Вос­поль­зуем­ся дру­гим методом выг­рузки сооб­щений. Для это­го получим дамп адресно­го прос­транс­тва про­цес­са OUTLOOK.EXE с помощью пла­гина memdump.

Мы получи­ли дамп адресно­го прос­транс­тва, поп­робу­ем в нем най­ти сооб­щения. Откро­ем получен­ный файл в шес­тнад­цатерич­ном редак­торе и най­дем стро­ку From, а так­же Content-Type.

Про­ана­лизи­руем его заголо­вок: нас инте­ресу­ют поля Subject, From и Received.

Как ана­лизи­ровать заголов­ки элек­трон­ных писем, рас­ска­зыва­ется в одной из наших ста­тей.

Пись­мо приш­ло от поль­зовате­ля th3wt3r0s3@gmail.com и име­ло тему Обновите ваш VPN клиент. Поле Received харак­теризу­ет адрес отпра­вите­ля, а так­же показы­вает, через какие узлы сооб­щение прош­ло.

На­ходим пер­вое поле Received и узна­ем, что сооб­щение отправ­лено с IP-адре­са 10.114.2.82. Как вид­но из содер­жимого, там при­сутс­тву­ет ссыл­ка http://180.76[.]254[.]120/AnyConnectInstaller.exe для заг­рузки фай­ла AnyConnectInstaller.exe.

Выг­рузим этот файл из обра­за памяти.

Мы получи­ли файл file.None.0x85d1c6c0.img. Возь­мем MD5-сум­му и про­верим на VirusTotal, что­бы выяс­нить пер­вичную информа­цию о фай­ле.

За­тем про­верим получен­ный модуль с помощью YARA-пра­вил.

По­лучен­ный вре­донос­ный модуль отно­сит­ся к семей­ству XTREME RAT. Ана­лизи­руем даль­ше. Теперь нам нуж­но получить спи­сок исполня­емых фай­лов, запущен­ных поль­зовате­лем. Для это­го необ­ходимо про­ана­лизи­ровать информа­цию из клю­ча rassist вет­ки реес­тра NTUSER.DAT. Для это­го вос­поль­зуем­ся пла­гином rassist.

Как вид­но из рисун­ка, в 11:31:27 09.10.2015 UTC поль­зователь запус­тил заг­ружен­ный в поч­товый кли­ент файл AnyConnectInstaller.exe. Пос­ле запус­ка вре­доно­са зло­умыш­ленник получил дос­туп к компь­юте­ру.

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

Что­бы зак­репить­ся и обес­печить работу пос­ле перезаг­рузки компь­юте­ра, запус­кают исполня­емый файл AnyConnectInstaller.exe, для это­го в клю­че реес­тра SOFTWARE\Microsoft\Windows\CurrentVersion\Run было добав­лено зна­чение MrRobot. Про­ведем неболь­шой ана­лиз фай­ла, для чего заг­рузим его в IDA Pro.

Вре­донос­ный файл исполь­зует зна­комые нам фун­кции WinAPI CreateProcessA, GetThreadContext, WriteProcessMemory. При­меня­ется тех­ника ProcessHollowing для заг­рузки кода в соз­данный про­цесс. Поведен­ческий ана­лиз из информа­ции на VirusTotal показы­вает, что вре­донос соз­дает про­цесс с наз­вани­ем IEXPLORE.EXE.

Най­дем этот про­цесс в дереве про­цес­сов.

Вре­донос­ный файл соз­дал про­цесс iexplore.exe с иден­тифика­тором 2996, далее методом ProcessHollowing заг­рузил исполня­емый код в этот про­цесс. Для ана­лиза даль­нейших дей­ствий зло­умыш­ленни­ка выг­рузим дамп про­цес­са с иден­тифика­тором 2996.

Най­дем уни­каль­ное зна­чение вре­доно­са в сис­теме (Mutex). В Windows есть объ­ект ядра Mutant, который поз­воля­ет прог­раммам син­хро­низи­ровать­ся меж­ду собой. Вре­донос­ные фай­лы час­то исполь­зуют име­нован­ный мьютекс для того, что­бы пре­дот­вра­тить пов­торный запуск в сис­теме.

Что­бы пре­дот­вра­тить пов­торный запуск, вре­донос­ный модуль соз­дал мьютекс fsociety0.dat. Теперь получим NTLM-хеш поль­зовате­ля Administrator, для чего вос­поль­зуем­ся пла­гином hashdump.

Вос­ста­новим даль­нейшие дей­ствия зло­умыш­ленни­ка. Для это­го вос­поль­зуем­ся пла­гином consoles.

Зло­умыш­ленник заг­рузил три основные ути­литы в каталог C:\Windows\Temp: wce.exe — редак­тор учет­ных дан­ных Windows, nbtscan.exe — прог­рамма для ска­ниро­вания локаль­ной сети на наличие Windows-машин, getlsasrvaddre.exe поз­воля­ет получить спи­сок сес­сий залоги­нен­ных поль­зовате­лей Windows и извлечь LM/NT-хеши.

С помощью ути­литы wce.exe зло­умыш­ленник получил пароль flagadmin@1234 поль­зовате­ля Administrator.

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

Най­дем дату соз­дания ути­литы nbtscan.exe. Для это­го про­ана­лизи­руем MFT-таб­лицу с исполь­зовани­ем пла­гина mftparser.

Да­та соз­дания ути­литы: 2015-10-09 10:45:12 UTC. Теперь пос­мотрим на содер­жимое катало­га C:\Windows\Temp. Там сре­ди про­чего обна­ружи­вает­ся файл nbs.txt.

По­лучим его содер­жимое, вос­поль­зовав­шись ути­литой dumpfiles: адрес фай­ла в памяти 0x000000003fdb7808.

Итак, мы выяс­нили, что IP-адрес пер­вой машины — 10.1.1.2. Про­ана­лизи­руем сетевую активность хос­та, для это­го вос­поль­зуем­ся пла­гином netscan.

Вре­донос­ный про­цесс iexplore.exe с иден­тифика­тором 2996 вза­имо­дей­ству­ет с управля­ющим сер­вером по адре­су 180.76.254.120:22. Далее зло­умыш­ленни­ки под­клю­чились к хос­ту 10.1.1.21 по про­токо­лу RDP. Что­бы управлять ском­про­мети­рован­ной машиной, ата­кующие уста­нови­ли на нее TeamViewer.exe.

На дан­ном эта­пе мы про­ана­лизи­рова­ли опе­ратив­ную память хос­та Target1, наш­ли точ­ку вхо­да в сеть орга­низа­ции. Исполь­зуя фишин­говое сооб­щение, содер­жащее заголо­вок пись­ма Udate your VPN Client, зло­умыш­ленник th3wt3r0s3@gmail.com отпра­вил вре­донос­ную ссыл­ку. Поль­зователь машины target1 заг­рузил исполня­емый файл AnyConnectInstaller.exe, пос­ле запус­ка которо­го ата­кующий уста­новил кон­троль над компь­юте­ром. Затем он заг­рузил допол­нитель­ные ути­литы и повысил при­виле­гии в сис­теме. Наконец, зло­умыш­ленник под­клю­чил­ся к хос­ту 10.1.1.21 по про­токо­лу RDP, исполь­зуя пароль flagadmin@1234 поль­зовате­ля Administrator.

По­лучим пер­вичную информа­цию об иссле­дуемом обра­зе.

Про­филь опе­раци­онной сис­темы — Win7SP1x86_23418, IP-адрес хос­та — 10.1.1.21, имя компь­юте­ра — GIDEON-PC. Теперь вос­ста­новим пос­ледова­тель­ность дей­ствий зло­умыш­ленни­ка на ском­про­мети­рован­ном компь­юте­ре. Для начала получим информа­цию из кон­соли.

Зло­умыш­ленник заг­рузил ути­литу wce.exe и получил пароли поль­зовате­лей в сис­теме. Пос­мотрим, что хра­нит­ся в фай­ле w.tmp. Для это­го выг­рузим его так же, как выг­ружали для хос­та Target1.

Ад­рес фай­ла w.tmp в иссле­дуемом обра­зе — 0x000000003fcf2798.

Мы опре­дели­ли пароль поль­зовате­ля gideont76fRJhs.

Да­лее ата­кующий при­мон­тировал сис­темный диск кон­трол­лера домена \\10.1.1.2\c$, исполь­зуя пароль поль­зовате­ля Administrator. Ско­пиро­вал прог­рамму архи­вато­ра rar.exe и соз­дал на при­мон­тирован­ном дис­ке пап­ку crownjewels.

Пос­ле это­го зло­умыш­ленник заар­хивиро­вал все фай­лы с рас­ширени­ем .txt на дис­ке и задал пароль от архи­ва 123qwe!@#. Архив получил имя crownjewlez.rar. Так как на иссле­дуемом хос­те архив не хра­нит­ся и он откры­вал­ся толь­ко из коман­дной стро­ки, то информа­цию о сжа­тых фай­лах мож­но поис­кать в памяти про­цес­са. Получим дамп про­цес­са и най­дем в нем все фай­лы с рас­ширени­ем .txt.

Сдам­пим адресное прос­транс­тво про­цес­са с иден­тифика­тором 3048.

Вы­ведем стро­ки в получен­ном фай­ле, но пом­ним, что они в 16-бит­ной кодиров­ке.

Про­ана­лизи­руем Tasks Shedulers. Най­дем фай­лы tasks и выг­рузим их.

Ад­рес фай­ла At1 — 0x000000003fc399b8.

С помощью пла­ниров­щика задач зло­умыш­ленник запус­тил скрипт 1.bat. Выг­рузим его, адрес фай­ла в памяти — 0x000000003f427e50.

Скрипт 1.bat запус­кает ути­литу wce.exe.

Мы про­ана­лизи­рова­ли образ опе­раци­онной сис­темы на компь­юте­ре Target2, вос­ста­нови­ли дей­ствия зло­умыш­ленни­ка. Пос­ле ком­про­мета­ции сис­темы выг­рузили фай­лы с рас­ширени­ем .txt на кон­трол­лере домена 10.1.1.2, сох­ранили в запаро­лен­ный архив, а так­же получи­ли пароль поль­зовате­ля gideon.

По­лучим пер­вичную информа­цию об иссле­дуемой сис­теме.

Про­филь иссле­дуемо­го обра­за — Windows7SP1x86_23418, IP-адрес хос­та — 10.1.1.10, имя компь­юте­ра — POS-01-PC.

По­лучим информа­цию обо всех запущен­ных про­цес­сах и сетевой активнос­ти.

На­ходим про­цесс iexplore.exe с иден­тифика­тором 3208. Запус­тим пла­гин malfind для поис­ка внед­ренно­го в адресное прос­транс­тво про­цес­сов кода.

Из рисун­ка выше вид­но, что в про­цес­се iexplore.exe с иден­тифика­тором 3208 обна­руже­на область памяти с защитой на запись, чте­ние и выпол­нение, а так­же виден заголо­вок MZ (magic byte исполня­емо­го фай­ла). Мы на вер­ном пути. Поп­робу­ем выг­рузить этот код с помощью пла­гина malfind и най­дем пер­вичную информа­цию о вре­доно­се.

Вы­ясним MD5-хеш получен­ного фай­ла: 491e1a4b51a09d234c9356822cf521a7 — и най­дем его на VirusTotal.

Дан­ный модуль отно­сит­ся к семей­ству вре­доно­сов Dexter.

Най­дем сетевое вза­имо­дей­ствие с управля­ющим сер­вером.

Вре­донос­ный про­цесс уста­новил соеди­нение с управля­ющим сер­вером, име­ющим IP-адрес 54.84.237.92, по пор­ту 80.

Да­вай получим дамп адресно­го прос­транс­тва про­цес­са с иден­тифика­тором 3208 и вытащим все URL-адре­са, для чего будем исполь­зовать ути­литу bulk_extractor.

Мы получи­ли файл 3208.dmp. Запус­тим ути­литу bulk_extractor.

В катало­ге bulk_ex хра­нит­ся вся извле­чен­ная струк­туриро­ван­ная информа­ция, получен­ная из фай­ла 3208.dmp. В фай­ле url_histograms содер­жатся все домены, а так­же чис­ло обра­щений к ним.

Мо­дуль заг­ружал­ся с адре­са http://54.84.237.92/allsafe_update.exe, ори­гиналь­ное имя фай­ла — allsafe_update.exe. Так­же для поис­ка URL в фай­ле 3208.dmp мож­но вос­поль­зовать­ся регуляр­ным выраже­нием /(https?:\/\/)?([\w\.-]+)([\/\w \.-]*)/ и пла­гином yarascan.

Поп­робу­ем най­ти все фай­лы с рас­ширени­ем .exe в адресном прос­транс­тве дам­па про­цес­са.
От­кро­ем файл в hex-редак­торе и поп­робу­ем най­ти все наз­вания фай­лов с рас­ширени­ем .exe.

Спе­цифич­ное имя исполня­емо­го фай­ла для Allsafecybersec — allsafe_protector.exe. Мы иссле­дова­ли образ опе­ратив­ной памяти хос­та POS, обна­ружи­ли вре­донос­ный про­цесс с иден­тифика­тором 3208, выяви­ли сетевую активность с управля­ющим сер­вером 54.84.237.92. Заг­ружен­ный модуль отно­сит­ся к семей­ству вре­донос­ных прог­рамм Dexter.

Итак, мы вос­ста­нови­ли дей­ствия зло­умыш­ленни­ков, про­ана­лизи­ровав обра­зы сис­темной памяти Windows. С помощью фишин­гового сооб­щения, содер­жащего ссыл­ку на обновле­ния VPN-кли­ента, поль­зователь хос­та заг­рузил вре­донос­ный файл и запус­тил его. На машину уста­новил­ся вре­донос семей­ства XtremeRAT, с его помощью зло­умыш­ленни­ки управля­ли ском­про­мети­рован­ной машиной.

Да­лее ата­кующие получи­ли пароль поль­зовате­ля front-desk и Administrator. Для зак­репле­ния в сис­теме исполь­зовалась вет­ка реес­тра SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Ком­про­мета­ция сис­темы про­изош­ла 11:31:27 09.10.2015 UTC. С помощью учет­ной записи Administrator зло­умыш­ленник получил дос­туп к хос­там GIDEON-PC и POS-01-PC. На компь­юте­ре GIDEON-PC ата­кующий при­мон­тировал сис­темный диск кон­трол­лера домена 10.1.1.2\$c и выг­рузил три фай­ла с рас­ширени­ем .txt. Далее ата­кующий получил дос­туп к компь­юте­ру POS-01-PC и заг­рузил на него мал­варь семей­ства Dexter.


Источник

Наши проекты:

- Кибер новости: the Matrix
- Хакинг: /me Hacker
- Кодинг: Minor Code

Report Page