?

Log in

Security (b)log
Журнал (о) безопасности
Про спам и борьбу с ним 
13th-Dec-2007 02:42 pm
Сколько вам приходит спама в день? Мне в сумме около 1000-1500 сообщений на abondarenko@gmail.com и корпоративный ящик. Это много, друзья, a_shade_of_blue не даст мне соврать, но эти адреса принадлежат живому человеку и им больше 5 лет.

Нормальные люди решают задачи минимизации потока мусора в свои ящики, а мне как-то довелось решать обратную задачу, мне нужно было сделать спам-ловушки, то есть адреса, на которые будет приходить 100% спам дабы можно было обучать фильтры и смотреть статистику их работы. Казалось бы, чего проще! Ну зарегистрируем мы немного ящиков на разных сервисах платных и не очень, заведем какой-нибудь неприметный домен с ничего не говорящим именем digitalhardcore.us, будем эти адреса оставлять в регистрационных карточках заказа рекламы Pfizer'a и еще какой-нибудь дряни (естественно, отписавшись сразу же от легитимной рекламы) и дело в шляпе. И так, что было сделано:

1 - Несколько адресов на mail.com, yahoo.com и еще где-то с форвардом на приемник потока у нас.
2 - digitalhardcore.us, вся почта с которого форвардится на тот же приемник.
3 - Регистрируемся на множестве сайтов разной направленности от торрент-трекеров и обзоров железа до секс-шопов оставляя там эти адреса
4 - Постим на форумах разные нейтральные комментарии указывая в подписях адреса

Результат выполнения пунктов 3 и 4 ночными дежурными за 1 год - около 100 писем в день на адрес (плюс-минус), хотя ожидался на порядок больше.

Второй интересный момент: на 1 адрес мы собирали "не спам", то есть рекламу уважаемых контор вроде cocacola или hp чтобы тестировать себя на ложные срабатывания. Результат через год - 10-20 спамовых писем в день в потоке честной рекламы, хотя адрес живым людям кроме меня был не известен.

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

Отсюда лично я делаю выводы:

1 - крупные неуважаемые места торгуют базами пользователей (удав, фишки)
2 - крупные уважаемые места ими не торгуют (LOR, Lepra), но некоторые все-таки торгуют
3 - основной метод сбора адресов для набития баз - это не прочесывание стайтов и перебор имен, а потрошение записных книжек почтовиков троянами.

По этому можете смело писать свои адреса без дурацких _at_ или _здесь_была_собака_, форумы - капля в море.

Антиспамами принято меряться, давать им разные крутые награды и хвалить на форумах. Я хочу рассказать о том, как ими меряться правильно и что следует из измерений.

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

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

Третье - что сравнивать кроме скорости. Сравнивать надо 2 величины - уровень детектирования (Detection Rate) и уровень ложных срабатываний (False Positive Rate). Первое число - это число верно распознанных как спам писем поделенное на общее число спама. Это число НИКАК нельзя посчитать при помощи робота потому, что робот не видит собственных ошибок. Уровень ложных срабатываний - это число распознанных как спам нормальных писем поделенное на общее число нормальных писем. Если первый параметр указывают, то второй либо замалчивают либо пишут откровенные небылицы. Нужно помнить, что FPR резко растет с увеличением агрессивности фильтра и, например, при замене антиспама на тупой скрипт "помечать как спам вообще все" и DR и FPR будут равны 100%: 100% спама мы распознаем уверенно, но и все чистые письма тоже зарубим.. Пример реальных цифр - Spam SLA Message Labs гарантирует деньгами 95%DR, 0.0004%FPR.

А теперь, почему антиспам - отстой. Потому, что хороший антиспам при низком FPR (одно на 10000) имеет в реальности DR около 93-96%. То есть например я при хорошем эгрегоре и чистой карме получу 40-70 спамовых писем в день (что собственно и происходит). По опыту, спам начинает бесить пользователя где-то на 14-16 письмах в день, так что меня ярость должна разорвать на куски :-).
Для того, чтобы понять как нам сделать жизнь удобнее, надо разобраться, как вообще работают антиспамы. Есть 3 больших класса методов борьбы со спамом (классификация моя, можете пинать):

1 - Разграничение прав доступа. То есть блокировка письма по признаку отправителя, не важно как мы его ограничиваем: авторизацией или урезанием пулов IP по DNSBL, greylist'у или как-то еще.

2 - Анализ контента. Когда какой-то нормализованый кусочек письма рассматривается как образец спама, характеристический термин, URI из блек-листа чего угодно (IP, телефоны, URL, whatever).

