Мы используем файлы cookie для обеспечения работоспособности сервиса, улучшения навигации и маркетинговых активностей Serpstat. Нажимая "Принять и продолжить", вы соглашаетесь с нашей Политика конфиденциальности

Сообщить об ошибке

Отменить
13906 2
SEO Читать 15 минут

Как сканировать сайты на вирусы

Как сканировать сайты на вирусы
Иллюстрация: Наталья Сорока
Автор статьи о сканировании сайтов на вирусы
Михаил Круговой
TechOps Engineer в HOSTiQ.ua
Почти каждый владелец сайта сталкивался с проблемой, когда сайт внезапно начинает тормозить или вообще перестает работать. Если вы исключили DDoS-атаку, изменения в коде и содержимом сайта, изменения на стороне хостинг-провайдера, — похоже, что на сайте завелись вирусы.

Такая ситуация может привести к наложению санкций со стороны поисковиков. В этой статье я расскажу, какие бывают вирусы, как они попадают на сайты и как с ними бороться.

Вредоносный код: виды и принцип работы

Вредоносный код на сайтах обычно делят на две категории:
1
Эксплоиты. Они эксплуатируют уязвимости в программном обеспечении, чтобы попасть на сайт. Когда внедряются, выполняют незапланированные действия — например, рассылают спам.

В случае с сайтами, написанными на PHP, эксплоит чаще всего — PHP-код, который почти всегда зашифрован. Эксплоиты на зараженных сайтах встречаются практически всегда.
2
Вирусы и трояны. Это могут быть классические вирусы для Windows и программные модули для Linux. Они встречаются на сайтах намного реже эксплоитов. В последнее время наиболее часто встречаемые нами модули/программы для Linux — это модули для майнинга.
Народная примета системных администраторов: «нашел вирус — ищи эксплоит». Это логично, так как вирус каким-то образом попал на сайт.

Что делает вредоносный код на сайтах

  • Рассылает спам. Кроме того, что таким образом расходуются ресурсы системы, это обычно не влияет на работу сайта.

Но проблема в том, что если с сайта начинает идти спам, почтовые системы, такие как Gmail, Outlook, Yahoo! начинают воспринимать любые сообщения с сайта как спам.

  • Занимается фишингом. Код крадет данные пользователей — например, номера кредитных карт.

Это может делать страница злоумышленника, которую он разместил на вашем сайте. Это грозит блокировкой сайта на уровне браузера — будет показываться красная страница, и на сайт никто не сможет зайти. Другие последствия: снижение рейтинга сайта в поисковой выдаче, сайт в черном списке Google.
Сайт заблокированный браузером
Пример заблокированного сайта
  • Распространяет вирусы для ПК.

  • Занимается майнингом. Злоумышленник внедряет код, который использует ресурсы сайта. Они исчерпываются, и сайт перестает работать.

  • Участвует в ботнете. У сайта возникают все те же проблемы, что при фишинге или майнинге, но сервер может еще и атаковать другие сайты.

Как вредоносный код попадает на сайт

Типичный сайт работает на связке технологий LAMP: Linux+Apache+Mysql+PHP. Согласно официальной статистике, чаще всего это CMS на PHP — WordPress или Joomla!

В каждой из этих CMS есть уязвимости, через которые вредоносный код может попасть на сайт. Уязвимости для WordPress можно посмотреть на сайте WPScan Vulnerability Database, для Joomla! — Joomla! Vulnerable Extensions List.

Кроме этого, вредоносный код может загрузить на сайт сам разработчик или администратор сайта. Это происходит или по небрежности: например, администратор использует пиратских версии CMS/тем/плагинов, не изучив досконально их код. Или человек делает это со злым умыслом: например, клиент не расплатился с разработчиком, и разработчик мстит.

Масштабы проблемы: взгляд со стороны хостинга

Мы собрали статистику по проблеме вредоносного кода на одном из наших серверов. За 45 дней на сервере во время ежедневного автоматического сканирования было просканировано более 3 млн файлов и найдено около 5 тыс единиц эксплоитов. Среди них не было ни одного, который бы был чистым вирусом:
Графике результатов анализа сайта на вирусы
Может показаться, что 5 тысяч эксплоитов на фоне более 3 миллионов файлов — это немного, меньше 1% зараженных файлов. Но проблема в том, что даже одного эксплоита достаточно, чтобы сайт работал на злоумышленника.

