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

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

Самый опасный вектор атак — соци­аль­ная инже­нерия. Хакеры отправляют жер­тве сообщение с прикрепленным файлом на электронную почту, как правило — файл Microsoft Office с вреодносным содер­жимым. Сегодня я покажу, как ана­лизи­ровать вредоносные файлы Microsoft Office.

Еще по теме: Как хакеры скрывают вирусы в документах Office

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

Для удобс­тва чте­ния кода я пере­име­новал перемен­ные. Алго­ритм декоди­рова­ния очень прост. С каж­дым бай­том выпол­няет­ся опе­рация XOR (исклю­чающее «или») с клю­чом, который хра­нит­ся в перемен­ной KEY. Пос­ле каж­дого пре­обра­зова­ния бай­та изме­няет­ся и сам ключ.

На­пишем собс­твен­ный скрипт для декоди­рова­ния полез­ной наг­рузки, исполь­зуя Python 3.

Этот скрипт находит стро­ку MxOH8... в иссле­дуемом докумен­те и счи­тыва­ет дан­ные раз­мером 16 827 байт. Далее по алго­рит­му, реали­зован­ному в фун­кции Decode, он рас­шифро­выва­ет полез­ную наг­рузку и сох­раня­ет резуль­тат в файл maintools.js.

Итак, с помощью нашей прог­раммы мы вытащи­ли рас­шифро­ван­ный JS-сце­нарий. Пос­мотрим, что у него внут­ри?

Ос­новной код вре­донос­ного скрип­та до пре­обра­зова­ния перемен­ных
Ос­новной код вре­донос­ного скрип­та до пре­обра­зова­ния перемен­ных

В перемен­ную wvy1 сох­раня­ются аргу­мен­ты коман­дной стро­ки. Фун­кция y3zb() воз­вра­щает основную полез­ную наг­рузку, которая пре­обра­зует­ся по опре­делен­ному алго­рит­му. Рас­смот­рим эту фун­кцию пов­ниматель­нее.

Учас­ток кода, содер­жащий полез­ную наг­рузку
Учас­ток кода, содер­жащий полез­ную наг­рузку

В перемен­ной qGxZ хра­нит­ся основной вре­донос­ный код, который перед выпол­нени­ем декоди­рует­ся. Но что­бы понять прин­цип рас­шифров­ки, сна­чала пере­име­нуем наз­вание перемен­ных в скрип­те — прос­то ради удобс­тва.

Ос­новной код пос­ле пре­обра­зова­ния перемен­ных
Ос­новной код пос­ле пре­обра­зова­ния перемен­ных

В фун­кции LXv5 реали­зован алго­ритм декоди­рова­ния Base64, поэто­му пере­име­нуем ее в Base64_decode. Фун­кция CpPT содер­жит алго­ритм шиф­рования RC4, дадим ей имя RC4(). Этой фун­кции в качес­тве аргу­мен­та переда­ется стро­ка EzZETcSXyKAdF_e5I2i1, которая явля­ется аргу­мен­том коман­дной стро­ки и одновре­мен­но клю­чом для деоб­фуска­ции полез­ной наг­рузки. А рас­шифро­ван­ный код JavaScript выпол­няет фун­кция eval.

Учас­ток кода, в котором реали­зован алго­ритм шиф­рования RC4
Учас­ток кода, в котором реали­зован алго­ритм шиф­рования RC4

В пер­вых двух цик­лах реали­зован алго­ритм Key-scheduling algorithm, с помощью которо­го в даль­нейшем генери­рует­ся ключ. Напишем скрипт на Python 3, рас­шифро­выва­ющий полез­ную наг­рузку из перемен­ной qGxZ фун­кции

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

Учас­ток получен­ного JavaScript-кода
Учас­ток получен­ного JavaScript-кода

Этот сце­нарий собира­ет информа­цию о ском­про­мети­рован­ной сис­теме и отправ­ляет ее на управля­ющие сер­веры.

За­голо­вок отправ­ляемых дан­ных
За­голо­вок отправ­ляемых дан­ных

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

Ме­тод зак­репле­ния в сис­теме
Ме­тод зак­репле­ния в сис­теме

Пос­ле запус­ка вре­донос­ный скрипт копиру­ет себя в сле­дующую пап­ку:

А затем соз­дает в пла­ниров­щике задач Windows новую задачу, которая запус­кает­ся при вхо­де поль­зовате­ля в сис­тему. Задача име­ет имя Task Manager, опи­сание Windows Task Manager, а сам скрипт запус­кает­ся из катало­га WPD.

Най­ти в сис­теме это задание мож­но с помощью коман­ды schtasks /query /fo csv /v, а еще мож­но прос­то зай­ти в пап­ку C:\Windows\System32\Tasks и отыс­кать в ней под­каталог WPD. Весь свой тра­фик сце­нарий шиф­рует алго­рит­мом RC4 с клю­чом 2f532d6baec3d0ec7b1f98aed4774843. Для запус­ка JS-скрип­та исполь­зует­ся ути­лита коман­дной стро­ки cscript.exe.

Emprisa Maldoc

Раз­берем задание с вре­донос­ным докумен­том в фор­мате Microsoft Rich Text Format (RTF). Такие фай­лы очень час­то исполь­зуют­ся зло­умыш­ленни­ками при фишин­говых ата­ках и, как пра­вило, содер­жат экс­пло­иты.

Для начала соберем информа­цию об объ­екте иссле­дова­ния с помощью ути­литы rtfobj.

Вы­вод работы ути­литы rtfobj
Вы­вод работы ути­литы rtfobj