3 - Статистика. Ведение персональной базы по отдельно взятому потоку спама-неспама любым удобным алгоритмом, например байесом.

Недостаток первого метода в том, что слишком грубая резка порождает ложные срабатывания и RBLы часто обслуживаются полностью невменяемыми людьми. Второго в том, что база сигнатур-признаков-терминов всегда в большей или меньшей степени не поспевает за спамерами и отражают некий усредненный поток, а рассылки нынче уникальные с очень коротким временем жизни. Третьего (кроме традиционной убогости реализации) в вечном мусоре в базе, опасностью перекормить спамом и необходимостью вести статистическую базу для каждого пользователя (если мы хотим хорошего результата), а по сему по моему глубокому убеждению подкрепленному опытом Байесу на серверах делать совершенно нечего. Первый метод используют все, второй - практически все коммерческие вендоры (Message Labs, Yandex, Kasperksy, Symantec), третий - spamassasin и производные, а так же все персональные.

Так как спамассасин все-таки ставят на сервера, а ведением персональных баз никто себя не утруждает, то можно смело заявлять, что ваш серверный антиспам использует анализ некоего усредненного потока, и то, что все-таки проходит к вам в ящик - это либо очень хороший спам, либо "выбросы" из этого среднего потока. Так как хороший спам - это наверняка инновации и его поимку через некоторое время лечит вендор серверного антиспама, то нам следует сосредоточится на "выбросах" - вот тут-то нам и поможет Байес. Он встроен во все персональные антиспамы в том или ином виде с разной степенью убогости (самая убогая реализация - у Microsoft при совершенном отсутствии причин делать плохо очевидные вещи по известным алгоритмам имея в общем полноценный почтовый клиент и не полхой сервер) и так как он наш, то настроить и обучить его мы вполне способны так, чтобы снизить вредное влияние его традиционно большого false positive rate. Мой рецепт счастья: скидывать спам, отфильтрованный им в отдельный ящичек не смешивая со спамом отфильтрованным сервером, чтобы просматривать его перед удалением. Первое время там окажется довольно много нужной почты и потребуется явные корректировки настройки, но месяца через 3 он перестанет фалсить.
Comments 
13th-Dec-2007 11:54 am (UTC)
1. надо было под кат убрать все, кроме первых двух параграфов
2. тебе с каких адресов и куда форвардить спам?
13th-Dec-2007 01:16 pm (UTC)
1 - фиксед

2 - на user@digitalhardcore.us все, что будет угодно душе. Если поток какой-то заметный и чем-то выдается (например, для linux.org.ru так), надо попросить a_shade_of_blue сделать для него отдельный алиас у нее в системе.
13th-Dec-2007 12:18 pm (UTC)
Я ни разу не сталкивался с 1500 сообщений на один ящик. Точнее, сталкивался, но на очень старом домене, когда на один ящик завёрнуты ролевые адреса и ящик был andrey@...

andrey - словарное слово, на него спам будет идти сразу после регистрации домена.

Моё ощущение: 600 писем в день - это практически максимум того, что можно получать на один адрес, выше цифру поднять очень сложно.
13th-Dec-2007 01:14 pm (UTC)
Коряво вышло - в сумме на 2, то есть 500-750 на каждый, увы. Поправил, спасибо.
13th-Dec-2007 01:37 pm (UTC)
а у тебя есть список словарных слов, куда спам ходить начинает сразу? помимо очевидных - root, postmaster и прочего.
13th-Dec-2007 01:39 pm (UTC)
На мой ящик, на который ничего не завернуто, валится полторы тысячи в день.
13th-Dec-2007 02:41 pm (UTC)
Ужасы какие-то ;)
Я не знаю чем Вы режете свой спам, по моему ничем вообще.

bridge:/home/zhecka# bzgrep '=> 127.0.0.2' /var/log/maillog.0.bz2 | wc -l
8137
Хосты которые в течении месяца прислали более 60% спама(автообучение)

bridge:/home/zhecka# bzgrep '=> 127.0.0.10' /var/log/maillog.0.bz2 | wc -l
718
Хосты которые в течении 10 секунд сделали более 2 конектов.

bridge:/home/zhecka# bzgrep '=> 127.0.0.11' /var/log/maillog.0.bz2 | wc -l
3318
Хосты пославшие письма на несуществующие почтовые адреса

bridge:/home/zhecka# bzgrep '=> 127.0.0.12' /var/log/maillog.0.bz2 | wc -l
54425
Хосты которые дали кривой helo

