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

Анализ заголовка

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

Важные заголовки

Return-Path

Ад­рес элек­трон­ного пись­ма Return-Path содер­жит информа­цию о ста­тусе дос­тавки. Поч­товый сер­вер чита­ет содер­жимое заголов­ка Return-Path для обра­бот­ки недос­тавлен­ных или воз­вра­щен­ных отпра­вите­лю писем. Сер­вер получа­теля исполь­зует это поле для иден­тифика­ции «под­дель­ных» писем: зап­рашива­ет все раз­решен­ные IP-адре­са, свя­зан­ные с доменом отпра­вите­ля, и сопос­тавля­ет их с IP-адре­сом авто­ра сооб­щения. Если сов­падений нет, элек­трон­ное пись­мо отправ­ляет­ся в спам.

Received

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

Reply-To

Ад­рес элек­трон­ной поч­ты в этом поле исполь­зует­ся для отправ­ки ответно­го сооб­щения. В под­дель­ных пись­мах он может отли­чать­ся от адре­са отпра­вите­ля.

Received-SPF

Ме­тод SPF (Sender Policy Framework, инфраструк­тура полити­ки отпра­вите­ля) под­твержда­ет, что сооб­щения с кон­крет­ного домена были отправ­лены с сер­вера, который кон­тро­лиру­ется вла­дель­цем это­го домена. Если зна­чение это­го поля — Pass («Про­вер­ка прой­дена»), источник пись­ма счи­тает­ся под­линным.

DKIM

Служ­ба DKIM (Domain Keys Identified Mail, email с домен­ными клю­чами) отме­чает исхо­дящую поч­ту зашиф­рован­ной под­писью внут­ри заголов­ков, а поч­товый сер­вер получа­теля рас­шифро­выва­ет ее, исполь­зуя откры­тый ключ сов­мес­тно­го поль­зования, что­бы убе­дить­ся, что сооб­щение не было изме­нено при пересыл­ке.

X-Headers

Этим тер­мином обоз­нача­ются экспе­римен­таль­ные заголов­ки или заголов­ки рас­ширения. Обыч­но они добав­ляют­ся пос­тавщи­ками услуг элек­трон­ной поч­ты получа­теля. Для обна­руже­ния спа­ма исполь­зуют­ся поля типа X-FOSE-Spam и X-Spam-Score.

Рас­смот­рим сле­дующее элек­трон­ное сооб­щение.

Исходные данные в заголовке электронного письма
Ис­ходные дан­ные в заголов­ке элек­трон­ного пись­ма
  1. В при­веден­ном выше при­мере вид­но, что обратный путь не сов­пада­ет с адре­сом в поле From («От»). Это озна­чает, что все недос­тавлен­ные пись­ма будут воз­вра­щены по пер­вому адре­су.
  2. В поле Received («Получе­но») имя домена, с которо­го пись­мо было отправ­лено, — hiworks.co.kr (сайт для мас­киров­ки отпра­вите­ля элек­трон­ных писем), а не gki.com. Мож­но сде­лать вывод: пись­мо под­дель­ное. Кро­ме того, по резуль­татам про­вер­ки IP-адрес (142.11.243.65) не сов­пада­ет с адре­сом gki.com.
  3. Ад­рес отпра­вите­ля From отли­чает­ся от адре­са в поле Reply-To. Таким обра­зом, ответ на пись­мо будет нап­равлен в поч­товый ящик на домене @gmail.com, а не @gki.com.
  4. Зна­чение поля Received-SPF — neutral («ней­траль­но»); домен gki.com не дает в отно­шении IP-адре­са (142.11.243.65) ни раз­решения, ни зап­рета. Даль­нейшая про­вер­ка Whois выяви­ла, что этот домен не свя­зан с IP-адре­сом 142.11.243.65.
  5. Зна­чение поля DKIM — none («нет»). Это озна­чает, что элек­трон­ное пись­мо не под­писано.

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

 

Анализ тела письма

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

Фишинговое письмо на тему COVID-19
Фи­шин­говое пись­мо на тему COVID-19

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

Фишинговое письмо на тему COVID-19 (продолжение)
Фи­шин­говое пись­мо на тему COVID-19 (про­дол­жение)

Кро­ме того, в кон­це сооб­щения име­ется стро­ка «Это пись­мо было про­вере­но McAfee». Бла­года­ря это­му пись­мо выг­лядит безопас­ным.

Од­нако если мы наведем кур­сор мыши на кноп­ку «Под­робнее» (See Details), то уви­дим ссыл­ку на сер­вис OneDrive. Вмес­то того что­бы нажать эту ссыл­ку, ско­пиру­ем ее и откро­ем в бра­узе­ре.

Скачанный по ссылке OneDrive файл HTML
Ска­чан­ный по ссыл­ке OneDrive файл HTML

