шаблоны wordpress.

Подделка писем. Как защищаться

Привет habr! В данной заметке решил затронуть тему защиты от поддельных писем (Email spoofing, Forged email). Речь пойдёт о письмах, в которых так или иначе подделывается информация об отправителях. Получатель видит письмо, отправленное якобы доверенным лицом, но на самом деле, письмо отправлено злоумышленником.

В последнее время всё чаще слышим о проблеме поддельных писем от наших заказчиков, да и просто от знакомых. Эта проблема не только актуальна, но, похоже, набирает обороты. Вот реальная история от знакомого, который был близок к тому, чтобы потерять сумму с четырьмя нулями в долларовом эквиваленте. В компании велась переписка на английском языке с зарубежной компанией о приобретении дорогостоящего специализированного оборудования. Сперва нюансы возникли на стороне нашего знакомого – потребовалось изменить реквизиты счёта отправителя (компанию-покупателя). Через некоторое время, после успешного согласования новых реквизитов, поставщик оборудования также сообщил о необходимости изменения реквизитов счёта получателя (компанию-продавца). Вот только письма об изменении данных получателя шли уже от злоумышленников, удачно подменявших адрес отправителя. На фоне некоторой общей суматохи, усугубляющейся ещё и тем, что обе стороны не являлись носителями языка переписки, заметить подмену писем было практически невозможно. Нельзя не отметить и тот факт, что злоумышленники старательно копировали стили, шрифты, подписи и фотографии в письмах. Как именно утекла информация о сделке – скорее всего была скомпрометирована почтовая переписка. За неделю до финального согласования сделки, о которой идет речь в этой статье, на почту знакомого пришло письмо с трояном, в виде счета-фактуры в *.exe архиве. На момент прихода письма антивирус не отловил зловреда, и тот, некоторое время успел “поработать” на компьютере, и даже подтянуть на подмогу пару своих собратьев.

Через несколько дней сигнатуры антивируса обновились и зловред с собратьями был удален, но к тому моменту в переписку уже вклинились, отправителя подделали, деньги ушли на чужой счёт.
В данном примере подмена адреса отправителя была сделана крайне незамысловато. Реальные адреса мы не опубликуем, но приведём аналогичный пример.

Правильный адрес отправителя: best@bestofall.com
Поддельный адрес отправителя: bestbestofall.com@spoofed.ru.

Почтовая учётная запись злоумышленника включала имя “best@bestofall” и фамилию “.com”. Часть переписки знакомый вел с мобильного устройства, почтовый клиент которого отображал в поле отправителя только имя и фамилию отправителя. А так делают все мобильные почтовые клиенты. Поэтому, входящее письмо в этом почтовом клиенте виделось как от best@bestofall «пробел» .com. Что очень похоже на оригинал. Ниже письмо от злоумышленника и под ним легитимное письмо в интерфейсе Яндекс.Почты:


В Outlook письмо от злоумышленника тоже выглядело достаточно похоже на оригинал, если внимательно не всматриваться, то тоже можно и не заметить подделку.

Всё всплыло, когда позвонил поставщик и спросил: «Веэр из май мани?». К счастью знакомого, из-за двойной смены реквизитов (получателя и отправителя) относительно изначального подписанного соглашения $$$$$ не были окончательно зачислены на счет злоумышленников, а зависли на транзитном счете банка-получателя, и их удалось вернуть.

Компании по всему миру терпят существенные убытки из-за Email-атак (источник). Так с октября 2013 по август 2015 совокупный убыток от компрометаций корпоративной электронной почты компаний по всему миру составил 1,2 миллиарда долларов США. А атаки с поддельными письмами находятся среди самых распространённых видов атак на корпоративные почтовые системы.

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

