Как мошенники подделывают данные Google Analytics и «Яндекс.Метрики»?
CTO Admon Сергей Игнатов и веб-аналитик Андрей Забелич поделились тем, как мошеннические скрипты, не привлекая внимания, подделывают данные Google Analytics и «Яндекс.Метрики»
Компания Admon осуществляет независимый фрод-мониторинг, определяя
уязвимости сайта.
Недавно они рассказали о мошенничестве в EdTech-оферах, в том числе показали
скрипт с сайта крупной онлайн-школы, который поедал органический трафик. К
слову, он же был замечен и у других крупных игроков EdTech-рынка.
Сегодня Admon предлагает подробно рассмотреть алгоритм этого скрипта. Также
они расскажут, почему при его работе Google Analytics и «Яндекс.Метрика» не
позволяют выявить кражу трафика. В таких обстоятельствах веб-аналитики на
стороне СPA-сети или агентства отсылают к метрикам, но Admon просит не
учитывать фродовые конверсии.
Как мы
раскрыли новый массовый способ фрода
В определенный момент наше решение для автоматизированного поиска
запрещенного контекста на бренд начало маркировать платную рекламу клиента как
фрод. Сначала подумали, что это баг. Но проверка показала, что при переходе по
контекстной рекламе клиента из ниоткуда появляются метки CPA-партнеров.
Процесс привязки CPA-метки другого партнера
При дальнейшем анализе выяснилось, что такое воровство трафика происходит не
только для CPC-рекламы клиента, а в равной мере для всех каналов привлечения на
сайт.
Подстановка фродовых меток происходит независимо от устройства пользователя,
исходного пути привлечения, времени суток и погоды за окном. Это навело на
мысль, что причина кроется во вредоносном коде на самом сайте
рекламодателя.
Так команда обнаружила обфусцированный (зашифрованный) скрипт в коде сайта.
После деобфускации стало ясно, что он выборочно перетирает куки и отправляет в
системы аналитики поддельные данные.
Дисклеймер: дальше будет глава не для слабонервных. Если вы не хотите
перегружать голову техническим разбором вредоносного кода, сложными терминами и
смотреть на мир глазами мошенника, рекомендуем скроллить до коротких
выводов.
Как
подделывают аналитику
Посмотреть на сам скрипт можно через web.archive.org. Это далеко не
последняя версия, но общий смысл работы алгоритма не изменился.
Изначально код нечитаем, что явно осложняет его обнаружение и
сохраняет от кражи авторскую задумку мошенников.
Прочитать исходный код (провести «деобфускацию») при помощи
OpenAI ChatGPT не получилось
Для декомпиляции используем библиотеку shift-ast и труд
опытного программиста.
В середине находим паттерны кода «Яндекс.Метрики», продолжаем
копать дальше и восстанавливаем логику работы. Чтобы не повторяться с
предыдущей статьей, рассмотрим перехват трафика у другой онлайн-школы от лица
мошенников.
Шаг 1: собираем
метки
Скрипт отдает адрес сайта рекламодателя внешнему домену
g.nzeaner.com, тот
возвращает в ответ финальный URL, то есть тот, в котором будут проставлены все
необходимые UTM-метки. Без этих UTM-меток клик не засчитается
партнеру.
Внешний домен g.nzeaner.com реализует на своем сервере все
клики, как будто все редиректы прошли в браузере пользователя. Это нужно для
того, чтобы пользователь и антифрод не заметили подмены ссылки.
Шаг 2: чистим
куки аналитики
«Яндекс.Метрика» и Google Analytics присваивают пользователю
уникальный числовой ID, по которому выстраивают его путь. Скрипт затирает эти
самые ID и на их место ставит рандомную комбинацию чисел.
Никакой проверки со стороны средств аналитики нет. Новый ID
означает, что все предыдущие действия пользователя отсечены. Системой аналитики
человек воспринимается как новый.
Шаг 3:
формируем URL
К чистому адресу, по которому заходил пользователь, добавляют
UTM-метки из шага 1. Получается, будто пользователь пришел к рекламодателю по
партнерской ссылке.
На долю секунды этот адрес появляется в адресной строке, но
содержимое страницы не обновляется, поэтому пользователь ничего не
замечает.
Шаг 4:
добавляем логи для Tilda
Так как кругом много лендингов на Tilda, фродеры создают
событие просмотра страницы. Видимо, для того, чтобы и статистика отображалась
корректно.
Шаг 5:
перезаписываем аналитику
Помните, в самом начале мы увидели часть кода «Яндекс.Метрики»?
Так вот, на этом шаге скрипт заново прогоняет коды аналитики, чтобы они
зафиксировали пользователя с новым ID с шага 2, который якобы перешел по URL с
шага 3.
Нюанс: если до этого момента клиент был на сайте и не попадался на
скрипт, то эти действия останутся в статистике. Но с момента начала работы
скрипта такой пользователь логируется как новый. Поэтому фродеры вредят вашему
бюджету дважды — не только присваивая органику, но и сбивая
ретаргетинг.
Шаг 6:
откатываем адрес сайта
В поисковой строке пользователя собранный на шаге 3 адрес с
проставленными UTM-метками меняется на изначальный. Как и писали ранее, между
шагами 3 и 6 проходит меньше секунды. Заметить подмену в адресной строке
нереально.
Шаг 7: чистим
куки сайта
Скрипт затирает куки на сайте, чтобы случайно не нарваться на
скрытый счетчик посещений, который может выявить смену ID пользователя.
Также фрод-скрипт сбивает аналитику всех подключенных сервисов,
которые собирают данные о действиях пользователей. Например, carrotquest.io
нужен, чтобы повышать частотность покупок одним клиентом, но в сложившихся
условиях работает некорректно.
В консоли видим ошибку, что куки carrotquest.io были
удалены
Шаг 8:
редактируем куки сайта
В куки сайта помещаются данные о UTM-метках, они нужны, чтобы
подтвердить конверсию у трекинговой системы CPA-сети.
Шаг 9: вызываем
трекер CPA-сети
Скрипт вызывает трекер CPA-сети. Запрос в данном случае прямой, то
есть те люди, которые писали скрипт, знают правила и порядок обращения к
CPA-сети. Такая информация в открытом доступе отсутствует.
Так как это один из ключевых шагов, мы решили
вновь свериться с мнением ChatGPT
Возможно, мошенники когда-то работали на конкретную
сетку или знают тех, кто не так давно трудился над алгоритмами трекинга. По
нашей оценке, решить такую задачу перебором всех возможных вариантов запросов
довольно трудно.
И еще раз,
если коротко:
Вредоносный код на сайте забирал конверсии из органики, платной
рекламы и у честных партнеров.
Создавалась иллюзия стабильного роста CPA-канала.
Мошеннический скрипт абсолютно не привлекал внимания: тяжело
заметить небольшое подъедание конверсии каждого канала в отдельности на фоне
естественного роста.
В системы аналитики отправлялись фальшивые данные.
Обнаружить код и понять, что именно происходит на сайте, удалось,
только заручившись поддержкой опытных программистов.
Как
мошеннический скрипт появился на сайте
Вредоносный код попадает на сайт через уже установленные на нем
контейнеры, к которым имеет доступ интегратор или отдельные партнеры.
Установив на сайт трекер партнерской сети или скрипт ретагретинга,
можно с удивлением обнаружить, что код в контейнере то и дело меняется и,
помимо заявленных функций, совершает целую цепочку странных вызовов,
результатом которых становится присвоение фродерам конверсий из других
каналов.
Предоставляя доступ к коду сайта третьим лицам, рекламодатель, по
сути, открывает дверь к любым манипуляциям с трафиком и статистикой на своем
сайте.
Как возникает
конфликт
Для рекламодателя за качество трафика, как правило, отвечает один
подрядчик, он же носит отчеты. Кстати, подобная ситуация может сложиться не
только в CPA-канале. Например, партнер по CPM-рекламе может скриптом
эмулировать нужные события, чтобы попасть в нужные KPI.
Контроль фрода также лежит на партнере, или им вовсе никто не
занимается. Сверка данных с аналитикой Google Analytics и
«Яндекс.Метрикой» не покажет проблему, так как вредоносный код на сайте
эффективно модифицирует их статистику.
Менеджеры и владельцы сайтов могут принимать
желаемое за действительное
Если рекламодатель все-таки обращается к нам или наши
специалисты в процессе мониторинга актуальных способов фрода находят некоторый
процент мошеннических конверсий, возникает спор. Далее как в анекдоте: «Все
хорошо, сейчас будем драться».
Как не платить
за органический трафик
Гарантировать безопасность стороннего кода можно
только полной его проверкой. Важно разбирать все скрипты, которые вы
устанавливаете себе на сайт. Благодаря этому и регулярным проверкам с помощью
внешних инструментов вы будете знать наверняка, как и когда безобидный код
ретаргетинга мутирует в зловредный фрод-скрипт.
Сделать это можно силами собственной IT-команды, но
тогда вам понадобится свой отдел мониторинга.
Полагаться на отчеты «Яндекс.Метрики» и Google
Analytics можно только в совокупности с антифрод-системой. Тогда же все
сторонние сервисы будут работать корректно и выдавать действительно полезную
информацию о запущенных кампаниях.
Скажем прямо, случай не единственный. Подобные
фрод-скрипты месяцами паразитируют на десятках сайтов. Надеемся, что этот текст
позволит устранить тщательно скрытые помехи на пути к прозрачной статистике и
чистому трафику!