Невизуальные методы защиты сайта от спама. Часть 1. Статистика

    Часть 1. Что говорит статистика


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

    Системы, анализирующие такие данные, как правило, накапливают статистику данных посетителя и вынесенных решений. Вашему вниманию предлагается краткий обзор статистических данных, накопленных нами (сервисом защиты сайтов от спама CleanTalk).


    Здесь я намеренно не привожу данных анализа IP-адресов по чёрным спискам. И без них можно получить достаточно данных, анализируя только содержимое полей форм и HTTP-заголовков.

    Мной будут рассмотрены данные по тексту сообщения, нику и адресу электронной почты, а также HTTP-заголовков и результатам проверки JavaScript-теста.

    Анализ по приведённым показателям очень прост алгоритмически и не требователен к ресурсам, поэтому может использоваться перед другими, более ресурсоёмкими проверками.

    Данные отражают реальную картину на момент написания статьи и сделаны на основе анализа нашего текущего трафика (более 2 000 000 запросов в сутки). Данные могут быть свободно использованы при анализе посетителей ваших сайтов. Хочу отметить, что вынесение решения по каждому критерию по отдельности не является верным — лучший результат будет достигнут при комплексном анализе.

    1. Текст сообщения


    Текст сообщения — это, конечно, главное в спаме. Следовательно, спамеры будут строить свои сообщения так, что по нескольким критериям они будут явно отличаться от обычных сообщений.

    В таблице приведены наиболее, с моей точки зрения, информативные статистические данные.

    Параметры текста сообщения (средние значения) Не спам Спам
    Количество ссылок, шт 1.47 4.27
    Количество контактов (телефон, e-mail), шт 1.72 6.38
    Время заполнения формы, c 177 8
    Отношение длины сообщения ко времени заполнения, символы/с 23.81 308.54

    Количество ссылок говорит само за себя. Количество контактной информации также может сказать о спаме. Время заполнения формы и, как следствие, скорость набора сообщения разнятся наиболее сильно.

    2. Ник посетителя


    Ник также может сказать о многом. Вероятная причина — качество алгоритмов генерации ников, которые используют спамеры.

    Параметры ника (средние значения) Не спам Спам
    Длина, символы 7.40 16.52
    Количество символов-разделителей, шт 1.89 3.80
    Количество цифр, шт 3.29 7.59
    Длина непрерывной последовательности согласных букв (для латиницы), символы 3.61 5.90

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

    3. Имя в электронной почте


    Всё сказанное для ников справедливо и для имён в почте.

    Параметры имени в e-mail (средние значения) Не спам Спам
    Длина, символы 10.09 19.16
    Количество символов-разделителей, шт 1.62 4.12
    Количество цифр, шт 4.30 9.57

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

    4. HTTP-заголовки


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

    Процент HTTP-заголовков User-Agent Не спам Спам
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 0.01% 11.42%
    Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.17 0.01% 10.84%

    Готовые спам-решения также могут оставлять свои заголовки, в частности, при использовании HTTP-прокси. И это также отражается в нашей статистике.

    Процент HTTP-заголовков Via Не спам Спам
    Mikrotik HttpProxy 0.86% 33.07%


    5. JavaScript-тест


    Дополнительной простой, но очень эффективной проверкой может оказаться JavaScript-тест. Например, изменение JS-кодом нужной куки, вариантов много.

    Наиболее продвинутые (и дорогие) боты проходят JS-тесты. Однако, как видно из статистики, большой процент спама идёт от очень простых программ, неспособных на это.

    Процент непрохождения JS-теста Не спам Спам
    изменение куки через JS 0.41% 68.53%


    6. Заключение


    Я показал статистические данные, накопленные нашей системой на настоящий момент. Повторю, для наиболее точного решения спам/не спам нужно анализировать приведённые показатели комплексно, а также в сочетании с другими способами проверок на спам.

    CleanTalk Anti-Spam

    49,00

    Компания

    Поделиться публикацией
    Комментарии 17
      +1
      Неплохой набор идей для раздумья, спасибо.
        0
        А Вы с какой стороны баррикад? ;)
        0
        Статистика конечно вещь интересная, но помоему посыл «спамеры будут строить свои сообщения так, что по нескольким критериям они будут явно отличаться от обычных сообщений» неверен. Качественные фишинговые сообщения не должны вызывать никаких подозрений.

        Вот что чисто визуально видно по массиву спама — очень часто вместо текста тела письма — одна картинка (для обхода фильтров Байеса) и постоянные повторы. Письмо в разных вариациях имени отправителя приходит не менее 3х раз
          0
          Статья о спаме в комментариях, контактных формах и регистрациях. Применительно к почтовому спаму статистикой не располагаем.
            0
            Мда. Профессиональная деформация. Увидел слова про адреса электронной почты…
          0
          Спасибо, интересно.

          Уточните, пожалуйста, по статистике «Отношение длины сообщения ко времени заполнения, символы/с». Для нормальных пользователей дан показатель 23.81. Это значит, что обычный пользователь печатает со скоростью в почти 24 символа в секунду? За счёт чего получается такое значение?
            0
            Полагаю, это средняя цифра, которая так велика, за счёт использования ctrl+c ctrl+v пользователями.
            0
            Да, цифра действительно средняя, и скорее всего связана именно с копипастом.Тем не менее, спам-боты показывают значительно лучшие результаты по скорости набора ;)
              0
              Неожиданно. А что именно пользователи могут копипастить в комментарий? Мне на ум приходят только ссылки.
                0
                Пользователи цитируют, приводят примеры кода, плюс сервисом пользуются Wiki движки, а там много спама на правках существующего текста, что и дает существенное увеличение отношения объема текста к времени набора.
                  0
                  Спасибо :)
                  0
                  Я, как правило, набираю текст сначала в Word, чтобы выявить глупые описки и ошибки. Это вопрос элементарного уважения к тем, кто будет читать твой текст. Естественно, вставляемый в форму ввода текст будет формально считаться слишком быстро набранным.
                    0
                    Если честно, я даже не предполагал, что кто-то так может делать. Ваш подход заслуживает уважения :)
                      0
                      С таким подходом вы точно выпадаете из «мейнстрима», но как пользователь/читатель комментариев, хочу сказать спасибо :)
                  0
                  Время заполнения формы, c
                  Отношение длины сообщения ко времени заполнения, символы/с


                  Еще полезно посмотреть на самых тормозных заполнителей. Там тоже высока вероятность спама.

                  2. Ник посетителя

                  3. Имя в электронной почте

                  А это хороший показатель лени разработчика. Особенно если счет идет не на тысячи email/день. Порядка 400-500 мыл в день с качественными именами и никами под них очень легко создавать в автоматическом режиме даже у яндекса (сомневаюсь, что их детектор ботов сильно изменился).

                  4. HTTP-заголовки

                  Опять таки лень. Не самый тупой воспользуется постоянно обновляемым списком из интернета.

                  5. JavaScript-тест

                  Вы привели проверку на выполнение JS скриптов вообще, но это позволит защитить только от любителей коврового спамометания.

                  Могу порекомендовать обратить внимание так же на следующие характеристики, для вылавливания спамеров на формах:
                  1. Подключение дополнительных скриптов/Модификация Head секции. Самая лучшая проверка — это проверка на подключение jQuery, если сайт может работать без нее (самый убийственный вариант);
                  2. Определение скриптами координат элементов (лучше переопределить эти методы, т.к. это отсеет хитрожопых, но тупых);
                  3. Несколько UserAgent-ов с одного IP;
                  4. IP адреса мобильных операторов(При наличии других факторов это верная примета!!!!!);
                  5. Ссылки на один домен с разных IP;
                  6. Периодичность похожих сообщений (обрабатывать только мат статистикой, т.к. разброс +-[0-0.25] от интервала это не редкость);
                  7. Несовпадение падежей/«битые» слова (обычная проблема криво отработанного синонимайзера).

                  А так же более раритетные случаи:
                  1. «Телепортация» курсора мыши внутри страницы;
                  2. Движение курсора мышки по идеально ровным прямолинейным/простым криволинейным траекториям (полиномы N порядка, гладкие кривые);
                  3. «Мгновенный» скрол;
                  4. «Отсекание» метрик/логеров активности.

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

                  К сожалению хорошего бота написать не сложно, но к счастью мало разработчиков ботов приличного уровня (что и не удивительно, но ради фана/рабочих нужд могут развлекаться).

                  PS. Бывший ботовод, правда не спамер, а парсер.
                    0
                    Над применением сложных JavaScript анти-спам тестов (трекинг курсора мыши, наличие определенных плагинов в броузере и т.д.) думали не раз, но считаем что это без перспективное направление, т.к. код такого анти-спам теста публичен, т.е. не надежен с точки зрения «взлома» разработчиками ботов.

                    Все остальные пункты так или иначе применяем/применяли, но одного 100% надежного варианта («серебрянной пули») с точки зрения защиты и уровня ложных сработок нет.

                    Относительно сложной структуры фронтенда, то да, это хороший вариант, особенно для самостоятельной защиты сайта от ботов.

                    Спасибо за интересный опыт и развернутый комментарий.
                      0
                      > Над применением сложных JavaScript анти-спам тестов (трекинг курсора мыши, наличие определенных плагинов в броузере и т.д.) думали не раз, но считаем что это без перспективное направление, т.к. код такого анти-спам теста публичен, т.е. не надежен с точки зрения «взлома» разработчиками ботов.

                      Оно хитрых, но глупых и исключительно для ручной премодерации. Ложных срабатываний будет много.

                      > Все остальные пункты так или иначе применяем/применяли, но одного 100% надежного варианта («серебрянной пули») с точки зрения защиты и уровня ложных сработок нет.

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

                      > Относительно сложной структуры фронтенда, то да, это хороший вариант, особенно для самостоятельной защиты сайта от ботов.

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

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое