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

CuTTer

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


(cutter@real.xakep.ru)

Используем недоработки SMTP протокола

Наверняка у тебя не раз появлялось желание отправить приятелю какое-нибудь гадостное письмо, но так, чтобы он не догадался о твоей причастности к этим проделкам. А может, тебя просто кто-то достал, и ты хочешь отомстить, отправив бесчисленное множество мусора во вражеский ящик. И опять же, мерзкий враг не должен знать, что это твоих рук дело. Что ж, это не проблема!

Не думай, что мы опять будем разбирать старые и замученные mail bomber'ы или почтовые веб-анонимайзеры. Нет, нет и еще раз нет! Это уже давно ушло в небытие, пользуется этим разве что сборище тупоголовой измороси. Ты ведь не причисляешь себя к этому многоумному сословию? Так что мы с тобой рассмотрим один забавный способ работы с SMTP протоколом, приводящий к неожиданным результатам. Поэтому активизируй свой мозг и читай дальше.

Протоколы, которыми мы пользуемся

Как обычно, перед практикой немного поговорим о занудной теории. Ведь как устроена работа почтовой системы во всем интернете? Существует 3 базовых протокола: POP3, IMAP и SMTP (на самом деле их, конечно, больше, но остальные для нас неважны).

POP3 и IMAP отвечают за прием входящей почты. У них есть свои различия, например, IMAP поддерживает наличие папок, куда может складываться почта, POP3 же вываливает все в одну кучу. Каждый из них требует аутентификации по логину/паролю для чеканья почты. Причем, авторизацию можно проводить без какой-либо шифровки (открытым текстом, т.е. кто-нибудь может поснифать твой трафик, а оттуда вытянуть пароль от ящика), а можно и при помощи MD5 APOP (RFC-1734) или MD5 CRAM-HMAC (RFC-2095).

При работе с этими двумя протоколами удивляться не приходится - все работает нормально, просто проверяешь свой ящик, который защищен паролем. Но все становится гораздо интереснее, когда ты окунаешься в работу SMTP протокола...

Недоработки SMTP

SMTP протокол, в общем-то, прост. Он отвечает за пересылку писем от всяких там пользователей к нужному адресату. Как это происходит. Например, есть SMTP-сервер smtp.music.ru, он обслуживает пользователя jungle в домене music.ru. Т.е. мы имеем юзера с мыльником jungle@music.ru. И этот долбаный фанат Jungle и Drum'n'Bass культуры хочет, чтобы на диске Хакера выкладывали побольше музыки от LTJ Bukem'а и Omni Trio. Что же он делает? Берет и отправляет письмо на avalanche@real.xakep.ru с предложением выложить на компакт-диск этих музыкантов. Для пользователя jungle@music.ru вся эта процедура сложилась из открытия почтового клиента The Bat, создания письма и последующей отправки. А вот что было на самом деле. Когда он нажал на кнопку отправить, произошли следующие события:

1) Клиент соединился с SMTP-сервером smtp.music.ru. Возможно, была проведена SMTP-аутентификация, это уже зависит от конкретных настроек сервера. Далее пользователь передал письмо серверу, получил в ответ, что все ок. Отсоединился.

2) Теперь в работу вступил сервер smtp.music.ru. Из письма он получил конечный пункт назначения - avalanche@real.xakep.ru. Вот что происходит потом. SMTP-сервер делает DNS-запрос по домену real.xakep.ru. Из него он вытягивает MX запись. В ней содержится адрес другого SMTP-сервера, отвечающего за домен real.xakep.ru - smtp.gameland.ru. Он соединяется с smtp.gameland.ru и передает ему письмо пользователя, добавив в него служебную информацию об IP'шниках.

Содержание  Вперед на стр. 054-074-2