Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #110, ФЕВРАЛЬ 2008 г.

Пять козырных трюков спамеров

Крис Касперски

Хакер, номер #110, стр. 110-038-1

Уловки спамеров и методы борьбы с ними

Не почтовый ящик, а сплошной мусор. Трэш! Как им это, черт подери, удается?! Мало того, что спамеры вредоносны, так они еще дьявольски хитры и нереально изворотливы. У них все тузы да козыри, и, чтобы нас не развели как сам знаешь кого, приходится предпринимать кучу мер предосторожности и держать ухо востро. Как говориться, кто предупрежден — тот вооружен! Рассмотрим основные трюки спамеров и покажем, как им противостоять, тем более что эти приятели постоянно придумывают что-то новое!

Трюк первый: как спамеры добывают адреса

База адресов — основное топливо спамера, без которого он никуда не уедет. А как создаются такие базы? Самое простое и чрезвычайно эффективное — атака по словарю. Выбирается какой-нибудь популярный почтовый сервер (типа mail.ru) и последовательно перебираются все имена и клички в стиле Alex@mai.ru, Sveta@mai.ru, SuperMan@mail.ru, в том числе и инициалы, например kk@mail.ru. Таким образом, обладатели коротких (или словарных) адресов рискуют попасть в спамерские базы даже в том случае, если вообще нигде не будут публиковать свои контакты.

Кстати, о публикации. Оставляя свою мыльницу на форумах, в гостевых книгах и прочих отхожих местах типа заборов, многие прибегают к обфускации или, говоря простым языком, маскировке, скрывая их от «пауков», которые как харвестры бродят по Сети, отыскивая все, что содержит в себе символ «@» (он же «собака»). Ну, это раньше они тупо искали «@»… Теперь же стратегия добычи адресов изменилась. Харвестр, просматривая одну web-страничку за другой, ищет имена известных почтовых серверов, а потом берет все, что расположено слева от них. То есть «Invisible-Joe гав-гав mail.ru» будет съедено за милую душу. И даже «"Invisible-Joe_antismap_at_mail.ru /* remove "_antismap_" */» не спасет, поскольку подобные шаблонные примы уже давно распознаются автоматами. Единственное, что пока более или менее стабильно работает, - это имя после адреса сервера: «Пишите мне на mail.ru на Invisible-Joe». Никакой харвестр его не добудет.

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

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

Трюк второй: из реанимации в морг

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

Антиспамерские фильтры сплошь и рядом режут почту без каких бы то ни было уведомлений, от чего страдают не только спамеры, но и честные пользователи, и прибегать к такой политике борцам со спамом категорически не рекомендуется. Отправитель всегда должен иметь возможность узнать, что его письмо не дошло до получателя (особенно если речь идет о корпоративной переписке). Но, увы, политикой поведения фильтров заведуют злобные администраторы, у которых свое видение проблемы. Мы не понимаем их, они не понимают нас… Но оставим в покое администраторов и вернемся к нашим баранам, то есть спамерам.

Даже если спам достиг ящика пользователя, получатель мог удалить его не открывая, просто прочитав название темы и отправив непрошеную корреспонденцию в корзину. Особенно это удобно делать через web-интерфейс. Локальные же почтовые клиенты обычно автоматически загружают письмо в окно предварительного просмотра, стоит только поднести к нему курсор, а если не подносить, то как, черт возьми, его удалить?!

Спамерам нужно предельно точно знать, какой процент писем был реально доставлен и прочитан (поскольку если этот показатель вдруг упадет, то придется разрабатывать новые технологии рассылки). Специально для этой цели и рассылаются письма в HTML-формате с так называемыми «жучками» - обычной ссылкой на рисунок, физически располагающийся на web-сервере, подконтрольном спамеру. Почтовые клиенты автоматически загружают такие картинки при просмотре письма, что не только подтверждает факт его получения, но и позволяет определить тип установленных фильтров и систем защиты.

