Крис Касперский - ТЕХНИКА СЕТЕВЫХ АТАК
Если теперь в правом окне начать вводить шестнадцатеричные значения символов, в левом окне станет появляться исходный текст письма (смотри рисунок 006):
Рисунок 006 Декодирование сообщения, переданного в формате MIME
Детальное описание формата MIME выходит за пределы данной книги, но может быть найдено в техническом руководстве RFC-1341.
Врезка «для начинающих» *
Что такое RFC (Request For Comments)? В силу открытости архитектуры сети Internet и необходимости поддерживать общие соглашения между независимыми разработчиками появился набор стандартов и соглашений, доступный для массового использования.
Любой разработчик имеет право внести свое предложение. Оно будет подвергнуто тщательной экспертной оценке и, если не встретит никаких возражений, будет добавлено в RFC.
За каждым соглашением закреплен определенный номер, так, например, POP3 протокол описывается в RFC-1081, RFC-1082, RFC-1225, RFC-1725, RFC-1939.
Для удаления сообщений из почтового ящика предусмотрена команда “DELE”, которая принимает в качестве аргумента порядковый номер уничтожаемого сообщения. Один из примеров ее использования продемонстрирован ниже:
· +OK QPOP (version 2.52) at mail.computerra.ru starting.
· LIST
· +OK 4 messages (789046 octets)
· 1 4363
· 2 6078
· 3 4933
· 4 4644
·.
· DELE 1
· +OK message 1 deleted
· LIST
· +OK 3 messages (16655 octets)
· 2 6078
· 3 4933
· 4 4644
·.
Внимание: непосредственно после операции удаления перенумерации сообщений не происходит! Т.е. уничтоженное сообщение просто «выпадает» из списка, а следующие за ним сообщение не занимает этот индекс, и не сдвигается вверх. Сообщения будут перенумерованы только при следующем сеансе работы с сервером.
Сеанс завершает команда “QUIT”. Сервер переходит в состояние обновления транзакции (transaction update) и разрывает соединение. Выглядеть это может следующим образом:
· +OK QPOP (version 2.52) at mail.computerra.ru starting.
· QUIT
· +OK POP3 server at mail.ru signing off
Если до обновления транзакции произойдет обрыв соединения, сервер выполнит откат транзакции, т.е. приведет почтовый ящик в тот вид, каким он был до начала последнего сеанса связи и все удаленные сообщения окажутся восстановленными (вернее, правильнее было бы сказать, не удаленными, поскольку команда “DELE” физически не уничтожает письма, а лишь помечает их для удаления, которое происходит в процессе обновления транзакции; если же связь оборвется, и обновление транзакции не будет выполнено, - все сообщения так и остаются не удаленными).
Ниже будут рассмотрены некоторые дополнительные возможности протокола POP3. Для проведения описанных экспериментов потребуется подключиться к серверу, поддерживающему такие расширения. Одним из подходящих серверов является бесплатная служба электронной почты mail.ru.
Подключение к серверу mail.ru
После успешного установления TCP-соединения, сервер mail.ru возвращает приглашение, содержащее уникальный идентификатор (на рисунке 004 он обведен вокруг пером):
Приглашение сервера mail.ru
Выше уже отмечалась незащищенность пароля, открытым текстом передаваемого по сети. Если злоумышленник перехватит информационный поток, он сможет восстановить оригинальный пароль и вплоть до его смены несанкционированно проникать в систему. Для аутентификации, осуществляемой по нестойким к подслушиванию каналам связи, были разработаны специальные алгоритмы, которые обеспечивают однонаправленное шифрование и постоянную смену паролей.
Один из таких алгоритмов, именуемый «запрос-отклик», работает следующим образом: сервер посылает клиенту случайную последовательность условно именуемую меткой. Клиент зашифровывает ее, используя в качестве ключа свой пароль, и полученный результат отправляет серверу. При этом алгоритм шифрования специальным образом подобран так, чтобы, зная зашифрованный пароль и метку, было бы невозможно найти ключ шифрования иначе, чем прямым перебором. Затем сервер самостоятельно шифрует метку хранящимся у него паролем пользователя и сравнивает полученные результаты. Если они идентичны, следовательно, пользователь ввел правильный пароль и наоборот. Подробнее о схеме «запрос-отклик» рассказывается в главе «Атака на Windows NT» и здесь, во избежание повторения, никакие математические выкладки приводиться не будут.
Уникальная последовательность, передаваемая клиенту при каждом соединении с сервером, называется временной меткой. Стандарт не оговаривает формат представления метки, но обычно она имеет следующий вид: proces [email protected], где processID - идентификатор процесса, clock - состояние таймера сервера на момент установления соединения, а hostname - имя узла. Один из примеров временной метки показан ниже (в тексте он выделен жирным шрифтом):
· +OK mPOP POP3 server ready [email protected]
Пользователь шифрует временную метку своим паролем по алгоритму MD 5, и полученный результат (который именуется зашифрованным паролем, или, технически более грамотно, “digest”) передает на сервер.
Следующий эксперимент позволяет убедиться, что временные метки действительно различны при каждом новом соединении:
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
· +OK mPOP POP3 server ready « [email protected]»
Для передачи серверу имени пользователя и зашифрованного пароля предусмотрена команда “APOP”. По стандарту она не входит в перечень команд, обязательных для реализации, поэтому существуют сервера, которые принимают только открытый пароль. Признаком того, что сервер поддерживает команду “APOP” служит наличие временной метки в строке приглашения.
Пример использования команды APOP приведен ниже:
· +OK mPOP POP3 server ready [email protected]
· APOP ORION d373e6c3a7c6d9c5a2d6c2a1
· +OK ORION's maildrop has 1 messages (789046 octets)
В приведенном примере в почтовом ящике лежит письмо значительных размеров, поэтому, возникает потребовать в предварительном просмотре фрагмента письма без его загрузки целиком (быть может, нет никакого смысла получать это сообщение и его можно безболезненно удалить). Для этой цели предусмотрена команда “TOP msg n”, которая выводит n первых строк, сообщения с порядковым номером msg.
Например, “TOP 1 10” возвращает десять первых строк от начала первого письма. Это может выглядеть так:
· +OK mPOP POP3 server ready [email protected]
· TOP 1 10
· +OK
· Return-Path: [email protected]
· Received: from citycat.ru by mail.ru for mail.ru, au.ru, aport.ru,
· inbox.ru, land.ru with CCQDP. For more info [email protected]
· Message-Id:«200 [email protected]»
· Precedence: special-delivery
· Comments: Subscribe.Ru/Citycat E-mail Service. http://subscribe.ru
· Date: Mon, 6 Mar 2000 00:22:47 +0300 (MSK)
· From: CityCat « [email protected]»
· To: "funny.anet.anec" « [email protected]»
· Subject: =?koi8-r?Q?=E1=CE=C5=CB=C4=CF=D4=20=C4=CE=D1=20=CE=C1=20?=
· =?koi8-r?Q?=C1=CE=C5=CB=C4=CF=D4=CF=D7.net?=
· MIME-Version: 1.0
· Content-Type: text/html; charset=koi8-r
· Content-Transfer-Encoding: 8bit
·
·
· «!-
· -*-
· -»
· «HTML» «HEAD»
· «TITLE»уМХЦВБ тБУУЩМПЛ зПТПДУЛПЗП лПФБ«/TITLE»
· «/HEAD»
· «BODY BGCOLOR="#FFFFFF" LINK="#0A0AD0" VLINK="#AAAAFF"»
· «CENTER»
· «B»«FONT SIZE=+1»
·
·.
Для отката транзакции (и восстановления всех удаленных в течение последнего сеанса сообщений) можно воспользоваться командой “RSET”, вызываемой без аргументов. Но не существует команды, способной восстановить одно, конкретно, взятое сообщение.
Пара команд “STAT” и “NOOP служат для проверки состояния ящика и целостности соединения. Обе вызываются без аргументов. Пример их использования приведен ниже:
· +OK mPOP POP3 server ready [email protected]
· NOOP
· +OK
· STAT
· +OK 196 2097988
Первое число, выдаваемое командой “STAT” сообщает количество сообщений, хранящихся в почтовом ящике, а второе содержит их суммарный объем в октетах.
За подробным описанием протокола POP3 и смежных с ним вопросов можно обратиться к RFC-1081, RFC-1082, RFC-1225, RFC-1725, RFC-1939 и другим техническим руководствам.
Протокол SMTP
O В этой главе:
O Основные команды протокола
O Серверы-ретрансляторы
O Непосредственная пересылка
O Автоматизация почтовой рассылки и спам
O Анонимная рассылка писем
Для доставки почты в большинстве случаев используется протокол SMTP (Simple Mail Transfer Protocol).
При его создании протокола SMTP разработчиками была допущена грубая ошибка, испортившая немало крови, как системным администраторам, так и простым пользователям. Суть ее заключается в том, что протокол SMTP не требует аутентификации пользователя перед отправкой сообщения, и это позволяет использовать чужие сервера для массовой рассылки.