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


    Привет 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. Репутационная фильтрация.
    Немного конкретики на примере Cisco ESA. Решение использует репутационную базу Sender Base. Мы видим, что репутационная фильтрация помогает останавливать в районе 80% вредоносных писем. Причём по многолетнему опыту внедрения и сопровождения данного решения могу сказать, что количество ложных срабатываний репутационной фильтрации Cisco ESA стремится к нулю.

    Ниже сводка по нашей организации:



    В зависимости от репутации отправителя Cisco ESA не только принимает решение отбросить письмо или пропустить далее, но и определяет дальнейший сценарий обработки письма. Для различных значений репутации мы можем применять различные политики:


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

    Пример Cisco ESA. DNS-проверки IP-адреса отправителя.
    Рассмотрим DNS-проверки на примере Cisco ESA. При установлении TCP-сессии выполняются следующие проверки отправителя по DNS:

    1. Проверка наличия PTR-записи. PTR запись должна быть единственной и возвращать корректное каноническое имя хоста отправителя.
    2. Проверка наличия А-записи для имени хоста, найденного на первом шаге (по PTR-записи).
    3. Проверка совпадения forward DNS lookup для А-записи из предыдущего шага с IP-адресом отправителя.

    Если PTR-запись не существует, или найденная A-запись указывает на сторонний IP-адрес, с наибольшей долей вероятности мы принимаем сессию от нелегитимного отправителя. Для таких отправителей на Cisco ESA мы можем применять ограничивающие политики (отбрасываем письмо, отправляем в карантин, модифицируем заголовок, ограничиваем количество сессий и т.д.), в зависимости от поставленных требований.

    Хочу обратить внимание, на данном этапе проверок ESA не контролирует легитимность отправителя, то есть не проверяет, имеет ли право отправитель слать письма от указанного домена. Более того, на данном этапе ни конверт письма, ни заголовки не просматриваются. Отрабатывает только проверка по IP-адресу. Например, если письма от домена mycompany.ru будут идти с «левого» IP-адреса с корректными A- и PTR-записями в DNS, например, «smtp.spamer.ru», проверка пройдёт успешно и письмо будет пропущено для дальнейшей обработки. Проверка легитимности отправителей осуществляется другими методами (см. далее SPF-записи, DKIM, DMARC).

    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 предлагает два типа фильтров: Content Filters и Message Filters. Первые настраиваются с помощью GUI и предлагают конечный (хотя и достаточно обширный) список условий и действий. Пример из GUI:



    Если Content Filters не достаточны, чтобы описать условия попадания письма под действие фильтра, можно использовать Message Filters. Message Filters настраиваются из командной строки, используют регулярные выражения для описания условий и позволяют создавать сложные условия (например, If (((A and B) and not C) or D)). Message Filters обрабатывают письмо до Content Filters и позволяют создавать более гранулярные правила.

    Рассмотрим несколько сценариев подделки отправителя и соответствующие фильтры Cisco ESA для борьбы с атакой.

    Пример 1. Письма с доменом организации в отправителе не должны приходить из вне. Пример взят из с cisco.com: ссылка. Пример актуален в том случае, когда организация не готова публиковать свои SPF и Domain Keys в DNS. В данном примере используется следующий Message Filter:

    MarkPossiblySpoofedEmail:
    
        if ( (recv-listener == "InboundMail")       AND
             (subject != "\\{Possibly Forged\\}$") ) // Если письмо получено из вне и в заголовке ещё не помечено, что письмо как «Possibly Forged»
      {
            if (mail-from == "@yourdomain\\.com$") OR
               (header("From") == "(?i)@yourdomain\\.com")  // Если в конверте в mail from присутствует домен организации или в заголовке From присутствует домен организации 
            {
                strip-header("Subject");
                insert-header("Subject", "$Subject {Possibly Forged}");
            }
        }
    	// Добавляем к заголовку запись «Possibly Forged»

    В качестве действия могут быть выбраны и другие варианты: отправить в карантин, отбросить письмо и т.д.

    Пример 2. В начале статьи мы рассматривали пример, когда mail from из конверта письма был не поддельный (attacker@spoofed.ru, то есть атакующий пишет свой верный адрес), однако в заголовке From указывался поддельный адрес (uskov@cbs.ru). При этом, ничто не мешает атакующему завести SPF и Domain Keys в DNS для домена spoofed.ru. Получаем, что поддельное письмо пройдёт проверки SPF и DKIM. Также, проверки SPF и DKIM будут успешно пройдены, если злоумышленник использует бесплатную почту (free mail accounts – gmail.com, mail.ru и т.д.).

    Бороться с данной ситуацией можем, проверяя равенство значений в mail from и заголовке From. Сразу стоит оговориться, в общем случае RFC совершенно не требует, чтобы mail from равнялся From. Поэтому применять такой фильтр нужно только к некоторым отправителям.

    У Cisco ESA на данный момент (ноябрь 2016) есть ограничение: нельзя сравнивать значения полей между собой, то есть нельзя просто написать if mail from != header (From). Задачу можно решить другим способом. Создаём словарь имён отправителей Spoofed_senders, в который будем заносить отправителей, подверженных подмене. В фильтре ставим условие: если mail from не содержит отправителя из словаря, а заголовок From содержит отправителя из словаря, выполнять действие. Можно отправить письмо в карантин или отбросить, но cisco рекомендует записать подделанное значение заголовка From в новый заголовок X-Original-From, а поле From вообще удалить. В этом случае Cisco ESA автоматически сформирует заголовок From из значения mail from. Пример такого фильтра:

    SpoofedSendersFilter:
    	
       if (header-dictionary-match("Spoofed_Senders","From", 1))
       AND 
       (NOT (mail-from-dictionary-match("Spoofed_Senders", 1)))  // Если поле From содержит имя из словаря, а значение mail from не содержит имя из словаря
       {
          insert-header("X-Original-From", "$From");
          strip-header("From");
       }	// Формируем заголовок X-Original-From и удаляем заголовок From
    

    Пример 3. Злоумышленники используют адреса, похожие на адреса отправителей, так называемые “Cousin domains” и “Cousin addresses”. Например, адрес uskov@cbs.ru заменяется на usk0v@cbc.ru. Для домена cbc.ru формируются SPF и Domain Keys в DNS, поэтому письма проходят соответствующие проверки SPF и DKIM успешно, а получатель письма видит знакомого отправителя. Бороться с такой подменой сложнее. Придётся заносить в словарь Spoofed_senders из предыдущего примера все похожие варианты имён отправителей и названий домена, что едва-ли возможно.

    Для борьбы с данным видом подмены отправителей у Cisco ESA, начиная с релиза AsyncOS 10.0 (от июня 2016 года), появилась интересная функциональность “Forged Email Detection”. Сперва создаётся словарь имён отправителей (в примерах используется имя словаря FED), как и в предыдущем примере, в который будем заносить отправителей, подверженных подмене. Этот словарь формируется из имён отправителей, а не из имён почтовых ящиков. То есть нужно писать Olivia Smith вместо olivia.smith@example.com. Система Forged Email Detection будет сверять заголовок From с именами из словаря FED и выдавать вероятность (от 1 до 100), с которой отправителя можно считать подделанным.

    Например, если в словаре есть “John Simons”, а в заголовке From фигурирует j0hn.sim0ns@example.com, система выдаст вероятность подделки 82. Если в заголовке From фигурирует john.simons@diff-example.com (то есть то же имя, но другой домен), система выдаст вероятность подделки 100.

    Forged Email Detection настраивается через Content Filters или Message Filters. Ниже скриншот настройки Content Filter:



    Необходимо указать имя словаря, и пороговое значение вероятности, после которого считаем отправителя подделанным. Для данного условия можно выбрать любое из доступных действий (отбросить, отправить в карантин, модифицировать тему письма и т.д.). Кроме того, появилось новое дополнительное действие для Forged Email Detection: заменить значение заголовка From на значение из mail from. Данное действие не предлагает каких-либо опций:


    Заключение

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

    Comments 25

      +4
      Я правильно понимаю, что никакой из описанных способов не способен защитить от описанного в статье примера?
        +2
        Метод 7. Создание гранулярных фильтров «вручную». В данном примере помогло бы либо сравнение mail from с заголовком From, либо, в случае в ESA, функциональность Forged Email Detection.
          +1
          Человеческий фактор тоже нередко играет свою роль. На то и существует социальная инженерия.
          Как бы не защищался, а прокол может случиться всегда…
          0
          del
            +2
            Метод 8: PGP
              0
              эх, если бы письма можно было бы заверять ЭЦП, то проблем было бы меньше. Правда конечно не такой ЭЦП как сейчас, а доступной каждому и которая выдается один раз на всегда.
                0
                увы, но ЭЦП вполне себе компрометируются
                  0
                  Даже если блокчейн всякий использовать?
                    0
                    т.е. вы хотите положить приватную часть ЭЦП в публичный блокчейн?
                0
                А если заменяют поле From?
                  +1
                  Я конечно дико извиняюсь, но вы статью то читали?
                    0
                    Из наиболее очевидного
                    From: robot@monitoring.tool
                    Reply-To: admins@monitoringtool.company

                    А вообще это всё ж для созидания создавалось изначально. «Своими для своих»
                • UFO just landed and posted this here
                    +1
                    Вы так говорите, как если бы существовал один RFC. Я не знаю точное число RFC связанных с SMTP и форматом писем, но думаю их больше 50.

                    А Reply-To это часто используемый заголовок. Например для групповых рассылок.
                    0
                    Можно подробнее про то, от чего шаги 4-6 не защищают?
                    Если наивно предположить, что получатель внимательно следит за «cousin domain», то подделать можно?
                    И что на счет цифровой подписи письма?
                      +1
                      Вот как раз, если отбросить «cousin domain» и «free mail account», то мы вполне хорошо могли бы защититься с помощью SPF, DKIM, DMARC. Но проблема в том, что далеко не все это используют. В комментарии ниже очень верно подметили про ключевого партнёра с кривыми записями в SPF.

                      То же самое касается цифровой подписи PGP. Многие ли готовы её внедрять?

                      Именно поэтому я выделил в статье отдельный метод — создание гранулярных правил «вручную».
                      +1
                      Все это хорошо до тех пор, пока не появляются интересные факты:
                      2. Корректные записи DNS. Злоумышленнику это сделать не сложно. Мы прямо сейчас получаем огромное количество спама от разных доменов .eu, причем все домены имеют совершенно корректно настроенный Postfix (не является open relay), совершенно корректные записи DNS (и MX и PTR) и не имеют сайта. Как бороться — непонятно. Пока помогает лишь массовая блокировка по подсетям датацентров с рассадниками.
                      4. SPF работает неплохо до тех пор, пока ключевой партнер (фирма в 100-1000 раз большая по размеру) не делает кривые настройки у себя, а потом присылает письмо «У вас слишком суровые правила фильтрации, отключите их».

                      Кстати, а кто-нибудь знает, в каком именно стандарте (RFC, например) описано, какие должны быть соотношения между A/MX/PTR/HELO для того, чтобы сервер считался корректно настроенным?
                        +1
                        Я бы предложил против такой подмены предупреждение в почтовом клиенте о том, что поля «From: » и «Reply-To:» не совпадают.
                        Либо на стороне почтового сервера при приеме модифицировать текст письма и вставлять эту информацию первой строкой.
                          0
                          Согласен. Я рассматривал вариант сравнения mail from и заголовка From, безусловно, можно доработать и также сравнивать с Reply-To.
                          0
                          А можно пояснить вот этот момент из пункта про DKIM:
                          Но что если данные MTA окажутся скомпрометированными, и злоумышленник также получит возможность отправлять поддельные письма через эти серверы? Как установить подлинность отправителя в этом случае? На помощь приходит аутентификация писем.
                          Сервер отправитель формирует отпечаток заголовков письма с помощью хэш-функции и подписывает его, используя закрытый ключ.

                          А Сервер-отправитель (то есть поле smtp server в настройке моего почтового клиента) и MTA это разве не одно и тоже лицо?
                            +1
                            Да, одно и то же. Но часто бывает так: у вас есть свой сервер отправитель, тот же MS Exchange, который прописан в настройках почтового клиента. Но у него в настройках прописано слать все письма во вне через провайдерские релеи или какие-либо другие внешние почтовые релеи (в send connector настройка smart host, если не ошибаюсь). А уже провайдерские релеи отправляют письма дальше в Интернет. И именно IP-адреса или A-записи провайдерских серверов фигурируют в SPF. Если эти провайдерские MTA оказываются скомпрометированными, злоумышленник также получает возможность слать через них поддельные письма, а SPF-проверка на стороне получателя будет проходить успешно.

                            В этом случае, если ваш exchange будет формировать DKIM-отпечаток до отправки писем на провайдерские релеи, получатель сможет отличить ваше письмо от письма злоумышленника.
                              0
                              Слать письма во вне через дополнительный хоп можно по разным причинам. Например, внешние релеи предоставляют услугу DLP.
                            0
                            А что делать, если From и Reply-To совпадают?
                            Например, сейчас на корпоративную почту идет спам от Сбербанка со ссылками на вредоносные файлы.
                            При этом:
                            From: ovchinnikov.s@sberbank.ru
                            Reply-To: ovchinnikov.s@sberbank.ru

                            Или
                            From: sitnikov.s@sberbank.ru
                            Reply-To: sitnikov.s@sberbank.ru

                            И другие вариации пользователей с доменом sberbank.ru. А также nalog.ru.
                            Блокировать весь домен? Но ведь в бухгалтерию нормальные письма от Сбербанка и налоговой должны доходить.
                              +1
                              SPF и DKIM не помогают?
                              Потом, никто не отменяет проверку тела письма. Это уже офтоп относительно материала статьи, но всё же… Например, у ESA есть возможность проверять ссылки в письме. URL проверяются по тем же базам, что и на web-proxy сервере WSA. Если URL ведёт на вредоносный сайт, можно карантинить такие письма, добавлять предупреждение в заголовок письма (если не ошибаюсь) или «портить»/вырезать URL из тела письма.
                                0
                                О, помню спам того времени с маской *.s@sberbank.ru, ещё нескольких банков и да, nalog.ru.
                                Искоренил не красиво, но эффективно, работая с *.s@ для всех затронутых доменов. У нормальных отправителей не встречалось такое именование.

                              Only users with full accounts can post comments. Log in, please.