Это спасет вам огромное количество нервов, времени, а иногда и ВЕСЬ ваш проект.
Тревога, пустые страницы сайта!
Итак, мы имеем виртуальную машину VM Bitrix с тремя созданными в ней сайтами. Два сайта - основные, для которых покупаются продления решений Аспро и продления системы 1С-Битрикс. И третий сайт уже очень давно был заброшен, но оставлен на домене "на будущее", когда можно будет им заняться и полностью его обновить.И вот это будущее и настало, но в совсем ином свете :)
Звоночком сначала послужило то, что на сайтах перестали открываться новости и блоги, потихоньку и остальные страницы. Т.е. были пустые страницы, открывался только шаблон (или был вообще закрыт доступ). Оставалась работать только главная страница сайта и админка (не полностью).
На этом этапе уже попросили посмотреть в чем делом меня и я начал разбираться.
Спойлер: ожидаемо, сайтом, через который пошло заражение всех, оказался проект, который как раз был не обновлен и скорее всего был заражен через старые уязвимости. Поэтому тут сразу совет, если у вас на одной виртуалке много сайтов, обновляйте все. Т.к. сервер работает от пользователя bitrix, который имеет доступ ко всем сайтам.
Как проявляют себя эти вирусы
Не буду вдаваться в подробности post-запросов и как работают эти вирусы, расскажу о том, что можно заметить:- затирается главный файл .htaccess и в код главной страницы index.php в начало добавляется вредоносный код;
- при попытке изменения .htaccess или index.php, они буквально через секунду снова перезатирались;
- во ВСЕХ директориях сайта, который был основным зараженным, создались файлы .htaccess, запрещающие вам доступ чезер браузер к директориям;
- создаются файлы в директориях сайта с вредоносным кодом и рандомным названием;
- иногда встраивается вредоносный код в файлы;
Этапы очистки сайта от вируса
1. Первым делом закрываем сайты от внешнего доступа и удаляем все файлы .htaccess из директорий, что вернет нам доступ к ним. Это вам поможет сделать команда в терминале:find . -type f -perm 0444 -name ".htaccess" -exec echo rm {} \;
Эта команда выводит все пути файлов .htaccess в текущей директории и всех поддиректориях. Это нужно чтобы проверить все ли правильно, после чего в команде удаляем echo и запускаем команду снова. Она уже удалит все эти файлы. В моем случае было несколько тысяч таких файлов на сайте.
2. Пробуем зайти в админку. Тут или пустит или не будет работать вся админка полностью. Заходим в раздел "Агенты" и находим агент с подозрительным кодом (будет много зашифрованных команд в несколько строк). Удаляем этот Агент. В моем случае смог только посмотреть id этого агента и удалил его через api bitrix: https://dev.1c-bitrix.ru/api_help/main/reference/cagent/delete.php
Этот вредоносный агент как раз и отвечает за то, чтобы постоянно обновлять файлы главной страницы и .htaccess на главной.
Такой агент выглядит примерно вот так:
3. Проверяем и пробуем заменить основной файл .htaccess на свой. Итог: все-равно перезаписывается.
Пошел искать задачи в кроне, мониторить сам сервер, но скрипты дальше сайтов залезть не могут. И все оказалось намного банальнее. Задача была запущена в фоне и даже после удаления агента продолжала зацикленно выполняться. Перезагружаем сервер и теперь уже меняем файл .htaccess и удаляем вредоносный код в начале файла index.php.
4. Ставим модуль поиска троянов: https://marketplace.1c-bitrix.ru/solutions/bitrix.xscan/
И прогоняем весь сайт. Просматриваем все подозрительные файлы и удаляем все созданные вирусом файлы + чистим от вредоносного кода, если такой будет внедрен в какие-то файлы кроме главной страницы. На этом этапе вам нужно понимание кода php и базовые знания безопасности, потому что будет показывать очень много файлов не вредоносных, а из сторонних модулей или даже из ядра Битрикса.
5. Перед открытием сайта перепроверьте все несколько раз. Если уверены что почистили все, можете запускаться.
ИТОГО
На мониторинг ситуации, разборы, очистку всех сайтов, проверку и тд было затрачено примерно 10 часов. Что на данный момент аналогично 500 белорусским рублям. Но дело даже не в деньгах, будь вирус посерьезнее, заказчик мог бы лишиться проектов не имея резервных копий! Или пришлось бы восстанавливать сайт в совсем тяжелой ситуации, не просто очищая его, а и восстанавливая функционал.Избежать такой ситуации можно было просто обновляя 1С-Битрикс и настроив модуль проактивной защиты. И, конечно, восстановить сайты можно было бы за полчаса через резервные копии.
Если не покупаете продления для Битрикса у нас, то хотя бы делайте копии! :)