bridge:/home/zhecka# bzgrep '=> 127.0.0.13' /var/log/maillog.0.bz2 | wc -l
59734
Хосты которые попали под определение паблик сетей.

Итого 126332 реджекта за 1 сутки.

bridge:/home/zhecka# bzgrep 'to=spamd@' /var/log/maillog.0.bz2 | wc -l
3557
Обследовано и помечено spamassassinом

bridge:/home/zhecka# bzgrep 'stat=Sent' /var/log/maillog.0.bz2 | grep -v -E 'spamd|zhecka' | wc -l
3692
пропущено spamassassinом в ящики.

Количество почтовых ящиков в компании 450 штук.
Статистика со вчерашнего дня.
13th-Dec-2007 02:50 pm (UTC) - > Итого 126332 реджекта за 1 сутки.
Вот это правильный подход. :-)
13th-Dec-2007 02:54 pm (UTC) - Re: > Итого 126332 реджекта за 1 сутки.
Цифра "126332" не говорит ровным счетом ни о чем :-). Это MX датацентра, домашний локалхост с выделенным IP или вообще что?
13th-Dec-2007 02:58 pm (UTC)
то есть исключительно кривым helo и BL по диалапу/dsl ты бы отсек ~90% спама?
13th-Dec-2007 03:11 pm (UTC) - > исключительно кривым helo и BL по диалапу/dsl
Думаю, всё вместе, процентов 50, как минимум.
21st-Mar-2009 06:40 pm (UTC)
Как бы сделать то же самое с Exchange, эх.
13th-Dec-2007 02:51 pm (UTC)
Есть одна компания, и у них ящики были на majordomo. Своего SMTP у компании не было и она использовала SMTP от своего провайдера WebPlus. Очень быстро SMTP WebPlus попал в RBL (сам видел), перевели на SMTP majordomo. В какой то момент и SMTP majordomo попал в какие то RBL списки, потом вообще лежал, стали искать выход. Так как я давно уже использовал SMTP от peterhost, то было порекомендовано перейти целиком на него с сайтом, доменом и почтой (у majordomo похоже пожизненные проблемы с почтой, я сам видел как telnet ... 110 один раз не прошел с AUTH FAILED, и тут же без пересоединения принял логин и пароль).

Ближе к сути теперь. Компания купила у peterhost только почтовый тариф (по незнанию ее руководства), я зашел в панель и мне пришлось создать там домен (без его регистрации, MX естественно никто не трогал) и все существующие почтовые ящики, чтобы можно было пользоваться их SMTP. Через 2 недели у некоторых пользователей в ящиках лежал SPAM.
13th-Dec-2007 02:54 pm (UTC)
> Через 2 недели у некоторых пользователей в ящиках лежал SPAM.
В ящиках на peterhost, на mail сервер которого в оригинальных DNS записях на majordomo, MX прописано не было.
13th-Dec-2007 05:50 pm (UTC)
DHA, возможно?
13th-Dec-2007 05:49 pm (UTC)
Advascan в лучшие времена давал практически три девятки. 93-96 это просто неприемлемо. Greylisting, кстати, очень много отстреливает.
13th-Dec-2007 08:24 pm (UTC)
Это пустые слова.
13th-Dec-2007 09:26 pm (UTC) - Юридический аспект
Я понимаю - автору был интересен технический аспект проблемы.
А почему всё же стали неприличными разговоры о юридическом давлении на спамеров? Разуверились? Лапки кверху подняли?
Законодательная база не то, чтобы сильная, но кое-какая имеется.

ФЕДЕРАЛЬНЫЙ ЗАКОН "О РЕКЛАМЕ" от 13.03.2006 N 38-ФЗ
(принят ГД ФС РФ 22.02.2006)

Статья 18. Реклама, распространяемая по сетям электросвязи и размещаемая на почтовых отправлениях

1. Распространение рекламы по сетям электросвязи, в том числе посредством использования телефонной, факсимильной, подвижной радиотелефонной связи, допускается только при условии предварительного согласия абонента или адресата на получение рекламы. При этом реклама признается распространенной без предварительного согласия абонента или адресата, если рекламораспространитель не докажет, что такое согласие было получено. Рекламораспространитель обязан немедленно прекратить распространение рекламы в адрес лица, обратившегося к нему с таким требованием.

2. Не допускается использование сетей электросвязи для распространения рекламы с применением средств выбора и (или) набора абонентского номера без участия человека (автоматического дозванивания, автоматической рассылки).

