June 28, 2021

Разминируем почту. Простое руководство по выявлению фишинга

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

АНАЛИЗ ЗАГОЛОВКА

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

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

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 (про­дол­жение)

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

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

Ска­чан­ный по ссыл­ке 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

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

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

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

Ин­форма­ция 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
Се­тевой тра­фик 5C.exe, зарегис­три­рован­ный при попыт­ке обме­на дан­ными с C&C-сер­вером

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

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

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

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

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

До­кумент PDF — это набор объ­ектов, который опи­сыва­ет спо­соб отоб­ражения стра­ниц внут­ри фай­ла.

Что­бы побудить поль­зовате­ля ска­чать или открыть документ PDF, такой файл чаще все­го рас­сыла­ют в элек­трон­ных пись­мах. В момент откры­тия документ PDF обыч­но запус­кает JavaScript в фоновом режиме. Этот скрипт может вос­поль­зовать­ся уяз­вимостью в при­ложе­нии Adobe PDF Reader или незамет­но сох­ранить встро­енный исполня­емый файл.

Файл PDF сос­тоит из четырех ком­понен­тов. Это заголо­вок, основная часть (тело), ссыл­ки и трей­лер (кон­цевая мет­ка).

  1. За­голо­вок содер­жит информа­цию о вер­сии докумен­та и дру­гую слу­жеб­ную информа­цию.
  2. Те­ло PDF содер­жит раз­личные объ­екты (объ­екты сос­тоят из потоков, которые исполь­зуют­ся для хра­нения дан­ных).
  3. Таб­лица перек­рес­тных ссы­лок ука­зыва­ет на каж­дый объ­ект.
  4. Трей­лер ука­зыва­ет на таб­лицу перек­рес­тных ссы­лок.

Рас­смот­рим в качес­тве при­мера файл Report.pdf.

Инс­тру­мен­ты:

Шаг 1. Просканируем документ PDF с помощью PDFiD

PDFiD — ком­понент прог­рам­мно­го пакета Didier Stevens Suite. Он ска­ниру­ет документ PDF, исполь­зуя спи­сок строк для обна­руже­ния эле­мен­тов JavaScript, встро­енных фай­лов, дей­ствий при откры­тии докумен­тов и под­сче­та чис­ла кон­крет­ных строк внут­ри PDF.

Как вид­но из резуль­татов ска­ниро­вания, PDFiD выявил в фай­ле Report.pdf нес­коль­ко объ­ектов, потоков, эле­мен­тов JS, JavaScript и OpenAction. Наличие таких эле­мен­тов озна­чает, что документ PDF содер­жит скрип­ты JavaScript или Flash.

Эле­мент /Embedded file ука­зыва­ет на при­сутс­твие внут­ри PDF фай­лов дру­гих фор­матов. Эле­мен­ты /OpenAction, AA, /Acroform под­ска­зыва­ют нам, что при откры­тии или прос­мотре докумен­та PDF выпол­няет­ся какое‑то авто­мати­чес­кое дей­ствие.

По­токи — это дан­ные внут­ри объ­екта.

Шаг 2. Просмотр содержимого объектов

Итак, мы выяс­нили, что внут­ри фай­ла PDF содер­жится JavaScript. Это будет отправ­ной точ­кой ана­лиза. Для поис­ка кос­венно­го объ­екта JavaScript запус­тим инс­тру­мент pdf-parser.py.

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

Шаг 3. Извлечение встроенного файла с помощью peepdf

Peepdf — инс­тру­мент на язы­ке Python, содер­жит все необ­ходимые ком­понен­ты для ана­лиза PDF. Что­бы вос­поль­зовать­ся его воз­можнос­тями, набери коман­ду peepdf --i file_name.pdf. Ключ -i вклю­чает инте­рак­тивный режим работы скрип­та.

Что­бы узнать боль­ше, смот­ри справ­ку (опция help).

Ре­зуль­тат ана­лиза с помощью peepdf ука­зыва­ет на то, что в объ­екте 14 име­ется встро­енный файл. При более близ­ком рас­смот­рении это­го объ­екта мы уви­дим, что он ука­зыва­ет на объ­ект 15; в свою оче­редь, объ­ект 15 ука­зыва­ет на объ­ект 16. Наконец, мы обна­ружи­ваем приз­наки наличия фай­ла virus внут­ри объ­екта 17. Судя по содер­жимому PDF, в нем есть толь­ко один поток, который так­же ука­зыва­ет на объ­ект 17. Таким обра­зом, объ­ект 17 пред­став­ляет собой поток со встро­енным фай­лом.

Внут­ри потока 17 содер­жится сиг­натура фай­ла, которая начина­ется с MZ, и шес­тнад­цатерич­ное (hex) зна­чение, начина­ющееся с 4d 5a. Это приз­наки, ука­зыва­ющие на исполня­емый файл PE.

Да­лее мы сох­раним поток как исполня­емый файл virus.exe.

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

Те­перь запус­тим этот файл в вир­туал­ке под Windows 7 32-bit.

Process Explorer отоб­ража­ет про­цес­сы, соз­данные фай­лом virus.exe

Как вид­но в окне Process Explorer, virus.exe соз­дал два подоз­ритель­ных про­цес­са (zedeogm.exe, cmd.exe), которые были оста­нов­лены пос­ле запус­ка.

Ком­понент Process Monitor зарегис­три­ровал изме­нения в сис­теме, вне­сен­ные virus.exe

Сог­ласно дан­ным Process Monitor, в рам­ках запущен­ных про­цес­сов был сох­ранен файл zedeogm.exe. Затем он изме­нил пра­вило бран­дма­уэра Windows. На сле­дующем эта­пе был запущен файл WinMail.exe. Пос­ле это­го прог­рамма запус­тила cmd.exe для выпол­нения фай­ла tmpd849fc4d.bat и оста­нови­ла про­цесс.

Та­ким обра­зом, мы соб­рали дос­таточ­но доказа­тель­ств того, что этот файл PDF вре­донос­ный. Далее мож­но при­нять допол­нитель­ные про­филак­тичес­кие меры — нап­ример, выпол­нить дво­ичную отладку и иссле­дова­ние памяти извле­чен­ных IOC в целях поис­ка дру­гих угроз.

ЗАКЛЮЧЕНИЕ

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

Что делать, что­бы обе­зопа­сить себя:

  • Ни­ког­да не доверяй отпра­вите­лю элек­трон­ного пись­ма. Всег­да про­веряй основные иден­тифика­цион­ные дан­ные, преж­де чем отве­тить на пись­мо.
  • Не перехо­ди по ссыл­кам и не откры­вай вло­жения, если отпра­витель пись­ма не тот, кем он пред­ста­вил­ся.
  • Зло­умыш­ленни­ки час­то исполь­зуют про­изволь­ные име­на доменов. По этой при­чине тща­тель­но про­веряй адрес сай­та на наличие «опе­чаток» — это может быть ресурс, зарегис­три­рован­ный спе­циаль­но, что­бы ввес­ти тебя в заб­лужде­ние.
  • Пе­реп­роверяй про­исхожде­ние сай­та, преж­де чем ввес­ти свои пер­сональ­ные дан­ные — имя, адрес, рек­визиты дос­тупа, финан­совые све­дения и про­чие.
  • Ес­ли ты понял, что ввел рек­визиты дос­тупа на подоз­ритель­ном сай­те, немед­ленно сме­ни пароль.

Источник