Не­зави­симый переход по ссыл­кам из спа­ма и фишин­говых писем (hxxps://1drv.ms/u/s!Ajmzc7fpBw5lrzwfPwIkoZRelG4D) луч­ше выпол­нять в изо­лиро­ван­ной сре­де. Если у тебя нет такой сре­ды, пос­тавь вир­туал­ку или вос­поль­зуйся сер­висом кросс‑бра­узер­ного тес­тирова­ния, нап­ример Browserling.

Ссыл­ка ведет на HTML-стра­ницу, которая редирек­тит нас на дру­гой сайт:

hxxps://selimyildiz.com.tr/wp-includes/fonts/greec/xls/xls/open/index.htm
Фальшивая страница входа в Office 365
Фаль­шивая стра­ница вхо­да в Office 365

Эта веб‑стра­ница похожа на стра­ницу онлайн‑при­ложе­ния Microsoft Excel с зап­росом дос­тупа к Office 365 для ска­чива­ния докумен­та.

Панель администратора WordPress сайта selimyildiz.com.tr
Па­нель адми­нис­тра­тора WordPress сай­та selimyildiz.com.tr

Что­бы про­верить под­линность стра­ницы, сок­ратим URL до уров­ня домена и выпол­ним заг­рузку. Домен пере­адре­сует нас на стра­ницу вхо­да в панель адми­нис­три­рова­ния сай­та под управле­нием WordPress. Собс­твен­но, уже на этом эта­пе ста­новит­ся оче­вид­ным, что мы име­ем дело с фишин­гом.

Информация whois о сайте selimyildiz.com.tr
Ин­форма­ция whois о сай­те selimyildiz.com.tr

Сог­ласно дан­ным служ­бы whois, домен не был зарегис­три­рован Microsoft и соот­ветс­тву­ет пуб­лично­му IP-адре­су 2.56.152.159, который так­же не при­над­лежит Microsoft. Эти дан­ные явно сви­детель­ству­ют о том, что откры­тый по ссыл­ке сайт соз­дан мошен­никами.

Попытка входа с произвольными реквизитами для аутентификации
По­пыт­ка вхо­да с про­изволь­ными рек­визита­ми для аутен­тифика­ции

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

Фальшивый счет для привлечения внимания
Фаль­шивый счет для прив­лечения вни­мания

Итак, теперь мы зна­ем, что это под­дель­ный сайт. Что делать даль­ше? Что­бы про­верить фун­кцию аутен­тифика­ции, вновь вве­дем про­изволь­ные рек­визиты. Теперь они при­няты! На этот раз бра­узер откры­вает в фор­мате PDF счет, который выг­лядит под­линным, отправ­ленным некой медицин­ской ком­пани­ей. Одна­ко к тому вре­мени, ког­да жер­тва пой­мет, что это фаль­шивый счет, ее логин и пароль будут уже похище­ны.

 

Анализ вложений

Обыч­но во вло­жени­ях элек­трон­ной поч­ты поль­зовате­ли пересы­лают докумен­ты Microsoft Office или фай­лы PDF. Эти фор­маты час­то исполь­зуют­ся кибер­прес­тупни­ками в качес­тве инс­тру­мен­та для заг­рузки вре­донос­ного ПО. Что­бы получить дос­туп к сис­теме жер­твы, зло­умыш­ленни­ки внед­ряют в такие фай­лы эле­мен­ты VBA (Visual Basic Application) или JavaScript и рас­простра­няют их с помощью фишин­говых писем.

В пер­вой час­ти это­го раз­дела мы про­ана­лизи­руем подоз­ритель­ный документ Word. Этот документ содер­жит мак­рос на VBA. Иног­да мак­рос запус­кает­ся при откры­тии докумен­та, но начиная с вер­сии Microsoft Office 2007 для запус­ка содер­жимого с мак­росами необ­ходимо раз­решение поль­зовате­ля. Что­бы обой­ти эту защиту, хакеры исполь­зуют методы соци­аль­ной инже­нерии. Они пыта­ются заручить­ся довери­ем жер­твы, что­бы побудить ее без раз­думий нажать на кноп­ку «Раз­решить редак­тирова­ние».

 

Анализ документа Word

Наз­вание фай­ла: PR_Report.bin.

Ути­литы, которые нам понадо­бят­ся:

  • Oletools;
  • Yara;
  • Didier Stevens Suite;
  • Process Monitor;
  • Windows Network Monitor (Packet capture tool).

Шаг 1. Анализ свойств файла

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

В дан­ном слу­чае тип фай­ла — Microsoft Office Word.

Шаг 2. Применение правил Yara

Yara — инс­тру­мент для иден­тифика­ции и клас­сифика­ции вре­донос­ного ПО. Он про­веря­ет фай­лы на осно­ве сиг­натур. Вос­поль­зуем­ся дву­мя готовы­ми пра­вила­ми Yara из прог­рам­мно­го пакета Didier Stevens Suite.

Пра­вило Yara (maldoc.yara), про­цесс выпол­нения которо­го показан выше, обна­ружи­ло, что магичес­кое чис­ло фай­ла OLE (D0 CF 11 E0) сов­пада­ет с иден­тифика­тором HEX (магичес­кими бай­тами) докумен­тов Microsoft Office.

info

Ма­гичес­кое чис­ло — кри­тичес­кие дан­ные, выделен­ные уни­каль­ные зна­чения, которые не дол­жны сов­падать с дру­гими зна­чени­ями.

Так­же внут­ри фай­ла были обна­руже­ны подоз­ритель­ные вклю­чения — GetProcAddr и LoadLibrary.

Это пра­вило Yara rule (contains_pe_file.yara) выяв­ляет любые встро­енные фай­лы PE. Затем оно выпол­няет сопос­тавле­ние пред­став­ленных выше строк фай­ла. MZ — сиг­натура фай­ла PE.

Шаг 3. Выделение содержимого документа с помощью oledump.py

Файл OLE содер­жит потоки дан­ных. Oledump.py ана­лизи­рует эти потоки для даль­нейше­го извле­чения мак­росов или объ­ектов из фай­ла.

На рисун­ке выше в потоках 8, 9 и 15 вид­ны бук­вы M и O соот­ветс­твен­но. М озна­чает, что поток, воз­можно, содер­жит мак­рокод, О — объ­ект.

Шаг 4. Извлечение скрипта VB из макроса

Код в потоке 8 содер­жит метод killo. Это фун­кция для сох­ранения докумен­та с тем же име­нем фай­ла.

Код потока 9 содер­жит мно­жес­тво инте­рес­ных дан­ных. В фун­кции Document_Open() пред­став­лены име­на фай­лов 5C.pif и 6C.pif, при­чем 5C.pif копиру­ется в 6C.pif с помощью фун­кции FileCopy. В сле­дующей час­ти фун­кция вызыва­ет метод killo из дру­гого модуля (поток 8).

В кон­це фун­кция Document_Close() выпол­няет замас­кирован­ную коман­ду с исполь­зовани­ем обо­лоч­ки. Убрав мас­киров­ку, мы уви­дим, что 6C.pif запус­кает­ся в фоновом режиме (с помощью метода vbHide); одновре­мен­но отправ­ляет­ся ping-зап­рос к localhost.

shell cmd.exe /c ping localhost -n 100 && start Environ("Temp") & "\6C.pif", vbHide

Шаг 5. Извлечение файла из объекта OLE

Оче­вид­но, документ содер­жит встро­енный файл, который мож­но извлечь с помощью инс­тру­мен­та oleobj.

Как показа­но выше, oleobj пос­ле такого извле­чения из объ­екта сох­раня­ет файл в текущей рабочей дирек­тории. Выделен­ная часть рисун­ка содер­жит све­дения об исходном и вре­мен­ном пути, по которо­му файл сох­раня­ет себя в сис­теме пос­ле откры­тия докумен­та.

Шаг 6. Получение статической информации из извлеченного файла

Итак, мы извлек­ли исполня­емый файл PE32 для Windows. Что­бы под­твер­дить этот вывод, запус­тим инс­тру­мент pecheck.py для обна­руже­ния заголов­ков PE внут­ри фай­ла.

Шаг 7. Анализ поведения

Нас­тро­им вир­туаль­ную машину Windows 7 32-bit, изме­ним рас­ширение фай­ла на EXE. До его запус­ка необ­ходимо вклю­чить инс­тру­мен­ты Apate DNS и Windows Network Monitoring.

DNS-запросы домена C&C, зарегистрированные Apate DNS
DNS-зап­росы домена C&C, зарегис­три­рован­ные Apate DNS
Сетевой трафик 5C.exe, зарегистрированный при попытке обмена данными с C&C-сервером
Се­тевой тра­фик 5C.exe, зарегис­три­рован­ный при попыт­ке обме­на дан­ными с C&C-сер­вером

Сог­ласно резуль­татам ана­лиза с помощью Apate DNS и Microsoft Network Monitoring, файл соз­дал про­цесс с име­нем 5C.exe и выпол­нил нес­коль­ко попыток под­клю­чения к раз­личным C&C-сер­верам.

Изменения в реестре, зафиксированные Process Monitor
Из­менения в реес­тре, зафик­сирован­ные Process Monitor

По дан­ным Process Monitor, про­цесс 5C.exe внес нес­коль­ко изме­нений в клю­чи сис­темно­го реес­тра, име­ющие отно­шение к нас­трой­кам интернет‑соеди­нения. Он отклю­чил прок­си‑сер­вер бра­узе­ра, уста­новив зна­чение 0 для клю­ча ProxyEnable и 09 для 9-бай­тно­го клю­ча SavedLegacySettings. В резуль­тате бра­узер начал опре­делять интернет‑нас­той­ки в авто­мати­чес­ком режиме нап­рямую, без прок­си.

Итак, документ Word вна­чале запус­тил мак­рос VBA, сох­ранил и запус­тил исполня­емый файл, соз­дал новый про­цесс, обме­нял­ся дан­ными с C&C-сер­верами и внес неав­торизо­ван­ные изме­нения в реестр. Эти све­дения дос­таточ­ны для того, что­бы опре­делить документ как вре­донос­ный. Далее мы можем выпол­нить более под­робный ана­лиз — про­вес­ти отладку исполня­емо­го фай­ла или изу­чить дамп про­цес­са, что­бы боль­ше узнать о поведе­нии фай­ла.

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Подписаться
Уведомить о
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии