Введение
Опуская этическую и социальную проблематику, связанную со спамом, мы в данной статье сосредоточимся на способах его доставки, методах обнаружения и подавления. Затем мы обсудим ошибки, часто возникающие при описании этих методов и их возможностей. В заключительной части статьи будет рассказано о «супершингле Яндекса» — несложном техническом методе детектирования массовых рассылок, используемом в Яндекс.Почте.
Часть 1. Доставка спама. Эволюция
Чтобы спам попал в ваш ящик, его необходимо вам доставить. Поскольку мы не встречали внятной классификации спама по способу доставки (а остальные классификации сводятся к простой дихотомии: спам модифицирующий, и спам, не модифицирующий текст заказчика), постараемся вкратце описать их здесь. Возможно, этот текст покажется излишне подробным, однако, нам кажется интересным проследить, как разработчики спамерского ПО откликались на вызов, брошенный им антиспамом, и vice versa.
Спам молод. Как средство активного маркетинга он возник примерно в 1997 году. О дате его возникновения можно судить по моменту, когда Paul Vixie создал RBL. RBL — исторически первая серьезная попытка борьбы со спамом. См. http://www.wikipedia.org/wiki/DNSBL.
Эволюция технических видов спама на 100 процентов обусловлена эволюцией антиспамовых средств. Причем история тут развивается стремительно, по нарастающей. За последние два года в ней, по-видимому, произошло больше событий, чем за все предшествующие.
Прямые рассылки и открытые релеи
Первые виды спама были просто прямыми рассылками. Такой спам блокируется достаточно просто, и спамеры начали использовать открытые почтовые релеи, то есть обычные почтовые сервера, позволяющие произвольному пользователю воспользоваться сервисом отправки письма на другой сервер. Заметим, что иных релеев в ту пору просто не было, а само понятие «открытые релеи» возникло лишь после того, как появился спам, и их вообще начали закрывать. Такие открытые релеи достаточно легко детектировать, их стали активно искать и блокировать. После этого у прямых рассылок наступил ренессанс — спам стал рассылаться с «диалапов», и для его блокирования системным администраторам пришлось разузнавать и блокировать IP модемных пулов основных провайдеров.
Прокси-сервера. Socks и HTTP
Чуть более 2 лет назад, как заметное явление, появились более изощренные способы использования чужих, неаккуратно сконфигурированных серверов. Socks-прокси сервера предназначены для сведения всех видов интернет-трафика небольших компаний к одной единственной машине, имеющей доступ в Интернет. Для работы они обычно используют порт 1080. Если машина допускает неавторизованное соединение с произвольного IP-адреса (типичная ситуация в до-спам эру), ее могут использовать спамеры и для направления своего SMTP-трафика. Интересно отметить, что логи использования socks-серверов обычно не ведутся, поэтому отслеживание истинных источников рассылки даже самими администраторами socks-серверов обычно невозможно. Почти сразу же обнаружилось, что и стандартные открытые HTTP-прокси (типичные порты 3128, 8080 и т.д.), поддерживающие метод CONNECT, легко использовать для того же самого, достаточно в команде CONNECT указать не только имя сервера, но и задать 25-й почтовый порт. Даже любимый всеми «народный» вебсервер Apache, собранный с модулем mod_proxy и неправильно настроенный, нередко используют как средство рассылки почтового спама.
Взломанные машины. Стандартное ПО. Модифицированное ПО. Смена портов и времени прослушивания. Троянские кони.
Исчерпав возможности по поиску нерадивых администраторов, спамеры примерно год назад или чуть больше, начали взламывать любые доступные компьютеры и устанавливать там один из вышеперечисленных стандартных модулей: SMTP-релеи или прокси. Добавьте к этому взрывной рост кабельных подключений в США и какой-нибудь Бразилии, (Россия по сравнению с США и той же Бразилией — мелочь), при том, что Windows не имеет включенного по умолчанию брандмауэра, администраторы местных кабельных и DSL сетей никак не защищают своих пользователей в силу низкой квалификации, а сто сравнительно честных, стандартных и хорошо документированных способов взлома незащищенных Windows-машин печатает журнал Хакер в каждом втором номере, и вы получите практически безграничное поле деятельности для взломщика.
Надо сказать, что плохая защищенность таких сетей далеко не всегда происходит от низкой квалификации администраторов. Иногда это происходит в силу «политических» причин: вполне квалифицированные администраторы провайдера считают, что они отвечают только за подключение, а все остальное — проблема клиента. Даже в России редко встретишь домашнюю сеть, защищенную брандмауэром и тем более практически невозможно увидеть в памятке клиенту такой сети напоминание о том, что в Windows надо установить брандмауэр. Однако, установив открытый релей или прокси, спамер рискует тем, что его очень легко обнаружить. Любому администратору достаточно обратиться к подозрительной машине по одному из известных портов и убедиться, что его пускают без авторизации (эта процедура называется «прозвоном»), чтобы внести данную машину в список запрещенных. Поэтому спамеры, особенно в последние полгода-год, начали модифицировать поведение взломанных машин.
Если рассылочный демон принимает обращения только от IP своего хозяина и/или засыпает и просыпается по хитрому алгоритму, и/или постоянно меняет порт, по которому принимаются команды и письма, то прямое обнаружение таких машин методом прозвона обычному администратору сильно затрудняется. Ведь чтобы прозвонить все 65536 TCP-портов потенциально взломанной машины, требуется время — примерно около получаса, за это время она может сменить порт, заснуть и т.д. и т.п.
Однако то, что недоступно постороннему администратору или внешней антиспамерской команде, все еще могут сделать администраторы провайдера. Они могут следить за странным поведением серверов, которые, прослушав входящее соединение по необычному порту, начинают активно рассылать почту по разным адресам. Такой мониторинг не очень трудно организовать. Спамерский софт развивается. Относительно невинный софт для прямых рассылок (например, Advanced Mail Sender), в котором спамер в обход сервера провайдера обращается к целевому MTA напрямую с домашнего модема, сменился продвинутыми сложными системами, вершиной которых являются троянские кони широкого спектра действия. Среди их возможностей есть даже апгрейд самих себя, автоматическое распространение, переезд на другие взломанные машины и т.д.
Регулярная функция такого троянского коня: сходить по HTTP на записанный у него адрес в заданное время, взять оттуда списки адресов и писем, разослать почту, узнать время и место следующего захода. Иногда троянские программы прослушивают каналы IRC и получают команды оттуда. Это позволяет скрыть источник команд. В отличие от HTTP, где создание сайта или закачка новых файлов отслеживается довольно легко, сообщения на канал IRC могут передаваться через любой из серверов IRC-сети, и для отслеживания источника необходим оперативный доступ к логам всех серверов сразу.
Возможности по активному обнаружению взломанных машин
Теоретически (и практически) способ рассылки, при котором сама взломанная машина обращается по HTTP или IRC за письмами и никогда не находится в режиме прослушивания, труднее всего обнаружить. Практически нельзя понять, что они делают, каков их интерфейс со спамерами, так сказать. Например, известно, что некий троян ставит стандартные прокси и SMTP на нестандартных портах. Обычно информация об этом трояне этим и исчерпывается. Зараженных пользователей и их провайдеров интересует только как убрать трояна — а антивирусные программы делать это научаются быстро. Для более или менее серьезной борьбы со спамом интереснее знать, кто этот троян распространяет и как он это делает. Для подобных выяснений и полезны администраторы сетей, в которых есть зараженные машины. Например если троян ходит куда-то зачем-то по HTTP, то во-первых надо узнать об этом обстоятельстве, а во вторых посмотреть — куда; если на него кто-то коннектится в какой-то момент — посмотреть, что было перед этим и т.п..
К счастью, у спамеров тоже существует разделение труда — категория «взломщиков» выделилась в отдельную профессию, а товаром и предметом купли-продажи служат списки IP-адресов. Покупателями являются «рассылочники». При этом стандартность установленного ПО играет большую роль. «Рассылочникам» намного удобней работать с использованием обычного списка, не заботясь об особенностях поведения того или иного хитрого трояна. Поэтому сложные и продвинутые троянские кони пока не получили слишком широкого распространения. Хотя спам пока развивается по экспоненте — очень может быть, что уже и получили, только мы этого еще не осознали. Не исключено, что в конце концов прокси и релеи выйдут из моды, прозвон станет все менее и менее эффективным средством и единственным способом выявлять очередную черную дыру будет обнаружение спама, посланного из нее.
Организационные усилия по борьбе со спамом
Часто можно услышать о неком будущем протоколе электронной почты, после внедрения которого, спама не станет. Хотелось бы добавить в эту идею немного здорового скепсиса.
Сетевое сообщество не смогло до сих пор внедрить простейшие антиспамерские приемы, которые само же установило в качестве стандарта. Например, разделение портов SMTP-сервера на порт для MTA (25: прием почты от чужого сервера для сохранения своему пользователя; «общение между серверами») и MSA (587: прием письма от своего пользователя для отправки на чужой сервер; «общение между пользователем и сервером»). Эта идея, также как и SMTP авторизация, появилась именно как реакция на появление спама.
Прошло уже немало времени, однако 587 порт так и не появился в популярных почтовых программах типа Outlook Express или The Bat! А ведь эта простейшая мера позволила бы провайдерам просто закрыть все исходящие соединения по 25 порту и полностью ликвидировала бы прямой спам «по карточкам» — спам с dialup-соединения. Как известно, Интернет-Карточка стоит 5 долларов, ее хватает на 10 ночных часов, за это время можно разослать десять тысяч писем и спокойно пойти покупать новую карточку, а старую (уже ненужную) заблокирует выведенный из себя провайдер.
Нет никаких технических препятствий так настроить почтовый сервер, чтобы он не принимал почту от «опасных незнакомцев» и блокировал как «спам по карточке», так и черные дыры. Достаточно, например, включить и настроить встроенный в любой SMTP-сервер протокол SSL, так чтобы он отклонял несертифицированные соединения. Сертификаты, идентифицирующие сервер, тоже давно существуют. За 50-100 долларов в год на почтовый сервер можно приобрести их в Thawte или Verisign. К сожалению, при такой настройке вы вообще перестанете получать почту, так как ни у кого, конечно, сертификатов нет.
В общем, новый протокол придумать можно. Но работать он будет только в том случае, если на него одновременно перейдут все почтовые системы. Иначе те, кто на него перейдет, окажутся изолированными от тех, кто не перешел. Иными словами, чтобы вы научились плавать в бассейне, кто-то должен сначала налить туда воду. Однако современный Интернет напоминает ту самую ситуацию, когда воду наливают, только после того как вы научитесь плавать.
Вывод: очевидно спам нельзя победить «хорошим» протоколом. Но спам можно побеждать совместными усилиями антиспамерского ПО, систем обратной связи, согласованных действий провайдеров и т.д. И об этом пойдет речь ниже.
Принципы и технические методы работы с незапрашиваемой корреспонденцией. Часть 2
Принципы и технические методы работы с незапрашиваемой корреспонденцией. Часть 1