В частности, антивирусы загружают лишь заголовки графических файлов (поскольку некоторые из них содержат некорректные поля, приводящие к переполнению локальных буферов и, как следствие, к атакам на систему). Антиспамерские фильтры также загружают картинки (особенно когда все письмо целиком из одной картинки и состоит), но заголовок HTTP-запроса фильтра сильно отличается от HTTP-заголовка почтового клиента. Самое главное — если картинок больше одной и сервер умышленно замедляет их отдачу, то спамер без труда определит, сколько прошло времени перед тем, как получатель письма отправил его в корзину. Вот тебе и приватность! Все тайны - как на ладони!

Как избавиться от такой напасти? Единственный способ — отключить автоматическую загрузку картинок (в разных почтовых клиентах это делается по-разному, и тут надо курить руководство пользователя), а еще лучше вообще отключить HTML, чего, кстати, Outlook Express ну никак не позволяет, зато The Bat справляется с этим без проблем! Конечно, в текстовом виде письма смотрятся серо, однообразно и скучно, зато у спамеров не остается никакой возможности узнать, было письмо прочитано или нет. Кстати говоря, на смену «картиночному» спаму, который наконец-то пошел на спад, приходит новый тип массовых рекламных рассылок. Теперь тексты с призывами увеличить детородный орган или купить чудодейственный лекарственный препарат прячутся в PDF-файлах.

Трюк третий: обходим серверные фильтры

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

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

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

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

Как можно этому противостоять? С клиентской стороны - никак (единственный выход — запретить загрузку картинок), но вот разработкам фильтров достаточно прикинуться настоящим почтовым клиентом, и тогда спамер будет вынужден показать им рекламную картинку в том виде, в каком она есть, после чего защемить его уже не проблема.

Трюк четвертый: спам или не спам?!

Несмотря на ожесточенную борьбу со спамом, какая-то часть непрошеной корреспонденции все-таки доходит до народа, и тут самое главное - составить послание так, чтобы жертва прочитала его прежде, чем нажмет на <Del>. А для этого приходится мухлевать не по-детски.

Начнем с поля отправителя письма. «Слепые» поля - верный признак спама, и большинство почтовых клиентов отправляет такие письма в Junk-folder или помечает их красным цветом, мол, внимание! возможно, это спам! А потому какое-то имя вставить надо. Ну, скажем, Alex, Peter, Olga… Фамилию лучше не вставлять — фамилии у всех разные, а незнакомая фамилия сразу обостряет внимание получателя, заставляя его машинально тянуться к клавише <Del>. Впрочем, голое имя без фамилии в нормальной жизни — явление не самое часто. Что делать?!

А вот что! Использовать шаблонные имена типа «Интернет-магазин…», «Служба поддержки…». Учитывая, что далеко не все пользователи используют широкие колонки для имени отправителя, придумывать, что это за магазин такой и чего мы поддерживаем, совершенно необязательно! С определенной долей вероятности пользователь вообще не увидит продолжения названия из-за узкой колонки, а письмо от магазина (в котором он, возможно, заказывал товар) и уж тем более от службы поддержки он откроет.

Статистика показывает, что, как бы ни изощрялся спамер, ему отпущены считанные секунды, в течение которых пользователь (если он не даун, конечно) легко и безошибочно распознает спам, отправляя его в корзину. Некоторые (особо «одаренные») спамеры пытаются подделывать стиль письма, посылая макулатуру подобного рода: «Привет, любимый… бла-бла-бла, а я вот тут недавно озаботилась поиском чугунных труб и решила, что ничего лучше, чем продукция фирмы «Рога и Копыта», в нашей округе не нашла. Звони им по телефону 55-555-555, целую тебя в хвостик».

Теоретически написать письмо, которое будет воспринято как послание от близкого человека, вполне возможно, но практически… полезный выхлоп у такой рассылки будет нулевой. Новая волна спамеров наконец-то наладила контакт с мозгами и, вспомнив прописную истину, гласящую, что кратность - сестра таланта, стала бороться за каждое слово. «Чугунные трубы любой длины. Самовывоз из Мухосранска. 555-555-555». Тот, кому эти трубы совсем не приснились, все равно не клюнет на рекламу и не позвонит. А вот если получатель хотя бы потенциально способен совершить покупку, то он должен прочесть рекламный текст прежде, чем успеет его удалить, а потому тот должен быть предельно кратким и правильно оформленным с точки зрения дизайна.

