2. Спам. Начинаем борьбу. Цикл "Введение в компьютерную безопасность для начинающих"/ "We struggle with a spam. First steps." from "Computer security for beginers" ../images/2thTitles/TFreeCat.jpg 3460

Часть 2. Спам. Начинаем борьбу.

"Тушенка" не пройдет!

    Не знаю, как вас, но меня спам (здесь вставляем столько выражений, сколько требуется), мягко говоря, достал. Может быть, это связано с тем, что главному моему адресу уже более пяти с половиной лет (для Инета это очень много), а может, с чем другим: Как бы то ни было, пришлось разрабатывать собственные способы борьбы с этой "тушенкой" (если кто не знает, то спам - это не термин, а название консервов из третьесортного мяса, которую совали в своё время в реальные, физические почтовые ящики, что висят у вас с подъезде или на двери: "тушенку" раскидывали в таких количествах, что это стало нарицательным термином). Способы эти позволяют обходиться доступными, можно сказать, домашними средствами. Об одном из них я и хочу рассказать.

Средства всегда под рукой!

    Самая главная неприятность спамных письмах не в том, что они посылаются вам! Главное то, что они занимают ваше время. Причём, дважды: сначала вы ждёте, пока модем прокачает информацию, которая не нужна и задаром (и тут вы тратите свои деньги на чужую прихоть), потом вы тратите время на то, чтобы эти письма просмотреть. Причём, если просматривать вы можете мельком, то уж принимать придётся на полную катушку.
    И все же спамер практически всегда предоставляет вам средство борьбы с ним, а необходимая программа всегда есть у вас под рукой: обычный Outlook Express имеет всё на борту, чтобы потягаться со спамером. А ещё нам потребуется "Блокнот", Microsoft Word или любой другой редактор - по вкусу. Если у кого другая почтовая программа - не расстраивайтесь. И там всё есть необходимое, только разбираться с ней вам придется самостоятельно.
    Что касается программы Outlook Express, то, начиная с 4й версии (а младших и не было), она имеет в своём арсенале специальное средство для сортировки писем. Его можно найти в меню "Сервис/Сортировщик сообщений" (в версии 4) или "Сервис/Правила для сообщений/Почта" (в версиях 5 - 6). В Outlook имеется немало возможностей для работы над письмом: письмо можно распознавать по адресу отправителя, по адресу копии, по адресу получателя, по теме, по учётной записи, с которой оно пришло, по размеру, а в версиях 5 и 6 - ещё и по словам, которые встречаются в письме, по приоритету письма, по тому, есть ли вложения или нет и по секретности сообщения.
    Работать можно как с единичным письмом, так и со всем потоком сообщений сразу: письма можно автоматически перемещать или копировать в удобную для вас папку, пересылать на другой адрес. Также можно автоматически ответить на письмо, не загружать его с сервера или вообще удалить прямо на сервере. Из всех этих способов для нас наиболее интересен вариант удаления прямо на сервере - тогда не придется грузить спамерные письма и тратить на них время - вот идеальное решение! Что касается чёрного списка ("Заблокированные отправители"), то это вовсе не такое идеальное решение, как кажется. Ведь письма все равно принимаются, хотя и помещаются в папку "Удалённые". Но зачем принимать и сразу удалять, если можно не принимать совсем?

Ищем адрес спамера

    Рассмотрев возможности, попробуем найти данные для реализации нашей программы. Вот перед нами спамерное письмо? Вы думаете, адрес отправителя находится в столбце "От"? Если да, то вы немного, а в некоторых случаях - сильно заблуждаетесь. Как правило, в этой строке находится не сам адрес, а только его название (nick, по-английски) - обычно это имя или фамилия отправителя. Впрочем, даже если вы видите в строке "От" вы видите символ @, который почему-то дразнят "собакой", это вовсе не значит, что в строке указан обратный адрес, который вам нужен.
    Как же найти настоящий адрес? Средства есть. Щелкните правой кнопкой мыши по письму и в открывшемся меню выберите пункт "Свойства". Дальше откроется диалог с двумя закладками: "Общие" и "Подробности". Первая закладка нас не интересует, переходим к "Подробностям". Щелкаем по ней. Видите, какое интересное окошко раскрылось? Это служебная информация, которая присутствует в любом письме, и никакой спамер не может ее убрать.
    Нас же будут интересовать всего две строки. Первая начинается со слова "From" ("От кого") и обязательно присутствует в письме. Это адрес, который почтовая программа заявляет как адрес отправителя. Вторая строка начинается со слов "Reply-To" (" кому ответить"). Сохраним эти строки в отдельном файле (для этого и понадобится "Блокнот", Microsoft Word или любой другой редактор).
    Сравним сохраненные строки. Если обе они совпадают, адрес спамера у нас есть. Если строки различаются, будем ориентироваться на строку "Reply To". Теперь получение писем на этот адрес можно запретить (для этого адрес заносится в правило для почтовых сообщений), но я рекомендую вам не слишком торопиться.

Сортируем адреса

    Профессиональный спамер редко пользуется одним и тем же адресом дважды. Поэтому эффективнее вычислять не самих спамеров, а их "гнёзда". Для этого после получения нескольких писем с похожими адресами, необходимо занести эти адреса в собственную спамерную базу (то есть создать список этих адресов отдельным файлом в Word или другом текстовом редакторе). Для того чтобы не запутаться впоследствии, стоит отсортировать эти адреса по алфавиту (английскому).
    "Ну, где я найду его в три часа ночи?!" - скажете вы. А вот где. Запускаем программу Excel - и в названиях столбцов появится латинский (он же английский) алфавит. Вот только сортировать адреса придется вручную. "Зачем?" - спросите вы. - Excel сам это сделает, причём со свистом!"
    Конечно, если бы адреса были единым словом без спецсимволов (точка и знак @), Excel не составило бы трудов отсортировать их. Но в том-то и дело, что адрес состоит из двух больших частей, разделённых символом @ ("собачкой"). То, что до "собачки" (в начале строки) - это имя. То, что после - условно называется хост. Причём, хост состоит из нескольких частей (минимум двух), разделенных точками. Так вот, самая важная часть хоста (первая) расположена в конце строки. Далее, влево, следует вторая, третья и другие части.
    Таким образом, адрес выглядит примерно так: Имя@4-я_часть_хоста.3-я_часть_хоста.2-я_часть_хоста.1-я_часть_хоста. Сортировка адресов идёт по частям. Вначале сортируем по 1-й части, самой важной: проще говоря, объединяем слова с одинаковой 1-й частью в одну группу. Далее внутри каждой группы, ориентируясь на вторую часть располагаем адреса в алфавитном порядке. Если вторые части совпадают, сортируем по-третьей и так далее ... Ну, это только описывается долго, а сортируется быстро. Да! Не забудьте, что цифры идут до букв, а спецсимволы - до цифр!

Спамеры добросовестные и злостные

    Пока база наша копится, поясню, почему же мы скопировали два поля, а используем только одно. А вот для чего. По этим двум полям мы будем измерять добросовестность спамера, которых я (условно, конечно) делю на добросовестных, не совсем добросовестных и совсем недобросовестных (злостных).
    Добросовестными я называю тех, у кого поля "From" и "Reply To" совпадают. Чаще всего это начинающие спамеры явно называют себя, и, как правило, представляют опасность только назойливостью.
    Следующий тип - не вполне добросовестные спамеры. Это те, у кого вышеуказанные поля не совпадают или в самом письме написано, что писать следует на другой адрес (видимо, спамер еще не вполне освоил своё ремесло). Вообще-то различие полей "From" и "Reply To" не криминал, но данный случай показателен. Эти разночтения означают, что спамер имеет постоянный ящик, а отправляет сообщения с других, чтобы не выдавать свой настоящий адрес. Это уже более умелый и предусмотрительный спамер.
    Самые злостные - последняя категория спамеров. Чем же они опасны? А тем, что первые две категории спамеров так или иначе хотели получить ответ на своё письмо, причем на свой адрес - именно этого они и добивались. А злобные личности из третьей категории не нуждаются в ответе. Именно поэтому в поле From письма, отправленного "злобным" спамером, указывается либо чужой адрес, либо несуществующий (жизнеспособность адреса можно проверить при помощи программы Verify Mails), либо вообще фиктивный адрес: например, recordingpen@recorde.cu.99 (недопустимый адрес - на 1-м уровне цифр не бывает!) или аквариум@дл.вас (доменов .вас не существует! хотя уже есть домены с национальными кодировками - типа .ком).
    Как же так, спросите вы? Зачем вообще тогда письмо? Очень просто: если рекламируется что-нибудь, находящееся вне Интернета, зачем ответ?

