Угон мобильного трафика: как вычислить скрытый редирект, удалить вирус и вычистить шеллы на сайте
В десктопном браузере ресурс открывается безупречно, в панели вебмастера нет предупреждений, а показатели PageSpeed радуют глаз. Но стоит реальному пользователю кликнуть по ссылке из поисковика со смартфона — его моментально швыряет на сомнительные казино, лендинги с подписками или страницы с фейковым требованием обновить браузер. Еще более изощренный сценарий — мобильный кликджекинг, когда страница внешне чистая, но первый же тап в любой точке экрана перехватывается прозрачным оверлеем и открывает рекламную вкладку.
Владелец сайта обычно узнает о проблеме последним: когда Яндекс вешает плашку «Сайт может угрожать безопасности», Google обваливает мобильный трафик, а клиенты обрывают форму обратной связи с жалобами.

Почему мобильный редирект так сложно поймать вебмастеру
Авторы вредоносных скриптов давно не делают топорных вирусов, ломающих верстку для всех подряд. Вредонос маскируется многослойной фильтрацией:
- Проверка User-Agent: перенаправление срабатывает исключительно для мобильных платформ (Android, iPhone).
- Анализ Referer: редирект срабатывает только при переходе из поисковой выдачи (Яндекс, Google) или соцсетей. Прямой переход по ссылке или через закладку откроет обычный чистый сайт.
- Фильтрация по Cookie и IP (кулдаун): жертву редиректит ровно один раз за сутки. Если вебмастер пытается повторить путь пользователя со своего телефона, скрипт ставит метку в куки или сверяет IP по базе и отключается.
- Игнорирование авторизованных админов: если в браузере висит активная сессия входа в CMS (например,
wordpress_logged_in), вирус спит.
Как воспроизвести заражение без гаданий
Чтобы препарировать проблему, нужно сымитировать поведение мобильного посетителя в «стерильной» среде без авторизаций и сохраненных кэшей:
- Запрос через терминальный cURL: самый надежный способ проверить серверный ответ без выполнения клиентского JS:
curl -I -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15" -e "[https://yandex.ru/](https://yandex.ru/)" [https://vash-sayt.ru/](https://vash-sayt.ru/)Если в заголовках ответа вы видите статус 301 или 302 с внешним адресом в полеLocation— редирект отрабатывает на уровне сервера (PHP или .htaccess). Если сервер отдает статус 200 OK — перехват идет на стороне фронтенда через JS-инъекцию или прозрачный iframe. - Режим инкогнито в DevTools: откройте панель разработчика Chrome (F12), включите эмуляцию мобильного устройства, перейдите на вкладку Network, выставьте флажок «Preserve log» и очистите кэш. Это позволит зафиксировать всю цепочку перенаправлений до того, как страница сменится.
Где прячутся шеллы: пошаговый поиск в кодовой базе
Вредоносная связка обычно состоит из точки входа (веб-шелла или бэкдора) и исполняемого скрипта, подсовывающего редирект.
- Файлы конфигурации веб-сервера (.htaccess / nginx.conf):Проверьте корень сайта и подкаталоги на скрытые файлы
.htaccess. Хакеры любят сдвигать вредоносные правила на 200–300 пустых строк вниз, чтобы они не бросались в глаза при открытии файла. Особое внимание обратите на директивыRewriteCond %{HTTP_USER_AGENT}и флагиauto_prepend_fileилиauto_append_file, которые подключают левый PHP-скрипт ко всем файлам сайта в фоновом режиме. - Поиск недавно модифицированных файлов:Если сайт начало штормить на днях, отследите изменения через SSH:
find /var/www/site/ -type f -mtime -5 -name "*.php"Команда выведет все PHP-файлы, правившиеся за последние 5 суток. - Поиск шеллов и сигнатур обфускации:Шеллы прячут с помощью динамического выполнения закодированных строк. Запустите в консоли сканирование по регулярным маркерам:
grep -rnEI "eval\(base64_decode" /var/www/site/grep -rnEI "gzinflate\(base64_decode" /var/www/site/grep -rnEI "chr\([0-9]+\)\.chr\(" /var/www/site/grep -rnEI "(assert|create_function|preg_replace.*\/e)" /var/www/site/ - Инъекции в базе данных:Кликджекинг и скрытые JS-редиректы часто вшивают в таблицы контента (
wp_posts,wp_options). Выгрузите базу или сделайте SQL-запрос по ключевым словам:SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%fromCharCode%' OR post_content LIKE '%window.location%' OR post_content LIKE '%eval(%';Ищите подозрительные внешние скрипты с доменов-однодневок или скрытые вызовы через сервисы сокращения ссылок.
Полный алгоритм зачистки и ликвидации угрозы
Удалить зараженный файл недостаточно — оставленный в системе бэкдор вернет вирус на место в течение пары часов. Действуйте по протоколу:
- Проверьте планировщик задач (Cron): Откройте серверный
crontab -lи cron-задачи внутри CMS. Часто там прописана задача-«реаниматор», которая раз в 30 минут обращается к стороннему серверу и восстанавливает удаленный вредоносный код. - Переустановите ядро CMS и плагины: Не пытайтесь вручную вычищать системные папки движка. Скачайте чистый дистрибутив вашей версии с официального репозитория и перезалейте системные папки начисто, сохранив только конфигурационный файл и папку медиафайлов.
- Аудит директории загрузок (Uploads): В папках с изображениями и документами не должно быть исполняемых скриптов. Выполните проверку:
find /uploads/ -type f -name "*.php*". Любой найденный там PHP-файл — это внедренный шелл, подлежащий немедленному удалению. - Смена всех доступов и ключей: После зачистки файлов обязательно смените пароли к базе данных, FTP/SSH, админ-панели и сгенерируйте новые соли безопасности (Security Salts) в конфигурационном файле, чтобы сбросить все активные сессии.
Как закрыть дыры от повторного взлома
Чтобы сайт не превратился в постоянную донорскую площадку для чужого арбитража, закройте типовые векторы атак:
- Запретите выполнение PHP-скриптов в директориях загрузок (
/uploads/,/images/) на уровне Nginx или Apache. - Отключите штатный редактор файлов тем и плагинов в панели управления, прописав в конфигурации:
define('DISALLOW_FILE_EDIT', true);. - Настройте заголовок безопасности
Content-Security-Policyс ограничением источников для скриптов (script-src) и полным запретом на открытие сайта внутри фреймов (frame-ancestors 'none'), что полностью нейтрализует мобильный кликджекинг. - Своевременно обновляйте плагины и удаляйте заброшенные расширения: в 90% случаев мобильные редиректы проникают через старые уязвимости в популярных слайдерах, формах обратной связи и плагинах резервного копирования.
