Ожесточенная борьба со спамерами не приводит к их вымиранию, напротив, побуждает разрабатывать новые виды оружия. Все, что не убивает человека, делает его сильнее! Извечная проблема меча и щита, превратившая каменные топоры в атомные бомбы…

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

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

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


Использование компьютеров-дронов
для обхода DRBL-баз

Впрочем, DRBL-базы выявляют и отсеивают всего 20%-30% спама. Более серьезную угрозу представляют сигнатурные фильтры. Даже если рассылка велась с тысячи разных IP-адресов, но рассылалось одно и тоже письмо, любой нормальный почтовый сервер классифицирует его как спам, и адресат не получит рекламы.

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

Как же все-таки спамерам удалось перехитрить систему фильтров?

Каменный век — первые эксперименты

Давным-давно, когда интернет был медленным, а письма рассылались преимущественно в «голом» TXT, «химичить» с их формой особо не получалось. Какое там творчество, какой там полет хакерской мысли… Ладно, берем номер телефона и думаем, как бы его видоизменить так, чтобы и клиент смог дозвониться, и в то же время фильтр не съел. Меняем нуль на букву «O», единицу — на «I», тройку — на «З». Также можно добавлять пробелы, скобки и тире в разных местах. То же самое можно сделать и с текстом письма — тут даже появляется больше свободы, поскольку помимо замены сходных по начертанию букв, можно заменять слова их синонимами, менять блоки текста местами и так далее.

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

Используя «движки», выдернутые из программ, имитирующих некоторое подобие диалога с человеком, американские спамеры сумели создать генераторы, передающие одно и то же сообщение бесконечным множеством вариантов. Грубо говоря, некий «компилятор» текста. Обратный же процесс выделения ключевой «мысли» уже требует применения искусственного интеллекта или сложного лингвистического анализа, который в полной мере до сих пор не реализован. Кое-что имеется у Касперского, но… могучий русский язык снимает проблему «компиляторов текстов» сам собой. Уж очень сложно написать программу, транслирующую исходное сообщение более чем в десяток вариантов. В английском с этим проще. Жестко заданный порядок слов в предложении, простейшие лексические правила, скромный лингвистический набор (вследствие которого каждое слово имеет множество синонимов), легкая стыковка слов друг с другом, позволяющая (с некоторыми ухищрениями) обходиться без предлогов.

Русский язык обладает развитой системой сложных правил с кучей исключений. Одна мышь, две (три, четыре) мыши, пять мышей! Вот и попробуй все это заложить в программу. Тем не менее, работа над созданием «компиляторов» русского текста ведется и весьма активно. Взять хотя бы разработчиков игр. Чтобы персонажи не выкрикивали одни и те же навязшие в зубах фразы, необходимо научить машину генерировать произвольные фразы на основе заданной мысли. А в игровой индустрии замешаны совсем не малые деньги, и есть все основания предполагать, что такие генераторы когда-нибудь появятся. Тогда ни синтаксический, ни лексический анализ ни за что не сможет отличить спам от простого письма.

HTML – начало конца

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

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

Короче, от всех этих фокусов с HTML’ом спамеры постепенно отказались, поскольку они себя не оправдали ни с какой стороны. Фильтры подтянули качество распознания HTML-спама до прежней отметки (и даже перешагнули ее, с учетом нетипичных для «честных» писем «извращений»). А пользователи, даже те, что заинтересовались рекламой, не всегда могли ей воспользоваться. Плюс ко всему, рассылка HTML’а длится дольше и обходится гораздо дороже (в плане трафика). А скорость рассылки определяет все! Как только образцы непрошеной корреспонденции попадают в DRBL-базы, то даже при условии 100% полиморфизма (совершенно недостижимого в HTML’е) IP-адреса начинают давить один за другим. И даже очень крупная армия дронов гибнет за считанные десятки минут.

Король палитра первый

