Однако мало кто обращает внимание на заголовки сообщений. Некоторые из них пользователи видят при чтении электронной почты постоянно, это строки, начинающихся с To:, From: и Subject:. Однако заголовки содержат не только дружественные подсказки почтовой программы, но и другую, весьма содержательную информацию. Из заголовков можно узнать название и номер версии вашего почтового клиента, а также тип операционной системы, наименование и номер версии почтового сервера, внутренние IP-адреса и тип используемого в вашей организации брандмауэра (если он используется).

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

СТАНДАРТЫ

Заголовки электронной почты, как и все компоненты Internet, должны соответствовать стандартам, в данном случае — стандарту RFC 822. Отдельный стандарт, RFC 821, определяет формат «конверта» и описывает протоколы передачи почтовых сообщений, но это не относится к теме данной статьи. Спецификация RFC 822 была предложена для замены более раннего стандарта (RFC 733), с целью обеспечения передачи сообщений электронной почты между различными сетями. Обсуждаемые в данной статье заголовки необходимы для пересылки любого почтового сообщения через Internet или же между двумя внутренними серверами электронной почты, если они используют для этого стандартные протоколы TCP/IP. Эти понятия пояснены на Рисунке 1.

Рисунок 1. Данный заголовок почтового сообщения от вымышленного отправителя из организации l0pht говорит нам о следующем: на границе сети установлен брандмауэр, а внутри сети используются адреса Internet стандарта RFC 1918. Кроме того, отправитель Джолли воспользовался почтовой программой Claris Emailer 2.0 версии 3 для пересылки данного почтового сообщения на защищенный брандмауэром почтовый сервер l0pht с программным обеспечением Postfix. В заголовке можно также прочитать версию моего собственного почтового сервера (sendmail 8.9.3), выполняемого на системе с именем «bear».

Возможно, ваша почтовая программа позволяет просматривать заголовки сообщений. Например, в случае Outlook, выбрав в меню View подменю Show Fields, вы увидите диалоговое окно с наименованиями некоторых из возможных полей, которые могут появляться в почтовых сообщениях.

Каждый заголовок начинается с наименования поля, за которым всегда следует двоеточие и пробел, например To: или Received:. Длинные строки заголовков «свернуты», или представлены несколькими строками, причем каждая дополнительная строка начинается как минимум с одного пробела. На Рисунке 1 первым полем заголовка является Received:, которое в действительности распространяется на три строки, за ним следует другое трехстрочное поле Received:.

Некоторые из названий полей, такие, как Date:, To:, Subject: и From:, сами говорят о своем назначении. Например, после имени поля From: расположен обратный адрес, а после To: — адрес получателя. Протокол SMTP (RFC 821) не требует, чтобы помещенный в поле From: адрес точно представлял отправителя. SMTP не располагает реальными средствами проверки того, что отправитель использует свой собственный адрес, хотя большинство почтовых серверов проверяет, как минимум, факт существования домена отправителя. Отсутствие контроля облегчает фальсификацию адресов отправителей сообщений, характерную, в частности, для спама.

ПОЛУЧАТЕЛИ

С точки зрения получения реальной информации об отправителе почтового сообщения заголовки Received: представляют существенно больший интерес, чем заголовки From:, которые легко фальсифицируются. Вообще говоря, любая строка заголовка может быть в какой-то мере подделана, так как заголовки представляют собой лишь текстовые данные, и только те из них, которые формируются вызывающими доверие серверами, могут считаться достоверными. Заголовки Received: добавляются каждым почтовым сервером, ретранслирующим данное сообщение, причем самый последний в цепочке почтовый сервер находится на первой позиции, а первый сервер, ретранслировавший сообщение, — на последней. На Рисунке 1 первый заголовок Received: показывает, что сервер bear.spirit.com получил сообщение для адресата rik@spirit.com от узла 0nus.l0pht.com.

Первый заголовок предоставляет и другую интересную информацию. Данные в скобках, например (0nus.l0pht. com [199.201.145.3]), воспринимаются в качестве комментариев совместимыми почтовыми серверами. В данном случае программа sendmail на узле bear.spirit. com проверила, что система отправителя на самом деле имеет имя 0nus.l0pht.com и IP-адрес 199.201.145.3. Просмотр параметров соединения TCP/IP дал sendmail возможность определить IP-адрес, а затем поиск в системе DNS позволил узнать доменное имя сервера.

Второй заголовок Received: более интересен. Заметьте, что сообщение получено от [172.16.1.75], т. е. указан абсолютный IP-адрес системы 0nus, причем он одновременно показан как 199.201.145.3. В соответствии со стандартом RFC 1918 адреса IP, начинающиеся с 172.16, зарезервированы для частных сетей, поэтому они не предназначены для передачи через Internet и могут повторяться. В нашем примере заголовок Received: говорит о том, что 0nus функционирует в качестве брандмауэра домена l0pht (или его части) и осуществляет преобразование сетевых адресов (Network Address Translation, NAT). Вместе с тем, этот заголовок Received: информирует о том, что в домене 0nus работает Postfix — новый почтовый сервер, который компания Wietse Venema разработала для обеспечения максимально возможного уровня безопасности.

В примере на Рисунке 1 сообщение содержит только два заголовка Received:. Иногда их бывает намного больше, и эти заголовки могут показать другие внутренние сетевые адреса и имена почтовых серверов, а также внутренние имена серверов. Важность строк Received: проявляется также в том, что они позволяют выявить случаи зацикливания, когда один почтовый сервер пересылает сообщение другому, а тот в свою очередь снова отправляет его обратно, создавая цикл. С другой стороны, строки поля Received: содержат также множество данных, которые могут заинтересовать внешнего злоумышленника.