Для того, чтобы разобраться с механизмом подделки адреса отправителя, вспомним структуру электронного письма, передаваемого по протоколу SMTP. Электронное письмо состоит из конверта (envelope), заголовков (headers) и тела письма (message body). Информация об отправителе содержится в конверте. Эта информация формируется SMTP-командой mail from и оказывает непосредственное влияние на процесс пересылки сообщения по мере прохождения почтовых cерверов Mail Transfer Agent (MTA). Однако, информация об отправителе также содержится в некоторых заголовках письма, таких как “From:”, “Return-Path:”, возможно “Reply-To:”. Заголовок “From:” не обязательно должен совпадать с тем, что написано в конверте письма и может представлять некоторое «дружеское имя» (friendly name, friendly from). Заголовок “Return-Path:” копирует отправителя из конверта. Заголовок “Reply-To:” содержит адрес для ответа. Заголовки значимы для почтового клиента (например, MS Outlook), по заголовкам заполняются соответствующие поля.

Рассмотрим пример SMTP-команд для отправки письма с поддельными заголовками “From:” и “Reply-To:”. Подключаемся к почтовому серверу Exchange с помощью telnet:

telnet 10.1.2.3 25
220 Exchange Microsoft ESMTP MAIL Service ready at Wed, 26 Oct 2016 10:28:00 +0300
helo
250 Exchange Hello [192.168.100.100]
mail from: attacker@spoofed.ru
250 2.1.0 Sender OK
rcpt to: uskov@cbs.ru
250 2.1.5 Recipient OK
data
354 Start mail input; end with <CRLF>.<CRLF>
From: Ivanov Ivan <CEO@cbs.ru>
To: Boris <uskov@cbs.ru>
Reply-To: attacker@yandex.ru
Subject: Urgent!

Need your credit card information.

Ivanov Ivan Ivanovich,
CEO,
Computer Business Systems

.
250 2.6.0 Queued mail for delivery
quit
221 2.0.0 Service closing transmission channel

В данном примере мы отправляем с реального адреса attacker@spoofed.ru письмо, но в заголовке “From:” указываем имя и адрес руководителя компании, а в заголовке “Reply-to” адрес на mail.yandex, куда невнимательный сотрудник отправит конфиденциальную информацию. В итоге письмо в почтовом клиенте Outlook будет выглядеть следующим образом:

А если нажать «Ответить» автозаполнится адрес получателя:

Как видно из предыдущего примера, отправить поддельное письмо не составляет большого труда, если почтовый сервер не защищён. В худшем случае, значение в конверте письма mail from также может быть подменено на легитимное. Если тело письма составлено аккуратно и с применением результатов социальной инженерии, выявить поддельное письмо становится всё сложнее для конечного пользователя. Ситуация ещё более усугубляется для пользователей мобильных устройств. Концепция мобильности предполагает, что все действия выполняем быстро, «на ходу», да ещё и на небольшом экране, не обращая внимание на мелочи/несоответствия. Кстати говоря, в примере про сделку с зарубежной компанией у знакомого тоже не обошлось без фактора «мобильности». Часть переписки проходила с мобильного устройства, почтовый клиент в поле отправителя отображал только имя/фамилию отправителя, но скрывал полный почтовый адрес.

Не существует единого метода борьбы с подменёнными письмами. Защита от данного вида атак требует комплексного и многоуровневого подхода. Попробую выделить основные подходы борьбы с поддельными письмами:

  1. Фильтрация на основе репутации сервера-отправителя.
  2. Фильтрация на основе проверок DNS-записей сервера отправителя.
  3. Фильтрация на основе проверок DNS-записей домена отправителя из конверта письма.
  4. Фильтрация на основе проверок SPF-записей.
  5. Фильтрация на основе DKIM.
  6. Фильтрация на основе DMARC.
  7. Создание гранулярных фильтров «вручную».

Из перечисленных методов первые три являются фильтрами грубой очистки, позволяющими бороться с массовыми рассылками спама, вредоносной почты, в том числе с подменённым отправителем. В данном случае злоумышленники используют эффект массовости, не осуществляя до атаки какой-либо специальной рекогносцировки и не стараясь точно подобрать контент под получателя. Например, письма от лица Сбербанка с просьбой сообщить какую-либо конфиденциальную информацию (логин/пароль от личного кабинета, номера карт, PIN-коды), рассылаемые на огромное число получателей. По принципу, кто-нибудь да клюнет.