Составляем правила

    Вот потихоньку база и заполнилась. Теперь можно составлять правила по управлению письмами: будем запрещать спамеров! Для этого помещаем повторяющиеся адреса в "черный" список почтовой программы ("Заблокированные отправители"). Обычно я делаю это после пяти повторений с одного адреса и трех - с одного хоста.
    Повторение по одному адресу отслеживается легко. Если вам ещё раз приходит письмо с того же адреса (полное совпадение по всем частям адреса), то вы не заносите адрес несколько раз в список, а просто пишете количество повторов. По пятому совпадению я составляю правило для этого адреса (например, "Не загружать с сервера" или "Удалить с сервера"), но адрес в базе оставляю - только помечаю, что он числится в "черном" списке (о том, почему - читайте ниже). Да! Правила тоже стоит отсортировать - так же, как вы сортировали базу. Это нужно для простоты дальнейшей работы.
    И все же чаще бывает, что повторяются не адреса, а хосты (или их части) - например, вам пришло три письма от @microsoft.com, но с разными именами: vasja@microsoft.com, petja@microsoft.com, kolja @microsoft.com). В этом случае в правила помещается уже хост целиком (то есть все, что после "собаки" - @microsoft.com) и в меню "Сервис/Правила для сообщений/Почта" выбирается "удаление писем на сервере" для тех сообщений, что с этого хоста.
    Если же приходят письма, в адресе которых после "собаки" указаны незначительно различающиеся хосты (например, @t1.ldpr.su, @host.ldpr.su и @xpress.ldpr.su), это говорит о том, что все сообщения были отправлены из одного и того же места. Просто отправитель изменял часть имени хоста. Чтобы вычислить такого отправителя, надо найти значимую часть хоста. Как же определить эту часть?

Режем хост на части

    Как правило, значимой является 1-я и 2-я части хостового имени: в последнем примере это ldpr.su. Именно эту часть - ldpr.su - и надо помещать в правило. Однако имеются страны, имена хостов в которых полностью или частично организованы по-другому. Сразу могу назвать Англию, Японию, Бразилию, Израиль (частично), Украину (частично) и даже некоторые российские сайты. В этом случае адрес может быть записан как @firm.co.jp (фирмы в Японии) или @org.or.uk (организации в Англии) или даже @firm.com.tw (организации на Тайване). Общим признаком таких адресов является присутствие слов com, co, org, or, edu, ac и некоторых других во второй части имени хоста.
    Кроме того, в некоторых странах изначально персональные имена выдавались только в пределах географических зон. Так было в самом начале в России, на Украине и до сих пор бытует в большинстве стран, в которых Интернет только начинает развиваться. В результате получаются адреса типа @yekom.odessa.ua. В таких, географических, адресах, а также в адресах-исключениях (с принудительными префиксами com, co, org, or, edu, ac и другими), так и в адресах с географическими зонами (odessa, nnov, spb и других) значимыми будут три первые части. Для последнего случая это будет yekom.odessa.ua.
    Как всегда на особом положении будет Англия: географические зоны в английских адресах расположены не на 2-м, как у всех, уровне, а на 3-м (например, @cogs.sussex.ac.uk) - тут уже важными являются все четыре зоны!
    После того, как вы найдёте три повторения с хоста или его части, вносим хост или его часть в правила и стираем эти адреса из вашей базы (там должны храниться только неизменные части).
    Зачем же я оставлял адреса в прошлый раз? Надеюсь теперь понятно, что, попавшись на повторении адреса, спамер потом может попасться уже на повторении хоста - и вот тогда первый адресок пригодится. Если такое случилось, то после занесения хоста в "чёрный" список правило по отношению к отдельному адресу можно и удалить.
    Хосты тоже следует сортировать - и правила по отношению к хостам лучше располагать до правил по отношению к отдельным адресам. Всё дело в том, что почтовые программы применяю правила в том порядке, в каком они расположены в списке - чем выше, тем важнее.

