Разминируем почту. Простое руководство по выявлению фишинга
Фишинг — один из самых распространенных векторов атак и одно из популярнейших направлений социальной инженерии. Что неудивительно: электронной почтой мы пользуемся каждый день. В этой статье я разберу конкретные примеры фишинговых писем и расскажу, как искать в них сюрпризы.
АНАЛИЗ ЗАГОЛОВКА
Электронное письмо состоит из трех частей — заголовка, основной части (тела) и иногда вложения. В заголовке представлена маршрутная информация сообщения. Он может содержать и другие сведения — тип контента, данные отправителя и адресата, дату получения, абсолютный адрес отправителя, адрес почтового сервера и реальный адрес электронной почты, с которого или на который было отправлено сообщение.
Важные заголовки
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.
Рассмотрим следующее электронное сообщение.
- В приведенном выше примере видно, что обратный путь не совпадает с адресом в поле From («От»). Это означает, что все недоставленные письма будут возвращены по первому адресу.
- В поле Received («Получено») имя домена, с которого письмо было отправлено, — hiworks.co.kr (сайт для маскировки отправителя электронных писем), а не gki.com. Можно сделать вывод: письмо поддельное. Кроме того, по результатам проверки IP-адрес (142.11.243.65) не совпадает с адресом gki.com.
- Адрес отправителя From отличается от адреса в поле Reply-To. Таким образом, ответ на письмо будет направлен в почтовый ящик на домене @gmail.com, а не @gki.com.
- Значение поля Received-SPF — neutral («нейтрально»); домен gki.com не дает в отношении IP-адреса (142.11.243.65) ни разрешения, ни запрета. Дальнейшая проверка Whois выявила, что этот домен не связан с IP-адресом 142.11.243.65.
- Значение поля DKIM — none («нет»). Это означает, что электронное письмо не подписано.
Судя по всему, данное сообщение поддельное. Извлеченные из письма идентификационные данные необходимо внести в черный список.
АНАЛИЗ ТЕЛА ПИСЬМА
Тело фишингового письма — основная часть электронного сообщения, именно его содержание призвано обмануть пользователя. Содержимое сообщения адресовано лично получателю и выглядит настолько правдоподобным, что жертва часто попадается в ловушку злоумышленника.
Спамер представляется поставщиком услуг медицинского страхования. Письмо содержит информацию о счете на оплату страховки на случай заболевания COVID-19, которую жертва якобы заказала недавно.
Кроме того, в конце сообщения имеется строка «Это письмо было проверено McAfee». Благодаря этому письмо выглядит безопасным.
Однако если мы наведем курсор мыши на кнопку «Подробнее» (See Details), то увидим ссылку на сервис OneDrive. Вместо того чтобы нажать эту ссылку, скопируем ее и откроем в браузере.
Независимый переход по ссылкам из спама и фишинговых писем (hxxps://1drv.ms/u/s!Ajmzc7fpBw5lrzwfPwIkoZRelG4D
) лучше выполнять в изолированной среде. Если у тебя нет такой среды, поставь виртуалку или воспользуйся сервисом кросс‑браузерного тестирования, например Browserling.
Ссылка ведет на HTML-страницу, которая редиректит нас на другой сайт:
hxxps://selimyildiz.com.tr/wp-includes/fonts/greec/xls/xls/open/index.htm
Эта веб‑страница похожа на страницу онлайн‑приложения Microsoft Excel с запросом доступа к Office 365 для скачивания документа.
Чтобы проверить подлинность страницы, сократим URL до уровня домена и выполним загрузку. Домен переадресует нас на страницу входа в панель администрирования сайта под управлением WordPress. Собственно, уже на этом этапе становится очевидным, что мы имеем дело с фишингом.
Согласно данным службы 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.
Согласно результатам анализа с помощью Apate DNS и Microsoft Network Monitoring, файл создал процесс с именем 5C.exe
и выполнил несколько попыток подключения к различным C&C-серверам.
По данным Process Monitor, процесс 5C.exe
внес несколько изменений в ключи системного реестра, имеющие отношение к настройкам интернет‑соединения. Он отключил прокси‑сервер браузера, установив значение 0 для ключа ProxyEnable
и 09 для 9-байтного ключа SavedLegacySettings
. В результате браузер начал определять интернет‑настойки в автоматическом режиме напрямую, без прокси.
Итак, документ Word вначале запустил макрос VBA, сохранил и запустил исполняемый файл, создал новый процесс, обменялся данными с C&C-серверами и внес неавторизованные изменения в реестр. Эти сведения достаточны для того, чтобы определить документ как вредоносный. Далее мы можем выполнить более подробный анализ — провести отладку исполняемого файла или изучить дамп процесса, чтобы больше узнать о поведении файла.
Анализ документа PDF
Документ PDF — это набор объектов, который описывает способ отображения страниц внутри файла.
Чтобы побудить пользователя скачать или открыть документ PDF, такой файл чаще всего рассылают в электронных письмах. В момент открытия документ PDF обычно запускает JavaScript в фоновом режиме. Этот скрипт может воспользоваться уязвимостью в приложении Adobe PDF Reader или незаметно сохранить встроенный исполняемый файл.
Файл PDF состоит из четырех компонентов. Это заголовок, основная часть (тело), ссылки и трейлер (концевая метка).
- Заголовок содержит информацию о версии документа и другую служебную информацию.
- Тело PDF содержит различные объекты (объекты состоят из потоков, которые используются для хранения данных).
- Таблица перекрестных ссылок указывает на каждый объект.
- Трейлер указывает на таблицу перекрестных ссылок.
Рассмотрим в качестве примера файл 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
создал два подозрительных процесса (zedeogm.exe
, cmd.exe
), которые были остановлены после запуска.
Согласно данным Process Monitor, в рамках запущенных процессов был сохранен файл zedeogm.exe
. Затем он изменил правило брандмауэра Windows. На следующем этапе был запущен файл WinMail.exe
. После этого программа запустила cmd.exe
для выполнения файла tmpd849fc4d.bat
и остановила процесс.
Таким образом, мы собрали достаточно доказательств того, что этот файл PDF вредоносный. Далее можно принять дополнительные профилактические меры — например, выполнить двоичную отладку и исследование памяти извлеченных IOC в целях поиска других угроз.
ЗАКЛЮЧЕНИЕ
В этой статье мы рассмотрели поиск признаков фишинга в электронном письме, а также то, как эта процедура помогает в профилактике неизвестных угроз. Были определены области, в которых следует искать эти признаки. Мы узнали, как преступники скрывают вредоносные URL в теле электронного письма и какие действия необходимы для их проверки.
Что делать, чтобы обезопасить себя:
- Никогда не доверяй отправителю электронного письма. Всегда проверяй основные идентификационные данные, прежде чем ответить на письмо.
- Не переходи по ссылкам и не открывай вложения, если отправитель письма не тот, кем он представился.
- Злоумышленники часто используют произвольные имена доменов. По этой причине тщательно проверяй адрес сайта на наличие «опечаток» — это может быть ресурс, зарегистрированный специально, чтобы ввести тебя в заблуждение.
- Перепроверяй происхождение сайта, прежде чем ввести свои персональные данные — имя, адрес, реквизиты доступа, финансовые сведения и прочие.
- Если ты понял, что ввел реквизиты доступа на подозрительном сайте, немедленно смени пароль.