26 мая 2023 года произошёл массовый дефейс серверов российского национального сегмента сети интернет. Целью настоящей атаки стала система управления контентом Bitrix. Выяснилось, что массовые взломы были осуществлены заблаговременно начиная с 2022 года с использованием известных уязвимостей таких, как CVE-2022-27228. А именно, злоумышленники разместили бэкдор, позволяющий создавать произвольные файлы и запускать команды операционной системы. Около 14:00 26 мая бэкдор получил команду, при помощи которой была заменена главная страница сайта. На форуме разработчиков размещено техническое описание данной атаки.
В подобной ситуации наиболее простым решением послужило бы восстановление файлов взломанного сайта из бэкапа. Но в данном случае устранить проблему таким образом не получится, так как бэкдор уже находится в восстанавливаемой резервной копии. А это предоставляет злоумышленникам возможность произвести атаку повторно. Более того, поскольку уязвимость не была устранена, злоумышленники смогли снова взломать сервер и разместить там уже модифицированный бэкдор.
Целями атак послужили:
- Все версии “1С-Битрикс: Управление сайтом” не получившие последних обновлений.
- Версии “1С-Битрикс: Управление сайтом” получившие последние обновления, но имеющие не закрытые уязвимости.
- Версии “1С-Битрикс: Управление сайтом” получившие последние обновления, но содержащие установленный бэкдор.
Описание атаки
Атака 26-го мая состояла из следующих этапов:
- Был заменён файл
index.php
в корневой директории приложения. - В PHP-скрипты модулей был встроен вредоносный код.
- Был удалён файл
/bitrix/.settings.php
. - Были созданы скрипты агентов, содержащие вредоносный код, либо были модифицированы существующие скрипты.
- Были удалены данные из таблиц базы данных
b_iblock
,b_iblock_element
,b_iblock_element_property
. - Во всех директориях веб-приложения были созданы файлы
.htaccess
. - В директории
/bitrix/admin/
были созданы PHP-скрипты с произвольными именами файлов.
Мероприятия, необходимые к проведению после заражения
В случае успешного заражения узла рекомендуется проведение некоторых мероприятий, направленных на выявление признаков заражения.
“1С-Битрикс: Поиск троянов”
Во-первых, из каталога решений необходимо установить модуль “1С-Битрикс: Поиск троянов” и произвести сканирование. Для чего в панели управления сайта нужно перейти в Настройки
→ bitrix.xscan
→ Поиск и Поиск (бета)
.
Данный модуль произведёт сканирование сайта и покажет найденные подозрительные файлы.
Журналы доступа к веб-серверу
Далее, необходимо проверить факт успешной эксплуатации уязвимости CVE-2022-27228. Проверку можно осуществить при помощи, например, следующей команды:
# grep -E 'POST /bitrix/tools/(html_editor_action.php)|(vote/uf.php)' /var/log/www.access.log* | grep '200'
Аналогичным образом следует произвести проверку POST-запросов с кодом ответа 200
. Нелегитимные запросы могут содержать строки:
bitrixxx
;BX_STAT
;BX_TOKEN
.
Для проверки BX_STAT
лучше применять регулярное выражение BX_STAT[^E]
.
Также, следует произвести проверку запросов к файлам с кодом ответа 200
из нижеприведённой таблицы.
Новые вредоносные файлы
В целях обнаружения признаков заражения узла рекомендуется произвести проверку на наличие на сервере нетипичных файлов. Перечисленные в таблице индикаторы компрометации были выявлены при изучении проведённой атаки.
Имя файла | Директория | Пример команды поиска |
xmlrpcs.php | Используются различные директории | find ./ -name xmlrpcs.php |
inputs.php | Используются различные директории | find ./ -name inputs.php необходимо исключить из поиска файл: /bitrix/modules/sale/lib/delivery/inputs.php |
l.php | /bitrix/src/app/ | find ./ -name l.php |
/bitrix/tools/spread.php | /bitrix/tools/ | |
access.php | /bitrix/modules/iblock/lib/biz | любой из файлов в данной директории |
/bitrix/tools/send_trait_imap.php | ||
/bitrix/tools/.cas.php |
Кроме того, необходимо обратить внимание на файлы с рандомно сгенерированными именами в корневой директории сайта и в директории /bitrix/admin/
. При изучении атаки были выявлены файлы с нетипичными именами, например:
/bitrix/admin/f408f2b7df70.php
/bitrix/admin/8f1c222aae51.php
/2469a41bac71.php
/98826/bfd99.php
Модифицированные файлы
Помимо создания новых файлов злоумышленники могут разместить вредоносный код в существующие файлы. Для поиска признаков такого кода следует произвести проверку исходного кода на наличие следующих строк:
str_rot13
md5($_COOKIE
bitrixxx
eval(base64_decode
BX_STAT
BX_TOKEN
parse_str(hex2bin
iasfgjlzcb
QlhfVE9LRU4=
gzinflate(base64_decode
C.A.S
urldecode(base64_decode(hex2bin
Следует обратить внимание на то, что при поиске строки str_rot13
нужно исключить файлы, в которых используется функция str_rot13()
:
/bitrix/modules/main/classes/general/vuln_scanner.php
/bitrix/modules/socialnetwork/lib/item/logindex.php
/bitrix/modules/main/lib/search/content.php
Также, при поиске строки BX_STAT
рекомендуется использовать регулярное выражение BX_STAT[^E]
. Данная рекомендация исходит из того, что аргумент BX_STAT
присутствует в легитимных файлах.
При анализе атаки были выявлены следующие файлы с содержанием вредоносного кода:
/bitrix/admin/security_file_verifier.php
/bitrix/modules/main/include/prolog_after.php
/bitrix/modules/main/bx_root.php
Поиск необходимо производить не только по файлам приложения (.php), поскольку при атаке используется техника с записью файла .htaccess
для внесения изменений в конфигурацию веб-сервера.
Закрепление доступа
Для устранения последствий атаки необходимо произвести проверку планировщика заданий на предмет наличия нелегитимных задач:
# ls /etc/cron*
Кроме того, рекомендуется проверить функции, вызываемые на странице со списком агентов, на наличие вредоносного кода. Список агентов находится в файле /bitrix/admin/agent_list.php
. Для проведения проверки перейдите в панели управления сайта в Настройки
→ Настройки продукта
→ Агенты
. Вредоносный агент может называться каким угодно образом, но скорее всего будет визуально выделяться.
Также, необходимо произвести проверку других способов закрепления на узле. Например, карта, описывающая типовые способы закрепления в операционных системах Linux, доступна по следующей ссылке. В свою очередь, по данной ссылке доступен цикл статей, в которых изложен поиск техник закрепления, показанных на карте.
Сдерживание
Если по каким-либо причинам отсутствует возможность произвести обновление CMS до актуальной версии, рекомендуется установить блокировку POST-запросов к уязвимым файлам.
Во-первых, для каждого из сайтов необходимо отредактировать следующие файлы:
/bitrix/modules/main/include/virtual_file_system.php
/bitrix/tools/mail_entry.php
/bitrix/tools/vote/uf.php
/bitrix/components/bitrix/sender.mail.editor/ajax.php
/bitrix/admin/site_checker.php
/bitrix/tools/html_editor_action.php
/bitrix/tools/upload.php
А именно, необходимо вставить следующий код перед функцией require_once
:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {header("Status: 404 Not Found");
die();}
Далее, в конфигурацию веб-сервера необходимо добавить запрещающие правила. Ниже приведён пример таких правил для Nginx:
location /bitrix/tools/vote/uf.php {
if ($request_method = POST ) {
deny all;
}
}
location /bitrix/tools/html_editor_action.php {
if ($request_method = POST ) {
deny all;
}
}
Также, необходимо установить запрет на прямые обращения POST-запросами к файлам:
/bitrix/tools/vote/uf.php
/bitrix/tools/html_editor_action.php
Восстановление веб-сервера
Для очистки заражённого веб-сервера и восстановления корректной работоспособности приложения необходимо провести следующие мероприятия:
- Остановка службы веб-сервера.
- Проверка наличия иного запущенного в памяти PHP-процесса с последующей его остановкой (
kill $(ps aux | grep 'php' | awk '{print $2}')
). - Очистка кэша веб-приложения.
- Удаление ранее найденных файлов, содержащих вредоносный код.
- Аналогичным способом проверка резервной копии сайта. При выявлении вредоносных объектов требуется произвести их удаление, либо произвести имплементацию вредоносного кода. Более подробно механизм контроля целостности описан в пользовательской документации “1С-Битрикс”.
- Восстановление файлов сайта из резервной копии.
- Проверка работоспособности всех разделов сайта.
- Обновление PHP и “1С-Битрикс: Управление сайтом” до актуальных версий.
Мероприятия, направленные на защиту веб-приложения
Защита веб-приложения подразумевает использование следующих рекомендаций:
- Перевод сайта на версию PHP 8.
- Обновление “1С-Битрикс: Управление сайтом” до актуальной версии.
- Установка, запуск и настройка согласно рекомендациям модулей “Проактивный фильтр” и “Контроль активности”.
- Проверка веб-приложения при помощи модуля “Сканер безопасности”.
- Закрытие доступа на уровне сервера (.htaccess) к следующим файлам:
/bitrix/tools/mail_entry.php
/bitrix/tools/upload.php
/bitrix/components/bitrix/sender.mail.editor/ajax.php
/bitrix/modules/main/include/virtual_file_system.php
/bitrix/tools/html_editor_action.php
/bitrix/tools/vote/uf.php
- Проверка и запуск ведения журналов событий, связанных с доступом к веб-приложению (access) и ошибками в его работе (error).
Восстановление работоспособности при блокировке сайта
Иногда возникают ситуации, когда сайт может быть заблокирован Национальным координационным центром по компьютерным инцидентам (НКЦКИ) из-за его взлома и незаконного размещения контента, а также использования злоумышленниками для осуществления компьютерных атак на критическую информационную инфраструктуру Российской Федерации. Такие действия нарушают статью 5 Федерального закона № 187-ФЗ «О безопасности критической информационной инфраструктуры Российской Федерации», пункт 5.1 Приказа ФСБ России от 24.07.2018 года № 366 и пункт 9 Правил централизованного управления сетью связи общего пользования, утвержденных постановлением Правительства Российской Федерации от 12 февраля 2020 года № 127.
Следует отметить, что блокировка сайта осуществляется до тех пор, пока НКЦКИ не подтвердит факт удаления контента, нарушающего вышеуказанные нормативные документы. В случае такой блокировки, после устранения нарушений, включая дефейсы, бэкдоры и уязвимости, рекомендуется сообщить об этом команде НКЦКИ.