Условия для срабатывания скрытых редиректов и способы их обнаружения

Алгоритм срабатывания современных скрытых редиректов на сайте несколько сложнее, чем просто “перенаправить посетителя с мобильным браузером на адрес http://…”. Условия, при которых редирект себя проявит, сложны и витиеваты. Все проверки внутри кода направлены не столько на сегментацию посетителей и отсеивание ненужной аудитории, сколько на маскировку и увеличение “срока жизни” вредоносного кода на сайте: чем позже его заметят, тем больше посетителей будет перенаправлено с зараженного сайта.

Рассмотрим достаточно свежий образец вредоносного редиректа и условия, при которых он наступает:

  1. В коде редиректа проверяется, не является ли посетитель ботом поисковой системы. Авторы вредоноса не хотели бы, чтобы их обнаружили антивирусы поисковых систем. Для ботов он не сработает (даже если боты умеют исполнять javascript).
  2. Проверяется число страниц, которое посетил на данном сайте пользователь. То есть редирект не сработает при первом же заходе, сначала накопится история, и как только превысит некий порог (например, 2-3 посещенных страницы), редирект перенаправит посетителя на сторонний ресурс.
  3. Одному посетителю редирект сработает один раз. При этом флаг выставляется не в куки, а в localStorage браузера, поэтому даже при чистке кукисов редирект второй раз не сработает.
  4. Редирект не сработает для авторизованных администраторов wordpress (очевидно, редирект нацелен на воровство трафика с сайтов на этой CMS).
  5. Код редиректа загружается динамически через ajax (XHR). То есть когда нужно выполнить перенаправление, отсылается запрос к одному из “зашитых” адресов, и результат, который вернулся, используется для перенаправления.
  6. Даже если все условия выполнятся, посетителя перенаправит не сразу, а спустя 10 секунд нахождения на странице.

А теперь представьте, что должен уметь веб-сканер, чтобы обнаружить данный редирект автоматически: выполнять javascript, поддерживать XHR запросы, ускорять таймер, работать с куки и localStorage, менять свойства window объектов и пр.

Хорошая новость в том, что ReScan.Pro все это уже делает. Подобные редиректы он легко детектирует.