Исключение для Васи

    После того, как у вас появятся первые спамерные хосты (а это, как правило, серверы бесплатной почты), у вас неизбежно появится вопрос: "Как же так?! У меня друг Вася пишет с того же хоста - как же принимать его письма?" Но не зря я говорил о порядке работы правил, ох, не зря. Если расположить эти адреса-исключения до правил удаления, то вначале сработает правило к конкретному правилу для вашего друга Васи (и положит письмо от него в персональную папочку), а потом сработает обще правило и всех остальных спамеров обрежет под корень. Кстати, адреса-исключения тоже полезно сортировать в том же порядке, как и спамные.
    В общем, правила у вас будут группироваться так:
      1. адреса-исключения для спамерных хостов,
      2. адреса спамерных хостов,
      3. единичные спамерные реальные адреса,
      4. единичные спамерные псевдоадреса (например, аквариум@дл.вас),
      5. спамерные темы (например, "виагра"),
      6. правило для адресов, с которых вам часто посылают письма (удобно, когда почтовая программа сама раскидывает письма по папкам, и вы сразу видите от кого письмо).
    Пункты 1 и 6 к спаму не относятся. Письма с занесенных в эти правила адресов почта принимать будет. Послания остальных, попавших в "черный" список отправителей, будут отбрасываться.
    Если вы все сделали, как написано, составленная вами база правил в почтовой программе поможет убивать спамерные письма, не принимая их. Так что поздравляю вас с личной победой: времени у вас прибавится. Кроме того, сразу, как только включите первое же правило удаления, вы заметите изменение процесса приёма писем. Если раньше в первой фазе приема писем индикатор доходил до середины и быстро перепрыгивал в конец (во второй фазе шел, собственно, прием писем), то теперь первая фаза удлинится: почтовая программа будет оценивать каждое письмо в почтовом ящике на сервере и принимать решение принять или удалить. Однако на оценку писем времени всегда уходит меньше, чем на реальный приём письма.
    И ещё. Если будет хотя бы одно письмо, которое будет оценено как спамерское, то вместо успешного завершения почтовая программа покажет предупреждение: появится жёлтый треугольник с восклицательным знаком (символ предупреждения или ошибки), и появится сообщение о том, сколько писем было удалено. К сожалению, Outlook Express не сообщает, с каких адресов пришли удалённые письма. А жаль.

Стоит ли это труда?

    Каков же результат описанного мной способа? Как я упоминал в начале статьи, на мой старый адрес текла целая река спама. Так вот, после пары месяцев работы по новой системе статистика была такова: из 50 - 80 присланных на мой адрес писем (а это примерно 600 - 900 Кб) было принято от 3 до 8 писем (что-то около 30 - 50 Кб) - то есть примерно 5 - 6 % от общего объема. Если ещё добавить время на тестирование писем на сервере, то все равно на прием почты я тратил в 5 - 10 раз меньше времени, чем до работы по описанной мной системе.

Статья создана для журнала "Умный Офис",
издаваемый рекламно-издательской кампанией
"Июль в Швейцарии", опубликован в номере 6`2006.
Любое использование материалов данной статьи возможно только
с согласия рекламно-издательской кампании "Июль в Швейцарии".