Тул­за опре­дели­ла, что RTF-документ содер­жит встро­енный объ­ект. Для выпол­нения вре­донос­ного кода исполь­зует­ся уяз­вимость CVE-2017-11882, экс­плу­ати­рующая перепол­нение буфера в редак­торе Microsoft Equation. Про­ана­лизи­руем этот файл с помощью ути­литы rtfdump.

Объ­екты, рас­положен­ные в иссле­дуемом фай­ле
Объ­екты, рас­положен­ные в иссле­дуемом фай­ле

Как вид­но из рисун­ка, в докумен­те спря­тан объ­ект с име­нем Equation.e, magic-байт d0cf11e0. Иссле­дуем поток 7, затем выг­рузим из него OLE-объ­ект и сох­раним в файл objrtf.

По­лучен­ный OLE-объ­ект мож­но изу­чить при помощи ути­литы oledump.

Ана­лиз OLE-объ­екта
Ана­лиз OLE-объ­екта

Пос­ле стро­ки Equation Native в шес­тнад­цатерич­ном пред­став­лении содер­жится обфусци­рован­ный шелл‑код. Сох­раним его дамп в файл shell.

Шес­тнад­цатерич­ное зна­чение шелл‑кода
Шес­тнад­цатерич­ное зна­чение шелл‑кода

Что­бы разоб­рать­ся, как работа­ет этот шелл‑код, нам понадо­бит­ся ути­лита scdbg. Запус­тим ее с парамет­ром /findsc, который эму­лиру­ет выпол­нение шелл‑кода при каж­дом сме­щении в фай­ле.

Эму­ляция вре­донос­ного шелл‑кода
Эму­ляция вре­донос­ного шелл‑кода

Фун­кция LoadLibraryA заг­ружа­ет динами­чес­кую биб­лиоте­ку urlmon.dll. Далее с исполь­зовани­ем фун­кции URLDownloadToFileA из этой биб­лиоте­ки с ресур­са raw.githubusercontent.com ска­чива­ется полез­ная наг­рузка и сох­раня­ется в файл o.exe. Затем выпол­няет­ся выход из про­цес­са с помощью фун­кции ExitProcess.

По­лучим полез­ную наг­рузку и пос­мотрим, что это такое. Адрес сле­дующий:

Поведенческий анализ вредоносного документа

Зай­дем в вир­туаль­ную машину Kali Linux, перей­дем в каталог

и сох­раним полез­ную наг­рузку под име­нем sample.png.

По­лез­ная наг­рузка, сох­ранен­ная в файл‑заг­лушку Inetsim
По­лез­ная наг­рузка, сох­ранен­ная в файл‑заг­лушку Inetsim

Вер­немся в вир­туаль­ную машину с Windows 10, уста­новим Microsoft Office и откро­ем в нем иссле­дуемый файл c39-EmprisaMaldoc.rtf, что­бы про­ана­лизи­ровать его поведе­ние.

Ес­ли файл открыть, запус­тится дочер­ний про­цесс EQNEDT32.EXE (ком­понент MS Office, отве­чающий за встав­ку и редак­тирова­ние объ­ектов OLE в докумен­ты). Уяз­вимость сра­баты­вает, ког­да EQNEDT32.EXE пыта­ется ско­пиро­вать имя шриф­та в локаль­но соз­данный буфер.

Раз­мер буфера сос­тавля­ет все­го 40 (0x28) байт, одна­ко, если имя шриф­та длин­нее 40 байт, буфер и регистр EBP перепол­нятся, а адре­са воз­вра­та будут переза­писа­ны. Ког­да фун­кция завер­шит выпол­нение, поток управле­ния дос­тавит­ся по наз­начен­ному зло­умыш­ленни­ком адре­су.

Вы­пол­няющий­ся таким обра­зом шелл‑код заг­ружа­ет полез­ную наг­рузку из вир­туаль­ной машины Kali Linux (файл sample.png) и сох­раня­ет по пути C:\o.exe. Пос­ле запус­ка это­го исполня­емо­го фай­ла появ­ляет­ся модаль­ное окно, содер­жащее флаг.

Вы­вод полез­ной наг­рузки
Вы­вод полез­ной наг­рузки

Да­вай пос­мотрим, какое имя шриф­та заг­ружа­ется про­цес­сом, ког­да откры­вают вре­донос­ный документ. Для это­го запус­тим Proccess Hacker 2, откро­ем документ, най­дем про­цесс Winword.exe и перей­дем на вклад­ку Memory. В памяти оты­щем обра­щение к пап­ке C:\Windows\Fonts и уви­дим, что про­цесс пыта­ется заг­рузить шрифт times.ttf. Зна­чит, это шрифт Times New Roman.

Итого

На этих двух при­мерах мы рас­смот­рели методи­ку иссле­дова­ния подоз­ритель­ных докумен­тов, которые рас­простра­няют­ся зло­умыш­ленни­ками по элек­трон­ной поч­те при фишин­говых ата­ках. На GitHub мож­но най­ти РОС для рас­смот­ренной нами экс­плу­ата­ции уяз­вимос­ти CVE-2017-11882, который выпол­няет шелл‑код по адре­су в памяти 0x00402114. Microsoft зак­рыла эту уяз­вимость, выпус­тив патч KB4011604. Не забудь уста­новить это обновле­ние, что­бы обе­зопа­сить себя от подоб­ной ата­ки.

Еще по теме: Удаленная отладка вредоносных программ

ВКонтакте
OK
Telegram
WhatsApp
Viber

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

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