Первый час: что сделать до того, как что-то удалять
Первая реакция на найденный малварь - начать удалять файлы. Не надо. Заражённые файлы - это улика, через что именно зашёл злоумышленник, и если вы уничтожите след, то вычистите сайт сегодня, а через неделю будете чистить снова.
Сначала четыре вещи:
- Всё равно сделайте бэкап - файлы и базу, вместе с заражением. Если чистка пойдёт не так, это единственный путь назад.
- Запишите даты изменения. Отсортируйте файлы по времени правки. Самый старый изменённый файл обычно ближе всего к точке входа.
- Пока не меняйте пароли. Меняйте их после удаления бэкдоров, иначе вы просто отдадите злоумышленнику новые.
- Включите режим обслуживания, если сайт отдаёт спам или редиректит живых посетителей.
Убедитесь, что сайт действительно взломан
Не всякий странный симптом - малварь. Конфликт плагинов, сломанный кэш или просроченный сертификат выглядят не менее тревожно. Три проверки быстро скажут, есть ли проникновение:
1. Найдите в Google site:вашдомен.ru. Это покажет, что проиндексировано, а не то, что рисует ваш браузер. Страницы, которых вы не создавали - японские иероглифы, названия аптек, казино, случайные строки в адресах - означают внедрённый контент.
2. Запросите свою же страницу как Googlebot. Большая часть SEO-спама работает через клоакинг: он отдаётся только тогда, когда user agent похож на поискового робота. Страница, чистая в Chrome и спамная для Googlebot, - характерная подпись SEO-спам-заражения.
3. Откройте Search Console. Отчёт «Проблемы безопасности» называет проблему прямо. В отчёте об индексировании будет видно резкий скачок числа страниц, если их внедрили.
Где искать заражение
Почти на каждом скомпрометированном WordPress малварь прячется в четырёх местах:
- Файлы ядра. Сравните
wp-adminиwp-includesс чистой копией той же версии WordPress. Всё, что отличается, положил туда не WordPress. - Плагины и темы. Тот же метод - переустановить из официального источника, а не чинить отдельные файлы. Особое внимание плагинам, которые вы отключили, но не удалили: PHP-файлы отключённого плагина по-прежнему доступны по HTTP.
- Папка uploads. В
wp-content/uploadsдолжны быть медиафайлы и ничего больше. Файл.phpтам - это бэкдор, без исключений. - mu-plugins. Папка
wp-content/mu-pluginsподгружается автоматически и в списке плагинов не появляется. Злоумышленники её любят именно потому, что большинство владельцев сайтов туда ни разу не заглядывали.
Кроме файлов проверьте базу. Внедрённые скрипты обычно живут в таблице wp_options, а чужие администраторы - в wp_users.
Как удалить по-нормальному
Надёжная последовательность, именно в таком порядке:
- Замените ядро WordPress свежескачанной идентичной версией.
- Удалите все плагины и темы, затем поставьте только те, которыми реально пользуетесь, из официального репозитория. Плагин, заброшенный автором, переустанавливать не нужно.
- Удалите каждый
.phpиз папки uploads. - Очистите
mu-plugins, если вы туда ничего не клали намеренно. - Проверьте
.htaccessиwp-config.phpна внедрённые правила и include. - Удалите незнакомые администраторские аккаунты, остальным сбросьте пароли.
- Смените соли в
wp-config.php- это обнулит все существующие сессии. - Смените пароль базы данных и доступы к хостингу и FTP.
Закройте за собой дверь
Чистка без харднинга - временный ремонт. Что предотвращает подавляющее большинство повторных заражений:
- Обновляйте WordPress, плагины и темы - абсолютное большинство проникновений эксплуатируют уязвимость, закрытую патчем много месяцев назад.
- Запретите выполнение PHP в
wp-content/uploads. - Включите двухфакторную аутентификацию на всех администраторских аккаунтах.
- Уберите страницу входа с
/wp-admin. - Плагины, которыми не пользуетесь, удаляйте, а не отключайте.
- Держите бэкапы не на том сервере, который они бэкапят.
Наш гид по защите WordPress разбирает каждый пункт подробно.
Почините то, что осталось в Google
Этот шаг пропускает большинство инструкций, а именно он решает, вернётся ли трафик.
Удаление малвари с сервера не удаляет спам-страницы из индекса Google. Эти адреса остаются в индексе, пока Google не переобойдёт их и не обнаружит, что их больше нет. Нужно:
- Перегенерировать sitemap, чтобы в нём были только настоящие страницы.
- Убрать из Search Console любого пользователя или владельца, которого вы не добавляли - злоумышленники регулярно подтверждают себя, чтобы ускорить индексацию своего спама.
- Отправить запросы на удаление внедрённых адресов.
- Подать запрос на повторную проверку, если наложены меры вручную, с описанием того, что было скомпрометировано и что вы изменили.
Рассчитывайте, что восстановление займёт недели, а не дни. Сайты, вычищенные быстро, обычно возвращаются на прежние позиции; сайты, спамившие месяцами, иногда оседают чуть ниже.
Если сайт заражается снова
Малварь, вернувшаяся через пару дней после чистки, означает, что что-то осталось. Обычные виновники: бэкдор в каталоге, который вы не проверили, задача в wp_cron, переустанавливающая пейлоад, второй администраторский аккаунт, или - на шаред-хостинге - другой заражённый сайт под тем же аккаунтом, который пишет в ваш.
На этом этапе чистка файл за файлом перестаёт быть выгодной. Быстрее пересобрать: чистая установка WordPress, свежие копии плагинов и контент, перенесённый только после проверки.
Когда стоит передать
Вычистить взломанный WordPress самому реально, если заражение свежее, ограничено одним плагином, а сайт небольшой. Это перестаёт быть реальным, когда сайт зарабатывает и лежит, когда уже наложены меры вручную, или когда вторая чистка не помогла.
Мы делаем это как услугу: чистка взломанного WordPress-сайта. Первичная проверка бесплатна - пришлите адрес, и мы скажем, что нашли, независимо от того, наймёте вы нас или нет.
Если спам-страницы на вашем сайте на японском, начните с нашего разбора Japanese keyword hack - там эта конкретная атака рассмотрена подробнее.