Также по нашим наблюдениям, там, где появился один файл с вредоносным кодом, там их скоро становится больше. Поэтому типичный зараженный сайт содержит 10-20 и более файлов с вредоносным кодом. Перед тем, как просканировать сайт на вредоносный код, нужно обратить внимание на такие характеристики сканера:

  • Размер базы сигнатур вредоносного кода;
  • Частота обновления базы.

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

Виды сканеров

Перечислим категории сканеров для поиска вредоносного кода на сайте:
1
Онлайн-сканеры: например, Rescan.pro, Sucuri, PCrisk.

Преимущества: легко пользоваться.
Недостатки: ограниченные возможности сканирования и меньший процент выявления вредоносного кода.
2
Сканеры-скрипты PHP: например, Ai-Bolit, phpMussel.

Преимущества: могут обнаружить больше вирусов, чем онлайн-сканеры, так как код сканируется в той же среде, что и сайт.

Недостатки: в зависимости от сервера могут применяться ограничения для выполнения PHP. Поэтому возможны условия, когда скрипт не сможет выполняться корректно.
3
Специальные сканеры сайтов/эксплоитов: например, LMD, или Linux Malware Detect и CXS, или ConfigServer eXploit Scanner.

Преимущества: это инструменты, которые выполняются на уровне сервера и не ограничены интерпретатором PHP. Поэтому они могут работать надежнее и быстрее, а также лучше находят вредоносный код. Кроме этого, у коммерческого CXS есть эвристическое сканирование, которое выявляет подозрительные объекты.

Недостатки: плохо определяют вирусы. CXS в этом полагается на бесплатный ClamAV, у которого небольшие базы вирусных сигнатур. Кроме этого, оба сканера — консольные утилиты. Поэтому чтобы их применять, нужна подготовка.

Эти инструменты очень редко подходят для использования на веб-хостинге. Идеальный вариант использования обоих — на VPS или выделенном сервере.
4
Гибридные или облачные сканеры: например: CloudScan.Pro.

При таком сканировании файлы сайта перемещаются в облако компании, предоставляющей услугу, и анализируются в нем. К сожалению, мы не смогли найти облачные сканеры, которые можно было бы бесплатно протестировать.
5
Специализированные сканеры вирусов: например, Comodo/Kaspersky/ClamAV. Это ПО, которое принято называть и считать антивирусом. Эти программы обычно установлены на большинстве ПК с Windows.

Преимущества: распространены, хорошо обнаруживают вирусы.
Недостатки: очень плохо обнаруживают эксплоиты.
6
Агрегаторы обработки файлов: например, Virustotal.

Этот инструмент агрегирует обработку файлов различными антивирусами.

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

Поэтому мы сторонники того, чтобы сайт лечил разработчик или команда, в которую входит разработчик. Разработчик знает, как работает сайт, и может исправить проблемы, вызванные перемещением файлов с функциональным кодом в карантин.
#1

Для новичков: онлайн-сканеры и антивирусы ПК