В соответствие со статьёй 14.3. КоАП РФ, за нарушение распространителем рекламы законодательства, влечет наложение административного штрафа на граждан в размере 2000 - 2500 руб., на должностных лиц - 4000 - 5000 руб., на юридических лиц - 40 000 - 50 000 руб.

Кроме того, мне симпатична позиция, изложенная здесь:
http://www.antispam.altnet.ru/

Я приношу свои извинения, если всё, что я процитировал, уже давно известно и считается "баяном". Но... почему нет? Кто сказал, что принцип "Лучшая атака - нападение" не распространяется на борьбу со спамом?
14th-Dec-2007 07:28 am (UTC) - Re: Юридический аспект
Потому, что поймать за руку реального спамера трудно. Все, что мы о нем знаем - IP с которого пришло данное письмо. Даже то, что в рекламе указываются чьи-то контакты нам не поможет, он всегда юридически отмажется, что заказал рекламную компанию ПЮБОЛ "Харитон Петросянович" (паспорт подделан, сам Харитон скрывается), который ее перепродал ООО "Импульс-казус" (уже ликвидированный) и т.д. То есть найти человека, который реально нажал на кнопку "спамить" и доказать это практически нельзя. Да и если наказывать заказчика, то за 10000р можно заказать спам с рекламой конкурента просто для того, чтобы сделать его жизнь немного интереснее. Юридически эффективно можно бороться с рекламой криминальных услуг вроде "Баз ГАИ" и "Наш СПАМ лучший", но и у них есть контрмеры.
16th-Dec-2007 09:30 am (UTC)
Умный заказчик скажет: "А нас подставили враги, мы сами завсегда против спама, конечно". После чего в руках у вас только бразильский IP и нулевая реакция бразильца-провайдера.
13th-Dec-2007 10:38 pm (UTC)
Мне кажется лучший алгоритм определения спама -- сами пользователи. Например, сделать так: если N > 1 пользователей на GMail пометили письмо как "Спам", то у всех остальных пользователей оно автоматически перемещается из "Входящих" в "Спам". Чем больше база пользовалей у веб почты, тем эффективнее будет отсеивание спама.

А "роботов" тренировать уже на таких вручную отсеянных письмах, чтобы повторные рассылки с похожим содержимым (отправителем и пр.) отсеивались даже без помощи пользователей...

Правда, это не будет работать с оффлайн POP-почтовиками. Но, по идее, для таких можно было бы сделать плагины по отправке обратно на сервер идентификаторов писем, помеченных пользователем как спам...
14th-Dec-2007 07:20 am (UTC)
К сожалению на практике данное решение при всей красоте, простоте и понятности - худшее. На сколько я могу судить по крупнейшей бесплатной почте где есть "пожаловаться на спам" и которая не является Яндексом, на первом месте по жалобам письмо "привет, новый пользователь", а дальше идут инвайты гугла, письма из вебмагазинов, рассылки subscribe.ru, и прочая вполне лигитимная почта. Так же пара сотен автоматических макак может вносить в логику фильтрования очень интересные корректировки :-) Пользователи - они такое придумывают, что страшно.

> А "роботов" тренировать уже на таких вручную отсеянных письмах, чтобы повторные рассылки с похожим содержимым (отправителем и пр.) отсеивались даже без помощи пользователей.

Роботов надо тренировать на полуавтоматически (то есть уже без известного спама) просеянном потоке "жалобы пользователей".
14th-Dec-2007 07:51 am (UTC)
кстати, основные жалобы пользователей идут именно на неверные срабатывания, когда "супернужноеписьмо" попадает в мусорку.
И насчет коэфициента N > 1 - наверняка тут будет не 1, а некоторое большее число.
14th-Dec-2007 08:17 am (UTC)
это не так.

> N > 1 пользователей на GMail пометили письмо как "Спам"

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

кроме того, как Андрей уже написал, пользователю не всегда можно доверить разбор спама - помимо указанной проблемы, существуют еще пограничные случаи, при которых пользователь неверно идентифицирует спам
14th-Dec-2007 07:19 am (UTC)
Я проводил эксперимент в прошлом году.
Создал ящик на своем сервере, с него отправил одно письмо на сервер в университете. Адрес нигде не публиковался, но в универе компьютер подхватывает время от времени вирусы/трояны. Так вот, через пару недели после появления там трояна мне начали валить горы спама на этот адрес.
This page was loaded May 26th 2017, 3:51 am GMT.