Table of Contents
Электронная почта появилась так давно, что в сознании закрепилась как неотрывная часть интернета. Появление других способов общения — мессенджеров, социальных сетей — не сильно снизило востребованность старой доброй собачки @. Но задумывались ли вы, что электронная почта — далеко не такой надёжный способ общения, каким кажется? Ведь подделать отправителя — дело довольно простое, об этом регулярно, раз в пару лет, выходят статьи и инструкции.
1 Отправителя письма можно подделать
Вот эти две свежие статьи на Geektimes сподвигнули меня высказаться о наболевшей проблеме. С неё сталкивался и я, когда настраивал VPS с почтовым сервером Exim:
- Проблемы безопасности почты Mail.ru: https://habr.com/ru/articles/357408/
- Проблемы безопасности Яндекс.Почты (а еще ПДД и Коннект): https://habr.com/ru/articles/357410/
Автор первой статьи истерично реагирует на обнаруженную «особенность» отправки писем и демонстрирует незнание почтовых протоколов, вторая содержит больше технических подробностей и даёт пищу для размышлений. Вдогонку ранняя статья:
- Подделываем письма от крупнейших российских банков: https://habr.com/ru/articles/326382/
Суть в том, что можно подделать отправителя имейла и получивший письмо может ничего не заподозрить. В поле «от:» письма можно вписать что угодно, как и в случае с настоящей почтой. Прокатывает только при некоторых условиях, но их достаточно, чтобы получить, например, письмо от известного зелёного банка с просьбой ввести свои данные на постороннем сайте.
Почему же нельзя проверять подлинность отправителя до того, как письмо увидит пользователь? Вот комментарий с Хабра, проливающий свет на проблему:
… Защита от подделки писем должна происходить с двух сторон: владельца сервиса и получателя письма (в большинстве случаев это почтовый провайдер, например Mail.ru).
К сожалению, владельцы сервисов не очень хотят защищать пользователей от отправки поддельных писем от имени этого сервиса, что и описывалось в статье по ссылке.
Отдельная проблема — почтовые сервисы. Они должны проверять письма на подделку, но не всегда это делают (по разным причинам) или делают неправильно. Например, есть забавная уязвимость в Yahoo, которая позволяет обойти проверку DMARC и SPF и подделать письмо от абсолютно правильно настроенного сервиса. …
Из обсуждения ( https://habr.com/ru/articles/357408/comments/ ) становится ясен масштаб беды. Дело неприятное и парадоксальное. Либо почтовые службы начнут проверять подлинность писем и отбрасывать с поддельным полем «от», но тогда перестанут приходить всякие рассылки и оповещения с некорректно настроенных серверов, либо начнут пропускать письма с несоответствиями в заголовках и обрабатывать их различными антиспам-фильтрами в надежде, что в ящик пользователю попадёт только «правильная» корреспонденция.
Знающие люди могут поправить меня: получатель всегда может посмотреть исходник письма, по ним подлинность определяется на раз-два.
Вот только когда вы последний раз смотрели на хедеры письма? В веб-интерфейсах почты это сделать можно, но нужно понимать, что это вообще такое и зачем нужно. В школе на уроках информатики об этом не расскажут, в ВУЗах на не программно-инженерных специальностях — тоже. Так с чего бы среднеокруглённому сотруднику офиса знать, как проверять имейлы на подлинность отправителя?
2 Проверяем подлинность сами
Так как почтовые серверы никто настраивать не хочет, придётся научиться самим проверять подлинность особо важных писем. Расскажу, как это делать в трёх популярных почтовых сервисах. Способ не гарантирует 100% точность, зато относительно прост.
Для начала откройте само письмо, в подлинности отправителя которого вы не уверены. Затем нужно открыть исходный текст письма.
Почта от Гугла GMail: меню письма — «Показать оригинал».
Yandex: кнопка меню с тремя точками — «Свойства письма».
Mail.ru: кнопка меню справа от заголовка письма — пункт «Служебные заголовки».
Откроется простыня (ПРОСТЫНИЩЕ!) текста, в котором нужно найти три строчки (можно поиском по странице, нажав Ctrl+F, они будут в начале текста):
- From: «Имя» <адрес@ящика> (то, что видно в поле «От:», когда мы открываем письма).
- Return-Path: <адрес@ящика> (скорее всего настоящий адрес отправителя).
- Reply-To: <адрес@ящика> (это адрес, который подставится в поле «Кому:» при ответе на письмо, поле не всегда имеется).
Если адреса первых двух полей совпадают, скорее всего, письмо не подделка.
Третий служебный заголовок письма «Reply-To» вставляется не всегда. Мошенниками он применяется для более хитрой схемы. Допустим, приходит такое письмо начальника подчинённому:
От: [email protected] Тема: напомни пароль от онлайн-банка Сообщение: Оставил блокнот в офисе, напомни пароль от личного кабинета банка.
Чтобы ответ одураченного сотрудника ушёл не к настоящему боссу на [email protected], а на поддельный [email protected], пригодится поле «Reply-To». Нажав на «Ответить», в окне ответа подставится адрес, для усыпления бдительности похожий на настоящий.
Это, конечно, очень примитивный пример и теоретически можно другими способами подделать имейлы. Сличая пару служебных заголовков можно защититься от самых распространённых методов, если нужно больше знаний — читайте стандарт RFC 5321 — Протокол SMTP.
3 Когда всё починят?
Боюсь, не в ближайшее время. Парочка статей, вышедших на популярном ресурсе, да моя скромная заметка — капля в информационное море. Как ни парадоксально, но Яндекс, Майл.ру и прочие сервисы не могут просто так взять и включить строгую проверку отправителя письма, потому что тогда перестанут приниматься письма с некорректно настроенных серверов.
Хотя есть один простой способ и принять, и пометить подозрительные письма — просто в начало темы ставить метку [UNTRUSTED] или [ОТПРАВИТЕЛЬ НЕ ПОДТВЕРЖДЁН]. Письмо пришло? Да! Почему пометка появилась? Да потому то отправляющие письма сервера не работают по стандартам. Неважно, открыто ли письмо в веб-интерфейсе почты или в Outlook/The Bat/прочей программе, пометка о не удостоверенном отправителе будет видна. Вот почему этого не сделали давно — мне сие не ведомо.