16 марта, 2012
Графоспам.
Нарисовал он на листке
И подписал в уголке:
// интересно, этот пост с этим рисунком пролезет через антиспам-фильтры тем, кто подписан по e-mail?
Поговорим об очень любопытной разновидности почтового мусора – графическом спаме и соответствующих защитных технологиях.
Начну с краткой исторической справки.
Что было первым графоспамом – неизвестно. Но массовым явлением эта хрень стала где-то в 2003г. Жизнь у неё была яркой, но популярность быстро сошла на нет. За несколько лет её доля взлетела до 40% от общего объёма спама, а потом также быстро рухнула до сегодняшних 6-7%.
Вообще, засовывание рекламных текстов в графику было не только логичным шагом со стороны кибер-негодяев. Оно также укладывается в некую философскую картину мира и вечного противостояния меча и орала… эээ… точнее — оружия и брони. К 2003г. уже только ленивый не поставил себе защитные технологии для фильтрации обычного текстового спама. Провайдеры баловались серверными (в основном бесплатными) решениями, да и в персональных антивирусах почти везде появился антиспамовый модуль.
Ну, о качестве этих технологий (особенно с сегодняшней-то колокольни) плохо говорить не будем, но как-то это работало и дофильтровалось до того, что реально эффективность обычных (текстовых) рекламных рассылок упала. Но бизнес есть бизнес – спамерам пришлось искать другие пути как гадить в электронные почтовые ящики пользователей. И путь был найден вы сами догадываетесь где.
Графоспам 2003-4гг. – это, конечно, песня. Эх, старые-добрые, времена, нам бы сейчас с таким наивняком бороться.. Тогда спамеры просто засовывали текст в гифы и джпеги и рассылали по обычным каналам. И хотя в тогдашних антиспамовых решениях не было никакой навороченной защиты от таких рассылок, их быстро побороли, просто детектируя вложенные рисунки по мета-данным (например, по хэшу разных характеристик) и испытанными способами вроде проверки репутации отправителя и публичных чёрных списков (тогда это ещё хорошо работало).
Так что примерно в 2004г. тут началась настоящая гонка вооружений. Спамеры прочухали, что у графоспама есть серьёзные перспективы – на тот момент ещё не было продуктов, способных распознавать содержимое картинок.
Сначала спамеры сделали специальные роботы, которые автоматически легонько меняли рассылаемые рисунки (добавил пиксель -> хэш поменялся -> спам не ловится –> нужна новая сигнатура). Потом, когда уже появились первые тиражные технологии для фильтрации этой пакости, тут разыгралась фантазия! Появились всякие приёмы зашумления, искажения и сокрытия. Спамеры прикручивали разноцветный фон, использовали экзотические вензелястые шрифты, поворачивали рисунки и разбивали их на сегменты, делали «прыгающие» буквы, смешивали текст и графику, рассылали анимированные гифы…
И всё для того, чтобы затруднить антиспаму задачу выдрать из графики контент, проанализировать его и в случае надобности забанить. Чего только не придумывали разработчики! Были случаи, что в фильтр засовывали даже промышленные OCR системы, но эта штука в чистом виде не прижилась. Во-первых, она всё-таки не заточена на сильные шумы и искажения – приходилось сильно работать напильником. А во-вторых, уж очень сильно она тормозила и для практики (особенно для серверных решений) не годилась.
А контент-то надо было как-то выдирать. Как по-другому понять, что там на рисунке?
Нужен был какой-то компромисс по производительности и точности. И вот против всех этих хитро..постей мы придумали в 2003г. свою хитро..пость :) — технологию GSG.
Сейчас поведаю немного деталей про волшебство GSG — как она находит в рисунках спамерский мусор и ловит за него спам-письма. Всё-всё-всё рассказать не смогу, потому что ноу-хау, да и вообще спамеры тоже иногда читают блоги.
Первый элемент GSG – экстрактор объектов. Его задача — очистить рисунок от шумов, всякой спамерской хрени и выпотрошить из него контуры объектов и передать на анализ дальше.
А контуры – это уже нечто. С ними начинает работать эвристический детектор текста. На этом этапе система пытается понять, есть ли в рисунке текст. Она анализирует размеры, положение, меж расстояния и другие характеристики объектов. Здесь мы используем очень хитрый алгоритм, весьма устойчивый ко всяким уловкам вроде «прыгающих» букв, разным деформациям и шумам. В результате детектор строит сигнатуру (данные о наличии текста, его местоположении и объёме) и передаёт её на следующий уровень.
Даже если же текст не найден – это для нас ни разу не повод сдаваться. Мы натравливаем на рисунок OCR-подобную тулзу, которая очень быстро ищет в контурах знакомые объекты. Здесь творится вообще немыслимое технологическое занудство из области геометрии выпуклых множеств, не буду грузить деталями. Кратко – с контуров снимаются некоторые геометрические характеристики (углы касательных и т.п.), вычленяются дуги и отрезки, строится сигнатура.
На третьем уровне – самое понятное, но оттого не самое простое. Полученные сигнатуры сравниваются с образцами спама в базе данных. Это из понятного. А из «не самого простого» — эту базу данных круглосуточно поддерживает в актуальном состоянии наш спамлаб, всего порядка 30 весьма дорогих (во всех смыслах) аналитиков. Ну, а дальше всё как обычно – система набирает веса полученных сигнатур по разным категориям и принимает решение насколько это спам или нормальный контент вроде графика продаж или образца новой продукции.
А теперь интерактив! Прочтите описание GSG ещё раз сначала и засеките сколько времени это займёт. Ага, а вот и «шокирующие факты» – GSG тратит на анализ одного рисунка всего … 10-40 мс!!
В общем, вот такой волшебный «зелёный человечек», который есть в каждом нашем (вашем) серверном и персональном продукте:
В заключение немного Дарвинизма.
Если графоспам такой весь трудноуловимый и вездесущий (как может показаться), то почему за последние 6 лет его доля сократилась с 40% до 7%? Эффективность текстовых антиспамовых фильтров немного, но будет повыше своих графических «братьев». Казалось бы, рой дальше и зарабатывай больше. Почему спамеры забили на это направление?
Мне кажется тому есть две причины и обе они упираются в одно – слать спам стало проще и быстрее.
Во-первых, изменилась экосистема рассылки спама. Если в начале 2000-х использовали мощности легальных/полулегальных провайдеров (ну, да, их приходилось часто менять – я имею в виду провайдеров), то сейчас это на 90% ботнеты. Хрен забанишь. Во-вторых, сильно подросла пропускная способность канала и проникновение широкополосного доступа.
Казалось бы всё наоборот – созданы условия для распространения «тяжёлого» графоспама. Ан нет! Не прёт! Почему? Да всё очень просто – зачем напрягаться, когда можно не напрягаться? Лучше рассылать больше быстрого и тупого текстового спама, чем колдовать над более эффективным, но и более трудозатратным графическим спамом. Как результат, в лучших традициях Дарвинизма победил сильнейший и сильнейшим тут оказался не умнейший, а плодовитейший.
Хотя, у спамеров тоже рыночные отношения — у графоспама, видимо, есть своя уникальная ниша постоянных клиентов (типа ценителей) :)