Методы 4-6 помогают бороться с точными подменами отправителей, то есть ситуациями, когда в заголовках письма злоумышленник указывает с точностью до знака подменяемый отправитель.
К методу 7 предстоит прибегать в случаях как в примере про переписку с зарубежной компанией в начале статьи, когда заголовок письма модифицируется таким образом, чтобы стать похожим на реального отправителя. Но при этом, заголовок в подменённом письме всё же отличается от заголовка реального отправителя, что позволяет обойти проверки методами 4-6.

Рассмотрим перечисленные методы более подробно.

1. Фильтрация на основе репутации сервера-отправителя. Если система защиты корпоративной почты обеспечивает качественную базу репутаций отправителей, мы можем фильтровать значительный процент распространителей спама и вредоносной корреспонденции любого вида уже на этапе установления TCP-сессии, не заглядывая ни в тело, ни в конверт письма. Такой подход существенно экономит ресурсы системы. Как только отправитель пытается установить TCP-сессию на порт 25, система защиты определяет репутацию для IP-адреса отправителя, и принимает решение.

Пример Cisco ESA. Репутационная фильтрация.

2. Фильтрация на основе проверок DNS-записей сервера отправителя. Отправитель почтовых сообщений должен быть корректно зарегистрирован в DNS. Для отправителя должны существовать корректные PTR запись, А-запись. Отправитель должен корректно представляться в SMTP-команде HELO. При массовых рассылках спама и вредоносов злоумышленники постоянно меняют IP-адреса рассылающих серверов. Адреса меняются каждый день и даже чаще. Регистрировать необходимые записи в DNS сложно и даже невозможно. Поэтому, многие распространители спама и вредоносных сообщений пренебрегают данными требованиями, соответственно, появляется возможность их фильтровать по признакам DNS.

Пример Cisco ESA. DNS-проверки IP-адреса отправителя.

3. Фильтрация на основе проверок DNS-записей домена отправителя из конверта письма. Информация в mail from также подлежит проверке по DNS. На примере Cisco ESA письмо может быть отброшено если:

  1. Информация о домене отправителя отсутствует в конверте.
  2. Имя домена не разрешается в DNS.
  3. Имя домена не существует в DNS.

Данный тип проверок не особенно эффективен, отбрасываются письма с заведомо неверно сформированными конвертами.

4. Фильтрация на основе проверок SPF-записей. SPF – Sender Policy Framework – система проверки отправителей электронных сообщений. Проверка методом 2 «DNS-записи сервера отправителя» говорит только о том, что для IP-адреса отправителя существуют необходимые записи в DNS (PTR- и A-записи). Однако данные проверки не помогают определить, имеет ли право сервер отправитель слать письма от указанного домена. Стоит заметить, часто A-записи почтовых серверов содержат в себе имя домена компании, например, smtp01.mycompany.ru. Если этот же сервер используется для приёма почты, то эта же A-запись будет входить и в MX-запись. Можно предположить, что если письмо от mycompany.ru отправлено с сервера smtp01.mycompany.ru, то это письмо не поддельное, в противном случае, если письмо отправлено с smtp01.anythingelse.ru, письмо поддельно. Но на самом деле часто компании отправляют электронную корреспонденцию не напрямую со своих почтовых серверов, а через какие-либо дополнительные серверы MTA, например, через сервера своих провайдеров. В этом случае получаем, что письмо от домена mycompany.ru отправляется через серверы, к примеру, smtp01.provider.com, smtp02.provider.com и т.д. Канонические имена серверов отправителей не принадлежат домену компании mycompany.ru. Как на стороне получателя в данном случае понять, являются ли серверы-отправители легитимными или нет? Эту задачу решает система проверок SPF.