К настоящему моменту по информации заголовков Received: мы определили два почтовых сервера: sendmail и Postfix. Другие почтовые серверы Unix, а также Microsoft Exchange и Lotus Notes тоже оставляют свои отметки в заголовках Received:.

С определенной долей вероятности 0nus.l0pht.com представляет собой брандмауэр домена l0pht. В некоторых случаях можно не только догадываться, но и точно определить факт присутствия брандмауэра. Иногда он будет называться «firewall», «eagle», «fw1» или каким-либо другим легко распознаваемым именем, что найдет отражение в заголовках Received:. Некоторые брандмауэры, например компании Interlock, явно заявляют о своем присутствии, добавляя комментарий к строке Received:. Брандмауэр другого производителя помещает в это поле гораздо менее информативную строку, указывая, что «частная информация была удалена». Тем не менее, так как только этот производитель использует данный специфический комментарий, присутствие его брандмауэра становится почти таким же очевидным, как и брандмауэра Interlock.

ИСЧЕЗАЮЩИЕ ЗАГОЛОВКИ

Заголовки Received: предназначены для анализа проблем доставки электронной почты. Удаление этих заголовков не считается в Сети признаком хорошего тона, но некоторыми брандмауэрами они все же удаляются по желанию администратора. Я считаю удаление таких заголовков в сообщениях, покидающих вашу организацию, обоснованным действием: если вы несете ответственность за проблемы с электронной почтой в пределах вашей организации, то у вас вряд ли появится желание предоставить посторонним лицам возможность анализировать структуру вашей почтовой системы (и сети). Пока еще не все брандмауэры позволяют это сделать. (Как правило, только межсетевые экраны со шлюзами приложений настолько «умны», чтобы корректно осуществлять подобные операции.)

Спецификация RFC 822 требует наличия в сообщении заголовков Received:, поэтому их удаление может расцениваться как противоречие стандарту Internet. В частной переписке по электронной почте с персоналом поддержки Web-узла sendmail.org консультант порекомендовал такой метод избирательного удаления заголовков Received: — модификацию sendmail и создание файла конфигурации, где содержатся удаляемые адреса серверов. В то же время служба поддержки sendmail признала подобную модификацию противоречащей духу стандарта RFC и порекомендовала скрывать частные данные в заголовках посредством их замены на хэшированные записи.

ЭТО ЕЩЕ НЕ ВСЕ

Некоторые из известных атак оказались возможны благодаря использованию ошибок синтаксического разбора заголовков. Совсем недавно Microsoft выпустила «заплатку» для модуля inetcomm.dll, к которому программы Outlook и Outlook Express обращаются для анализа, помимо прочего, заголовок Date:. При переполнении поля Date: в этих почтовых программах наблюдались сбои или даже выполнение произвольного кода (если переданные данные использовали переполнение буфера).

Как можно узнать, с какой программой работает данный пользователь: Outlook, Outlook Express или какой-либо другой? Посмотрите на заголовок x-mailer:. В случае, изображенном на Рисунке 1, отправитель Джолли пользовался почтовым клиентом Claris Emailer, что говорит также о том, что он работает на компьютере Macintosh (пакет прикладных программ Claris доступен только для Macintosh).

Почта Internet, как и большая часть его элементов, не разрабатывалась для отражения внутренних атак. Многие годы Internet был средством общения энтузиастов, объединяя компьютеры на основе общих протоколов, определенных стандартами RFC. Безопасность же и исходная цель Internet — обеспечение межсоединения — находятся в противоречии друг с другом.

Средства шифрования и цифровой подписи для электронной почты, такие, как, например, PGP (Pretty Good Privacy), не решают проблемы, так как они только обеспечивают конфиденциальность почтовых сообщений и аутентифицируют отправителя. Для предотвращения злоупотреблений, с которыми мы сталкиваемся сегодня, стандарты почтовых сообщений должны быть изменены радикально. Но уже сейчас заголовки исходящей электронной корреспонденции вашей организации можно фильтровать, удаляя из них внутреннюю информацию, которой может воспользоваться внешний злоумышленник.

Рик Фэрроу — независимый консультант по вопросам безопасности. С ним можно связаться по адресу: rik@spirit.com.


Ресурсы Internet

Стандарт Internet на заголовки почтовых сообщений опубликован по адресу: http://www.faqs.org/rfcs/rfc822.html.

Почтовый сервер Postfix компании Wietse Venema расположен на странице http://www.porcupine.org/postfixmirror/start.html.

Рекомендации Microsoft относительно ошибок в модуле inetcomm.dll для разбора ряда заголовков почтового сообщения можно найти по адресу: http://www.microsoft.com/technet/security/bulletin/ms00-043.asp.

На странице http://samspade.org/ssw/ Сэм Спейд описывает подход к анализу заголовков почтовых сообщений для борьбы с фальсификацией электронной корреспонденции.

Кэрол Феннелли опубликовала статью о конфигурировании sendmail для использования на брандмауэре. См. http://www.sunworld.com/sunworldonline/swol-01999/swol-06-security_p.html.

Система предотвращения противоправной рассылки сообщений электронной почты для борьбы со спамом находится на узле Web по адресу: http://mail-abuse.org.

Полезные советы по использованию sendmail для маскировки (перезапись заголовков сообщений так, чтобы все они содержали адрес домена, а не адреса внутренних систем вашего домена) можно найти по адресу: http://www.connactivity.com/~esj/sendmail/masquerade.html.