Как бороться со спамом такого типа? Ответ - начинать чтение письма с конца, то есть не с конца, а с последней строки, отображающейся в окне предварительного просмотра. Даже у грамотно сконструированного спама шансы на выживание при этом резко сокращаются.

Трюк пятый: атака на поисковые машины

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

На самом деле тут есть одна лазейка, позволяющая нечестным web-страницам подниматься вверх, довольно долго удерживая свои позиции. Всякий раз, когда пользователь щелкает по ссылке, его браузер посылает web-серверу предыдущую ссылку в специальном после Referer. В случае с поисковиками это поле, как правило, содержит полную строку запроса и номер текущей страницы поиска. То есть если на наш сайт все-таки зашли (возможно, даже чисто случайно, по неполному совпадению ключевых слов), владельцу сервера ничего не стоит поднять логи и по строке «Referer» восстановить полную картину происходящего.

Вот пример из личного опыта. Смотрю я лог своего сервера и вижу там «http://www.google.de/search?hl=de&q=Remove+PAGE_NOACCESS&btnG=Google-Suche&meta=», мне становится интересно, что же реально искали и что нашли? Копирую ссылку в адресную строку браузера и… в первой же строке запроса вижу свою книгу - «Hacker Disassembling Uncovered». Поразительно, по каким только ключевым словам ее ни находят! Естественно, накапливая поисковые запросы, по которым люди заходят на сервер, я мог бы существенно повысить рейтинг посещаемости, только мне это на фиг не нужно, поскольку сервер дохода не приносит и установлен исключительно из желания почувствовать себя администратором :). Но вот владельцы других ресурсов, похоже, этой возможностью не брезгуют, активно используя ее, в результате чего на запрос «IR-mouse» поисковики зачастую выдают ответы вида «best IR-mouse and hottest girls! lowest prices!». Ну, коза с поршнем от мотоцикла уже вошла в историю, но вот ночная фея с инфракрасной мышью — это что-то новенькое. Вот только, нажав на ссылку, мы с высокой степенью вероятности не получим ни того, ни другого, и нам вновь предложат чугунные трубы или точную копию часов от Версаче по цене 2 убитых енота за погонный метр.

Так как же все-таки защититься от спама?

О том, как беспощадно удалять спамерские письма, мы уже писали много раз. К сожалению, универсального способа не существует. И поэтому ситуации, когда среди нормальных писем совершенно безнаказанно проскакивает спам или, наоборот, вполне безобидное письмо попадает в папку Junk mail, вполне обычное явление. Надо сказать, что бороться со спамом личными инструментами защиты стало все сложнее, и какими бы хорошими ни были всевозможные утилиты и программы (взять хотя бы популярнейший Spampal), 100%-ного результата они не дают. Да и дать не могут!

Но тем не менее способ, который позволяет если и не полностью избавиться от навязчивой корреспонденции, то по крайней мере свести ее количество к минимуму, все-таки есть. Речь идет о встроенных спам-фильтрах, которые предоставляют почтовые сервисы, разработанные крупнейшими поисковыми система. Это Gmail (www.gmail.com) и Яндекс.Почта (mail.yandex.ru) от Яндекса. Благодаря эвристическим алгоритмам и огромной базе, как поисковой, так и корреспонденции своих пользователей, сервисы с большой долей вероятности могут отсеивать спам. Причем если Google отлично справляется с иностранными рассылками, но легко пропускает рекламу на русском языке, то с последней легко разбирается Яндекс.Почта. Это совершенно не значит, что непременно нужно отказываться от своего ящика и переходить к адресу на бесплатном сервере. Вовсе нет. Тот же gmail.com умеет забирать почту с любого ящика (как почтовый клиент) и отправлять письма с твоим основным адресом в графе «Отправитель», и вместе с Яндекс.Почтой они поддерживают переадресацию. Поэтому вставить систему в цепочку приема почты, в общем-то, будет несложно!

WWW

INFO

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

Содержание