Сканирование с помощью онлайн-сканеров

    В качестве примера мы взяли зараженный сайт и использовали бесплатные или условно бесплатные программы для сканирования вирусов. Результаты сканирования онлайн-сканерами Sucuri, ReScan.pro и PCrisk:
    Анализ сайта с помощью онлайн-сканеров Результаты сканирования сайта используя ReScan Анализ сайта в PCrisk
    Несмотря на легкость, у онлайн-сканирования есть недостатки:

    • Как видно на скриншотах, онлайн-сканер обнаруживает далеко не все образцы вредоносного кода.
    • Онлайн-сканеры не могут лечить сайты.

    Мы рекомендуем использовать онлайн-сканирование как экспресс-тест. Если онлайн-сканер нашел вредоносный код, дальше можете проверять сайт и лечить его с помощью более продвинутых программ.

    Сканирование с помощью антивирусов ПК

    Чтобы проверить сайт с помощью антивируса на ПК:
    1
    Загрузите на свой компьютер код сайта. Если можете, скачайте сайт архивом — вирусы не смогут повредить ваш ПК, находясь в архиве. У большинства хостеров для этого есть менеджер файлов.

    Альтернативный способ загрузить файлы на ПК — использовать FTP или SFTP-клиент для подключения к серверу.
    2
    Дамп базы данных сайта. Обычно вы можете получить дамп при помощи утилиты phpMyAdmin. Она есть на большинстве хостингов.

    Бывают случаи, когда вредоносный код находится в базе данных и извлекается оттуда скриптом хакера. Такое встречается редко. Но несмотря на редкость, дамп базы нужно проверять.
    Результаты сканирования того же зараженного сайта при помощи сканера Windows Defender:
    Анализ сайта с помощью Windows Defender
    Как правило, в базах антивирусов для ПК нет сигнатур, которые определяют эксплоиты, используемые на сайтах. Несмотря на это, рекомендуем использовать антивирус ПК и как экспресс-тест, и как средство первичного лечения.

    Если антивирус нашел вредоносный код, используйте его для лечения сайта. После этого проверяйте сайт и лечите его специализированными сканерами для поиска эксплоитов.

    Если объем сайта небольшой — до 256 MB, можете воспользоваться агрегатором VirusTotal. Использовать его так же просто, как и остальные онлайн-сканеры — нужно указать, где на ПК находится архив с сайтом и базой.

    В нашем случае полный размер сайта был больше 256 MB. Поэтому мы проверили его файлы выборочно. Как видно на скриншоте, Virustotal использовал 58 антивирусных программ для стационарных ПК. В итоге только 19 антивирусов из 58 обнаружили вредоносный код в архиве.
    Детальный анализ сайта в онлайн агрегаторах
    #2

    Для продвинутых пользователей: сканеры-PHP скрипты и специализированные программные сканеры

    Чтобы пользоваться этими сканерами, нужны технические знания, умение работать с командной строкой Linux и установленные программы/инструменты. Если у вас их нет, вам могут помочь разработчики сайта, сисадмин, техподдержка хостинга или поставщики инструментов сканирования.

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

    Предполагается, что на компьютере, на котором будут сканироваться файлы
    после скачивания, стоит ОС Linux. В случае сканирования на стороне хостинга/сервера процедура та же — только к хостингу/серверу нужно подключаться по SSH.

    Сканеры — PHP-скрипты

    Для того, чтобы сканировать файлы сканерами-скриптами, нужен интерпретатор PHP и возможность запускать PHP скрипты из командной строки. Использовать сканеры на основе PHP можно во всех ОС, поддерживающих PHP: Linux/Mac/Windows и других.

    Теоретически сканеры-скрипты можно выполнять на сервере с сайтом.Практически часто бывают ограничения:

    • Не все хостеры предоставляют доступ по SSH.
    • На хостинге могут быть ограничения на время выполнения PHP скриптов. Поэтому сканирование может длиться бесконечно.

    Для примера мы протестировали условно бесплатный сканер AI-Bolit.

    Чтобы просканировать сайт, нужно:
    1
    Скачать архив со сканером и распаковать подкаталог ai-bolit в корневой каталог сайта — на локальный ПК или хостинг.
    2
    В командной строке перейти в каталог, куда был распакован AI-Bolit, и выполнить одну из команд:

    Для экспресс-сканирования: $ php ai-bolit.php --mode=1
    Параноидальный режим для лечения: $ php ai-bolit.php --mode=2
    Сканер выводит краткий отчет о результатах сканирования в командной строке и полный в виде HTML документа:
    Проверка на вирусы в командной строке Результаты проверки в HTML документе
    В отличии от онлайн-сканеров, скрипты-сканеры — полноценные инструменты, которые могут тщательно просканировать сайт. Часто это единственный доступный инструмент, которым вы можете просканировать сайт на хостинге.

    Специализированные программные сканеры

    От имени пользователя root нужно выполнить следующие команды:

    • # cd ~
    • wget — скачать последнюю версию в текущий каталог;
    • tar -xvf maldetect-current.tar.gz — распаковать архив;
    • ls -d */ | grep maldetect — узнать, как называется каталог с только что распакованной версией;
    • cd maldetect-1.6.2 — перейти в каталог;
    • # ./install.sh — запустить установку;

    После установки можно выполнять такие команды:

    • # maldet -a /path/to/files — просканировать каталог, в котором находится сайт;
    • /path/to/files — расположение файлов сайта, который нужно просканировать;
    • # maldet --report 180731-2020.1148 — просмотреть отчет о сканировании. Имя отчета находится в выводе команды предыдущей команды.
    • # maldet --q 180731-2020.1148 — переместить все файлы из отчета в карантин.

    Результаты сканирования зараженного сайта:
    Результаты сканирования зараженного сайта
    Для сравнения: результаты сканирования коммерческим CMS:
    Результаты сканирования коммерческих сайтов
    Результаты сканирования подопытного сайта тремя сканерами:

    • AI-Bolit: 184 вредоносных скриптов;
    • maldet/LMD: 57 malware hits;
    • CXS: 65 fingerprints + 10 Viruses.

    Число обнаруженных объектов в отчетах разнится, потому что сканеры используют разные базы сигнатур, терминологию и методики подсчета объектов с вредоносным кодом. Например, AI-Bolit считает вредоносными скриптами мусорные PHP страницы, в том числе doorway pages, хотя в них нет вредоносного кода. А maldet/LMD и CXS — нет.
    Лайфхак: как правило, все хостинговые компании используют какой-то инструмент для поиска вредоносного кода на своих серверах. Поэтому если вы — лояльный клиент, можете попросить техподдержку просканировать ваш сайт, — возможно, за отдельную плату. Но не злоупотребляйте — компания не обязана этого делать, если это не предусмотрено вашим тарифом.

    Что делать после сканирования сайта

    После того, как вы обнаружили вредоносный код и, возможно, перенесли его в карантин, нужно подумать о лечении сайта.

    Один из самых надежных способов: восстановить все файлы, которые содержали вредоносный код, из архива, сделанного до заражения сайта. Это хороший вариант только если вы уверены, что после создания архива в файлы сайта не вносили изменения.

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

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

    Профилактика рецидивов

    После того, как вы удалили вредоносный код с сайта, примите меры предосторожности:
    1
    Обновите пароли всех аккаунтов на сайте. У злоумышленника был к нему доступ и он мог оставить себе лазейку.
    2
    Регулярно и оперативно обновляйте CMS и плагины, чтобы предотвратить взломы.

    По нашему опыту с недавней уязвимостью в CMS Drupal, первые признаки вредоносного кода на сайтах были зафиксированы через 36-48 часов после публикации уязвимости и способа ее устранения — обновления CMS до последней версии. Если бы наши клиенты, которых взломали, обновили CMS — проблем бы не возникло.
    3
    Регулярно наблюдайте за сайтом.
    4
    Регулярно делайте резервные копии.
    Нет идеального продукта, который бы был бесплатный, удобный, находил бы все образцы вредоносного кода, лечил сайт и работал бы на всех серверах. Но если использовать комбинацию из нескольких пунктов — использовать сканер, регулярно создавать резервные копии и обновлять CMS, — можно решить почти все проблемы с вредоносным кодом на сайте.

    Заключение

    Чтобы обнаружить вредоносный код на сайте, необходимо просканировать файлы и базу данных сайта при помощи одного или нескольких инструментов:

    Для экспресс-сканирования можно воспользоваться онлайн-сканерами (Rescan.pro, Sucuri, PCrisk). После восстановления сайта (в случае заражения) — найти способ, как вредоносный код попал на сайт и, если причина заключается в устаревших CMS и плагинах, — обновить их.
    Также для быстрого сканирования можно воспользоваться SEO-аудитом страницы сайта Serpstat.

    Сэкономьте время на изучении Serpstat

    Хотите получить персональную демонстрацию сервиса, тестовый период или эффективные кейсы использования Serpstat?

    Оставьте заявку и мы свяжемся с вами ;)

    Оцените статью по 5-бальной шкале

    4.55 из 5 на основе 30 оценок
    Нашли ошибку? Выделите её и нажмите Ctrl + Enter, чтобы сообщить нам.