Выбрать главу

Ниже будет показано, каким образом злоумышленники находят и используют чужие сервера исходящей почты. Один из способов поиска общедоступных SMTP-серверов заключается в анализе заголовков приходящей корреспонденции. Среди узлов, оставивших свои адреса в поле “Received”, порой встречаются сервера, которые не требуют аутентификации пользователя для отправки писем.

Например, ниже показан заголовок письма, вытащенного автором этой книги из его собственного почтового ящика:

· From irt@chiti.uch.net Wed Mar 22 16:57:03 2000

· Received: from gate.chiti.uch.net ([212.40.40.141])

· by msk2.mail.ru with esmtp (Exim 3.02 #116)

· id 12Xld1-0008jx-00

· for kpnc@aport.ru; Wed, 22 Mar 2000 16:56:59 +0300

· Received: from 13.chiti.uch.net ([192.168.223.13])

· by gate.chiti.uch.net (8.8.8/8.8.8) with SMTP id PAA29678

· for «kpnc@aport.ru»; Wed, 22 Mar 2000 15:51:47 +0200 (EET)

· From: "irt" «irt@chiti.uch.net»

Анализ заголовка позволяет установить, что письмо было отправлено с адреса 13.chiti.uch.net через сервер исходящей почты gate.chiti.uch.net. Если попробовать установить с ним соединение, то результат может выглядеть так:

· 220 gate.chiti.uch.net ESMTP Sendmail 8.8.8/8.8.8; Sun, 26 Mar 2000 16:21:53 +0300 (EEST)

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

· 220 gate.chiti.uch.net ESMTP Sendmail 8.8.8/8.8.8; Sun, 26 Mar 2000 16:21:53 +0300 (EEST) · HELO kpnc.krintel.ru · 250 gate.chiti.uch.net Hello kpnc.krintel.ru [195.161.41.239], pleased to meet you · MAIL FROM:«kpnc@id.ru» · 250 «kpnc@id.ru»… Sender ok · RCPT TO:«kpnc@aport.ru» · 250 «kpnc@aport.ru»… Recipient ok

Код успешного завершения операции (250) и срока «Recipient ok» свидетельствуют о том, что сервер согласился на пересылку. Остается ввести текст послания и можно отправлять письмо. Спустя какое-то время (обычно не превышающее одной минуты) сообщение должно прийти по назначению. А его заголовок может выглядеть, например, так:

· From kpnc@id.ru Sun Mar 26 17:28:33 2000 · Received: from gate.chiti.uch.net ([212.40.40.141]) · by camel.mail.ru with esmtp (Exim 3.02 #107) · id 12ZD5a-000Dhm-00 · for kpnc@aport.ru; Sun, 26 Mar 2000 17:28:30 +0400 · Received: from kpnc.krintel.ru (kpnc.krintel.ru [195.161.41.239]) · by gate.chiti.uch.net (8.8.8/8.8.8) with SMTP id QAA02468 · for «kpnc@aport.ru»; Sun, 26 Mar 2000 16:22:44 +0300 (EEST) · (envelope-from kpnc@id.ru) · Date: Sun, 26 Mar 2000 16:22:44 +0300 (EEST) · From: kpnc@id.ru · Message-Id: «200003261322.QAA02468@gate.chiti.uch.net»

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

Один из анонимных серверов расположен (точнее, был когда-то расположен на момент написания этой главы) по адресу dore.on.ru. Однако его использование посторонними лицами запрещено, что и демонстрирует следующий эксперимент:

· 220 WITHELD FTGate server ready -Fox Mulder · HELO kpnc.krintel.ru · 250 Ready · MAIL FROM:«konc@aport.ru» · 250 «konc@aport.ru» Sender Ok · RCPT TO:«kpnc@aport.ru» · 550 Relaying denied for «kpnc@aport.ru»

Сервер, действительно, не делает никаких видимых попыток определить адрес клиента, но в то же время пересылать его корреспонденцию за пределы сервера наотрез отказывается. Причем достоверно известно, что владельцы этого сервера используют его для рассылки сообщений по нелокальным адресам. Отсюда вытекает существование механизма, позволяющего отличить «своих» от «чужих». Права «чужих» ограничиваются доставкой писем по локальным адресам, а «своим» разрешается отправлять сообщения и за пределы сервера. Ввиду отсутствия в протоколе SMTP средств аутентификации пользователей, отличить одних от других помогает IP адрес клиента. Локальные пользователи, находящиеся в одной подсети с сервером, считаются «своими», и наоборот [195].

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

Клиент дважды указывает свой адрес: приветствуя сервер, командой “HELO” он сообщает свой домен, а в поле “MAIL FROM” приводит собственный обратный адрес. Некоторые сервера проверяют одно из этих значений, а некоторые оба одновременно.

В эксперименте, приведенном ниже, отправитель сообщает не свой собственный домен, а домен владельца сервера, и в качестве обратного адреса, использует один из адресов локальных пользователей сервера (чтобы его узнать, необходимо получить с этого сервера хотя бы одно письмо, или попробовать выяснить имена зарегистрированных пользователей методом перебора):

· 220 WITHELD FTGate server ready -Fox Mulder

· HELO dore.on.ru

· 250 Ready

· MAIL FROM:«fox@dore.on.ru»

· 250 «fox@dore.on.ru» Sender Ok

· RCPT TO:«kpnc@aport.ru»

· 250 Recipient Ok

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

Для массовой рассылки лучшего способа и придумать невозможно, но вот для обычной переписки такая методика не подходит. Ведь ответ на письмо возвратится по адресу fox@dore.on.ru! Этого можно избежать, если добавить в заголовок поле “Reply-To”, содержащее истинный адрес отправителя (тот, который он захотел оставить сам). Это может выглядеть, например, таким образом:

· 220 WITHELD FTGate server ready -Fox Mulder

· HELO dore.on.ru

· 250 Ready

· MAIL FROM:«fox@dore.on.ru»

· 250 «fox@dore.on.ru» Sender Ok

· RCPT TO:«kpnc@id.ru»

· 250 Recipient Ok

· data

· 354 Start mail input; end with «CRLF».«CRLF»

· Subject:TEST

· Reply-To:«kpnc@hotmail.com»

·

· Hello!

·.

· 250 Ok Message queued

· quit

· 221 dore.on.ru Service closing transmission channel

Заголовок такого письма должен выглядеть приблизительно так:

· Received: from relay1.aha.ru ([195.2.83.105] verified)

· by aha.ru (CommuniGate Pro SMTP 3.1b2)

· with ESMTP id 3882573 for kpnc@id.ru; Mon, 05 Jul 1999 20:01:40 +0400

· Received: from warlock.miem.edu.ru (miem-as.ins.ru [195.19.18.226])

· by relay1.aha.ru (8.9.3/8.9.3/aha-r/0.04B) with ESMTP id UAA07173

· for «kpnc@id.ru»; Mon, 5 Jul 1999 20:01:40 +0400 (MSD)

· Received: from dore.miem.edu.ru (rtuis.miem.edu.ru [194.226.32.50])

· by warlock.miem.edu.ru (8.9.3/8.9.3) with ESMTP id UAA00637

· for «kpnc@id.ru»; Mon, 5 Jul 1999 20:00:42 +0400 (MSD)

· Received: from fox by dore.on.ru (FTGate 2, 1, 2, 1);

· Mon, 05 Jul 99 20:02:30 +0400