Задача решается опять же с помощью DNS. Для домена отправителя публикуется TXT-запись специального формата. В данной TXT-записи перечисляются IP-адреса, подсети или А-записи серверов, которые могут отправлять корреспонденцию, серверы, которые не являются легитимными отправителями. Благодаря системе SPF получатель может обратиться к DNS и уточнить, можно ли доверять серверу отправителю письма, или же сервер отправитель пытается выдать себя за кого-то другого.

На данный момент SPF-записи формируют далеко не все компании.

5. Фильтрация на основе DKIM. DKIM — DomainKeys Identified Mail – технология аутентификации электронных сообщений. Вернёмся к примеру из рассмотрения SPF-записей, когда компания mycompany.ru отправляет корреспонденцию наружу через провайдерские MTA smtp01.mycompany.ru и smtp02.provider.com. Для MTA существуют SPF-записи, поэтому письма от mycompany.ru, отправленные через эти серверы, успешно проходят проверку. Но что если данные MTA окажутся скомпрометированными, и злоумышленник также получит возможность отправлять поддельные письма через эти серверы? Как установить подлинность отправителя в этом случае? На помощь приходит аутентификация писем.

Для аутентификации используется ассиметричная криптография и хеш-функции. Закрытый ключ известен исключительно серверу отправителю. Открытый ключ публикуется опять же с помощью DNS в специальной TXT-записи. Сервер отправитель формирует отпечаток заголовков письма с помощью хэш-функции и подписывает его, используя закрытый ключ. Подписанный отпечаток вставляется в заголовок письма “DKIM-Signature:”. Теперь получатель письма с помощью открытого ключа может получить расшифрованный отпечаток и сравнить его с отпечатком полей полученного письма (хеш-функция известна). Если отпечатки совпадают, подписанные заголовки не были изменены при передаче, а отправитель письма, сформировавший заголовок “DKIM-Signature:”, является легитимным.

6. Фильтрация на основе DMARC. DMARC — Domain-based Message Authentication, Reporting and Conformance — техническая спецификация, описывающая как именно следует использовать результаты проверок SPF и DKIM. Политики DMARC публикуются как обычно с помощью DNS в TXT-записи. Политики DMARC указывают, что именно нужно делать с письмом на стороне получателя (доставить, отбросить, отправить в карантин), в зависимости от результатов проверок SPF и DKIM. Кроме того, DMARC обеспечивает обратную связь отправителя с его получателями. Отправитель может получать отчёты о всех электронных письмах, имеющих домен отправителя. Информация включает IP-адреса серверов-отправителей, количество сообщений, результат в соответствии с политиками DMARC, результаты проверок SPF и DKIM.

7. Создание гранулярных фильтров «вручную». К сожалению, далеко не все организации используют SPF, DKIM, DMARC при отправке электронной почты. Кроме того, в некоторых случаях проверки SPF, DKIM и DMARC могут пройти успешно, но письма оказываются всё равно подделанными (Cousin domain, Free Email Accounts). Для таких случаев помогают настройки фильтров. Возможности различных систем по созданию правил фильтрации разнятся. Фильтры настраиваются под различные сценарии проведения атаки и зависят от особенностей организации почтовых систем в компаниях. Например, в каких-то компаниях могут приходит из вне письма с доменом-отправителем этой же компании. Хотя в большинстве случаев такие письма должны пересылаться только в пределах периметра организации.

Мы более ориентированы на Cisco ESA, поэтому в заключении рассмотрим несколько примеров настройки фильтров на этом решении, а также интересную функциональность, появившуюся в релизе 10.0 (от июня 2016) программного обеспечения для Cisco ESA — Forged Email Detection. Данная функциональность как раз позволяет бороться с неточной подделкой отправителей, как в примере из начала статьи. Если заинтересовало, велкам в подкат.

Пример Cisco ESA. Фильтры.

Заключение

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