Почтовые шалости

CuTTer

Xakep, номер #054, стр. 054-074-2


3) Это письмо получает SMTP-сервер smtp.gameland.ru. Он смотрит свою таблицу маршрутизации и видит, что avalanche@real.xakep.ru - его ящик. Поэтому smtp.gameland.ru принимает письмо и кладет его в базу. Теперь пользователь avalanche может забрать новую почту по POP3 протоколу.

Как видишь, схема работы SMTP протокола проста. Ты отправляешь письмо своему SMTP-серверу, а дальше все заботы об отправке он берет на себя. Сама цепочка, по которой проходит письмо, может состоять из одного сервера, а может и из десятка. Все зависит от настроек сервера, а именно от таблицы маршрутизации. Например, если ты пошлешь письмо с почтового ящика vasya@comtv.ru на anya@comtv.ru, то цепочка SMTP-серверов будет состоять всего из одного сервера. Но в случае, когда письмо будет предназначено для anya@mail.ru, количество SMTP-серверов, участвующих в пересылке письма, заметно возрастет.

Идея обмана

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

Мы же, наоборот, эту цепочку будем корректировать, а попросту говоря, возьмем да и запишем в нее всякий мусор. Так что конечному адресату, если ему вдруг захочется заглянуть в заголовки письма, останется только ужасаться, почему же это письмо идет по цепочке: gryaznhaya.shlyuha.ru (1.1.1.1), moya.volosotaya.grud.ru (10.0.0.10), zlya.golubaya.mraz.ru (217.10.10.43). При виде такого приходишь к выводу - письмо шло тернистым путем.

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

Кодинг

Как принято, всю эту бойду я реализовал на перле :). Основная часть кода состоит из обычного редиректа пакетов при TCP соединении. Если тебе интересно в этом разобраться, возьми старый номер ][ 05.01 и открой статью "Дело - труба! Datapipe roxx" или почитай на нашем сайте по адресу http://www.xakep.ru/magazine/xa/029/068/1.asp.

В общем, я взял и переделал файл datapipe.pl. Добавил к нему следующий код:

Код, отвечающий за переделку письма

$localport=25; # SMTP

$host="comtv.ru"; # SMTP server

$port=25; # port of SMTP server

$name="astral.ru"; # name in HELO/EHLO

Назад на стр. 054-074-1  Содержание  Вперед на стр. 054-074-3