Эпидемии графического спама то вспыхивают, то затухают. Вначале это были просто картинки, вставленные в «честный» HTML-текст с номерами контактных телефонов и прочей уникальной информацией, однозначно идентифицирующей спам. Фильтры первых поколений игнорировали картинки, но были быстро доработаны, и полноводный поток спама, захлестнувший интернет, сразу иссяк. Тогда спамеры применили готовые генераторы изображений, предотвращающие автоматическую регистрацию на почтовых серверах и вносящие в начертания символов некоторые искажения. Казалось бы, фильтры, не рыпаясь, должны были дружным строем идти сдаваться на мясокомбинат, но все вышло совсем не так…
Незначительные искажения (или невысокая степень зашумленности изображения) фильтры распознают чисто статистическим методом по кривой Гаусса (кто изучал метрологию, знает, что это за штука). Да, фильтр не в состоянии OCR’ить изображение, но это ему и не нужно. Имея в своем распоряжении большое количество случайным образом искаженных изображений, он просто выделяет свойственные им «родственные черты» и палит на месте.

Значительные искажения уже не распознаются фильтрами, но чтобы их разобрать, получателю приходится совершать значительное насилие над собой, натягивая глаза на… Это же насколько его должна заинтересовать реклама, чтобы он так извращался… Так что, независимо от количества успешно доставленных писем, эффективность такого спама близка к нулю. И популярность тоже.


Такие искажения легко распознаются человеком,
но обманывают простейшие сигнатурные фильтры

Царствие жабье

Подлинный полиморфизм стал достижим только с появлением в HTML скриптовых языков (в частности, Java Script), проникших даже в популярные почтовые клиенты. Казалось бы, зачем электронному письму тащить на своем борту какой-то там язык. Это же ведь не сайт, в конце концов! Тем не менее, применение ему все-таки нашлось. Например, сотрудники компании получают по мылу некоторую форму, а Java тут же проверяет корректность заполнения полей, исключая наиболее глупые ошибки. Более разумного применения скриптам придумать, пожалуй, невозможно. Но мало того, что они служат неиссякаемым источником ошибок, приводящих к возможности захвата управления компьютером или утечке конфиденциальных данных, так они еще и спамерам помогают!

Полиморфный Java/VBasic-спам делится на две категории. Первая (самая многочисленная и самая простая в реализации) основана на функции (функциях), расшифровывающей текст послания и выводящей его в окно почтового клиента «на лету». Поскольку ключ шифрования может меняться с каждым письмом, то сигнатурному фильтру необходимо иметь на своем борту полноценный виртуальный интерпретатор, «перерабатывающий» скрипты и анализирующий выдаваемое ими содержимое. Это же какие аппаратные мощности иметь надо, чтобы выполнять такой анализ в реальном времени?! Поставишь такой фильтр, и бумажная почта будет ходить быстрее электронной! Но есть одна очень веская зацепка — шифруя содержимое письма, сам код шифратора остается неизменным и может быть использован в качестве сигнатуры.

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

Вот и приходится хитрить, создавая готовые генераторы функций-шифраторов/дешифраторов, ни статистически, ни «лингвистически» не отличимых от прочих java-функций, которые все чаще и чаще встречаются в обычных письмах. И здесь фильтры уже вынуждены проявлять осторожность.

Завтра

С приходом в Сеть коммерции ее накрыл рекламный мрак, и от спама уже никуда не уйти. Единственный позитивный момент, который нельзя не отметить, — спам становится все более качественным и контекстно-чувствительным. Над созданием сообщений работают, и нужная информация сразу же бросается в глаза и оседает в мозгу даже после того, как человек рефлекторно нажмет <DEL>. К тому же, зная IP-адрес получателя (а в большинстве случаев его можно установить тем или иным путем), спамер определяет его географическую принадлежность и шлет рекламу, соответствующую месту обитания «жертвы».



Полную версию статьи ты можешь
прочитать в январском
номере
"Спеца"

Оставить мнение

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…