Почистили сайт от вируса, а через неделю он снова на месте. Знакомая история. Почти всегда виноват веб-шелл: запасной вход, который злоумышленник оставил себе на сайте. Пока он есть, чистка бесполезна. Разберём, что это такое, как он попадает на сайт и как его найти.
Что такое веб-шелл простыми словами
Представьте, что взломщик не только залез в дом, но и сделал себе дубликат ключа. Вы сменили замок на входной двери, но ключ от чёрного хода у него остался. Веб-шелл и есть такой ключ.
Технически это небольшой файл с кодом на сайте. Открыв его в браузере, злоумышленник может делать с сайтом что угодно: читать и менять файлы, загружать новые вирусы, рассылать спам, доставать данные из базы. Иногда весь веб-шелл занимает одну строчку, спрятанную в обычном файле сайта.
Как веб-шелл попадает на сайт
- Через уязвимость в плагине, теме или форме загрузки файлов. Боты находят такие дыры автоматически.
- Через украденный пароль от админки, хостинга или FTP.
- Вместе со взломанным платным плагином, скачанным бесплатно. Лазейка встроена в него заранее.
- Через соседний сайт на том же хостинге, если сайты не изолированы.
Почему вирус возвращается после чистки
Видимый вирус и веб-шелл это разные вещи. Вирус делает «работу»: перенаправляет посетителей, показывает рекламу, рассылает спам. Веб-шелл обеспечивает доступ. Когда вирус удаляют, злоумышленник через веб-шелл просто загружает его снова. Иногда это делает автоматическая задача по расписанию.
Кроме того, веб-шеллов обычно несколько. Нашли и удалили один, остальные продолжают работать.
Признаки, что на сайте есть веб-шелл
- вирус возвращается после удаления;
- в папке с картинками и загрузками лежат файлы с кодом;
- есть файлы со случайными именами или именами, похожими на системные, но с ошибкой в одну букву;
- файлы менялись в странное время, например ночью, когда никто не работал;
- появились незнакомые задачи по расписанию;
- чужие администраторы появляются снова после удаления;
- с сайта уходит спам, а сервер загружен без видимой причины.
Напишите адрес сайта. Найдём все запасные входы и закроем лазейку.
Как найти веб-шелл
Если вы хотите разобраться сами, вот с чего обычно начинают. Перед любыми действиями сделайте копию сайта.
- Сравните файлы движка с оригиналом. Скачайте чистую версию той же CMS и плагинов и сравните. Всё лишнее и изменённое подозрительно.
- Проверьте папки, где не должно быть кода: загрузки, картинки, кэш. Файлы с кодом там почти всегда вредоносные.
- Отсортируйте файлы по дате изменения и посмотрите, что менялось в дни, когда вы ничего не трогали.
- Запустите сканер для сайтов, например AI-Bolit. Он найдёт известные веб-шеллы и подозрительный код, но решение по каждому файлу всё равно принимает человек.
- Посмотрите журналы сервера. Обращения к странным файлам, особенно с отправкой данных, выдают адрес веб-шелла.
Как закрыть лазейку навсегда
- Удалить все запасные входы, а не только найденный первым, и задачи по расписанию, которые возвращают вирус.
- Найти, как веб-шелл попал на сайт, и закрыть эту дорогу: обновить или удалить уязвимый плагин, убрать взломанные плагины.
- Сменить все пароли и ключи: хостинг, админка, FTP, база данных, почта.
- Запретить запуск кода в папке загрузок. Тогда даже загруженный веб-шелл не сработает.
- Настроить слежение за изменениями файлов, чтобы о новой попытке узнать в тот же день.
Мы находим все запасные входы, выясняем, как они появились, и закрываем лазейку. В конце выдаём отчёт простым языком. Стоимость смотрите на главной странице, а что делать в первые часы после взлома, читайте в статье «Сайт взломали».
Частые вопросы
Можно ли найти веб-шелл антивирусом?
Отчасти. Сканеры находят известные веб-шеллы, но злоумышленники постоянно маскируют код: шифруют его, разбивают на части, прячут внутри обычных файлов. Поэтому после автоматической проверки сайт всё равно стоит посмотреть вручную.
Где чаще всего прячут веб-шелл?
В папках с загрузками и кэшем, внутри плагинов и тем, в файлах с именами, похожими на системные. Иногда код прячут в файлах с расширением картинки или в базе данных, откуда он подгружается при открытии страницы.
Я удалил подозрительный файл. Проблема решена?
Скорее всего, нет. Веб-шеллов обычно несколько, а лазейка, через которую их загрузили, остаётся открытой. Пока её не закрыть и не сменить все доступы, вирус будет возвращаться.
Сколько стоит удалить веб-шелл?
Поиск и удаление запасных входов входят в лечение сайта: от 3 000 ₽. Точную цену называем после бесплатной оценки, до начала работ.