Рано или поздно веб-разработчик, веб-мастер или любой другой специалист, обслуживающий сайт, может столкнуться с проблемами безопасности: ресурс попадает под санкции поисковой системы или начинает блокироваться антивирусом, с хостинга могут прислать уведомление об обнаружении вредоносного кода, а посетители начинают жаловаться на всплывающую рекламу или редиректы на “левые” сайты.

В этот момент возникает задача поиска источника проблемы, то есть диагностики сайта на проблемы безопасности. При грамотном подходе диагностика состоит из двух этапов:
Предположим, вы уже проверили файлы на хостинге специализированными сканерами и почистили аккаунт хостинга от «вредоносов» (или ничего подозрительного на нем не нашлось), но поисковик все равно ругается на вирусный код или на сайте по-прежнему активен мобильный редирект. Что делать в этом случае? На помощь приходят веб-сканеры, которые выполняют динамический и статический анализ страниц сайта на вредоносный код.
Статический анализ страниц – это поиск вредоносных вставок (преимущественно javascript), спам-ссылок и спам-контента, фишинговых страниц и других статических элементов на проверяемой странице и в подключаемых файлах. Обнаружение подобных фрагментов выполняется на основе базы сигнатур или некоторого набора регулярных выражений. Если вредоносный код постоянно присутствует на странице или в загружаемых файлах, а также известен веб-сканеру (то есть он добавлен в базу сигнатур), то веб-сканер его обнаружит. Но так бывает не всегда. Например, вредоносный код может загружаться с другого ресурса или выполнять какие-то несанкционированные действия при определенных условиях:
Несколько таких примеров:


Если заранее неизвестно, какой код провоцирует данные несанкционированные действия, то обнаружить его статическим анализом чрезвычайно сложно. К счастью, есть анализ динамический или иногда его еще называют “поведенческим”. Если веб-сканер умный, он будет не просто анализировать исходный код страницы или файлов, но еще и пытаться совершать какие-то операции, эмулируя действия реального посетителя. После каждого действия или при определенных условиях робот сканера анализирует изменения и накапливает данные для итогового отчета: загружает страницу в нескольких браузерах (причем, не просто с разных User-Agent’ов, а с разными значениями объекта navigator в javascript, разными document.referer и т.п.), ускоряет внутренний таймер, отлавливает редиректы на внешние ресурсы, отслеживает то, что передается в eval(), document.write() и т.п. Продвинутый веб-сканер всегда будет проверять код страницы и объекты на ней как до начала выполнения всех скриптов (сразу после загрузки страницы), так и спустя некоторое время, поскольку современные “вредоносы” динамически добавляют или скрывают объекты на javascript, а также выполняют фоновые загрузки внутри динамических фреймов. Например, код зараженного виджета может через 3 секунды или по движению мыши загрузить скрипт, который вставит на страницу javascript с редиректом на загрузку опасного .apk файла. Естественно, никакой статический анализ (кроме как заранее знать, что виджет опасен) или поиск по файлам такое не выявит.
А теперь, с пониманием требований к диагностике сайта и веб-сканерам, попробуем найти те, которые действительно эффективны. К сожалению, то что представлено на первой странице поисковика по запросу “проверить сайт на вирусы онлайн” сразу никуда не годится. Это или “поделки”, которые в лучшем случае могут выполнить статический анализ страницы (например, найти IFRAME, который может быть и не опасен), или агрегаторы сторонних API, проверяющие URL сайта по базе Google Safe Browsing API, Yandex Safe Browing API или VirusTotal API.
Если проверять сай�� десктопным антивирусом, то анализ будет скорее всего также статический: антивирус умело блокирует загрузки с известных ему зараженных сайтов, но какого-то глубокого динамического анализа страниц сайта от него не стоит ожидать (хотя некоторые антивирусы действительно обнаруживают сигнатуры в файлах и на странице).
В итоге, после проверки двух десятков известных сервисов, я бы хотел остановиться на представленных ниже.

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

Выполняет динамический и статический анализ сайта. Поведенческим анализом детектятся скрытые редиректы, статический анализ ищет вирусные фрагменты на страницах и в загружаемых файлах, а базой черного списка определяются ресурсы, загружаемые с зараженных доменов. Ходит по внутренним ссылкам, поэтому кроме основного URL проверяет еще несколько смежных страниц сайта. Приятным дополнением является проверка сайта по блек-листам Яндекс, Google и VirusTotal. Ориентирован в основном на вредоносы, которые обитают в рунете. Поскольку сервис бесплатный, лимит на проверку – 3 запроса с одного IP в сутки.

Ищет вирусный код по сигнатурам и с помощью эвристики. Отправляет запросы к нескольким URL на сайте с различными User Agent / Referer. Обнаруживает спам-ссылки, дорвей-страницы, опасные скрипты. Кроме того, умеет проверять актуальные версии CMS и в��б-сервера. Ограничений на число проверок не замечено. Из небольшого минуса обнаружилось, что список проверенных сайтов с результатами индексируется поисковыми системами, то есть можно посмотреть, какой сайт и чем был заражен (сейчас в поисковом индексе около 90 000 страниц), тем не менее эффективности сканера это не умаляет.

Еще один западный веб-сканер сайтов. Может немного отпугивать своим аскетичным интерфейсом из 90-х, но, тем не менее, он позволяет выполнить полноценный статический анализ сайта и подключенных на странице файлов. При сканировании пользователь может задать параметры User Agent, referer, параметры проверки страницы. В настройках есть проверка страницы из кэша Google. Лимитов на проверку сайтов не обнаружено.

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

В этот момент возникает задача поиска источника проблемы, то есть диагностики сайта на проблемы безопасности. При грамотном подходе диагностика состоит из двух этапов:
- проверки файлов и базы данных на хостинге на наличие серверных вредоносных скриптов и инжектов,
- проверки страниц сайта на вирусный код, скрытые редиректы и другие проблемы, которые, порой, невозможно выявить статическим сканером файлов.
Предположим, вы уже проверили файлы на хостинге специализированными сканерами и почистили аккаунт хостинга от «вредоносов» (или ничего подозрительного на нем не нашлось), но поисковик все равно ругается на вирусный код или на сайте по-прежнему активен мобильный редирект. Что делать в этом случае? На помощь приходят веб-сканеры, которые выполняют динамический и статический анализ страниц сайта на вредоносный код.
Немного теории
Статический анализ страниц – это поиск вредоносных вставок (преимущественно javascript), спам-ссылок и спам-контента, фишинговых страниц и других статических элементов на проверяемой странице и в подключаемых файлах. Обнаружение подобных фрагментов выполняется на основе базы сигнатур или некоторого набора регулярных выражений. Если вредоносный код постоянно присутствует на странице или в загружаемых файлах, а также известен веб-сканеру (то есть он добавлен в базу сигнатур), то веб-сканер его обнаружит. Но так бывает не всегда. Например, вредоносный код может загружаться с другого ресурса или выполнять какие-то несанкционированные действия при определенных условиях:
- по завершении загрузки страницы в нее добавляется javascript, который выполняет drive-by download атаку
- пользователь уходит со страницы, в этот момент подгружается код и открывает popunder с контентом “для взрослых”
- посетитель сайта находится на странице несколько секунд и только после этого его перенаправляют на платную подписку за смс
- и т.п.
Несколько таких примеров:


Если заранее неизвестно, какой код провоцирует данные несанкционированные действия, то обнаружить его статическим анализом чрезвычайно сложно. К счастью, есть анализ динамический или иногда его еще называют “поведенческим”. Если веб-сканер умный, он будет не просто анализировать исходный код страницы или файлов, но еще и пытаться совершать какие-то операции, эмулируя действия реального посетителя. После каждого действия или при определенных условиях робот сканера анализирует изменения и накапливает данные для итогового отчета: загружает страницу в нескольких браузерах (причем, не просто с разных User-Agent’ов, а с разными значениями объекта navigator в javascript, разными document.referer и т.п.), ускоряет внутренний таймер, отлавливает редиректы на внешние ресурсы, отслеживает то, что передается в eval(), document.write() и т.п. Продвинутый веб-сканер всегда будет проверять код страницы и объекты на ней как до начала выполнения всех скриптов (сразу после загрузки страницы), так и спустя некоторое время, поскольку современные “вредоносы” динамически добавляют или скрывают объекты на javascript, а также выполняют фоновые загрузки внутри динамических фреймов. Например, код зараженного виджета может через 3 секунды или по движению мыши загрузить скрипт, который вставит на страницу javascript с редиректом на загрузку опасного .apk файла. Естественно, никакой статический анализ (кроме как заранее знать, что виджет опасен) или поиск по файлам такое не выявит.
А теперь, с пониманием требований к диагностике сайта и веб-сканерам, попробуем найти те, которые действительно эффективны. К сожалению, то что представлено на первой странице поисковика по запросу “проверить сайт на вирусы онлайн” сразу никуда не годится. Это или “поделки”, которые в лучшем случае могут выполнить статический анализ страницы (например, найти IFRAME, который может быть и не опасен), или агрегаторы сторонних API, проверяющие URL сайта по базе Google Safe Browsing API, Yandex Safe Browing API или VirusTotal API.
Если проверять сай�� десктопным антивирусом, то анализ будет скорее всего также статический: антивирус умело блокирует загрузки с известных ему зараженных сайтов, но какого-то глубокого динамического анализа страниц сайта от него не стоит ожидать (хотя некоторые антивирусы действительно обнаруживают сигнатуры в файлах и на странице).
В итоге, после проверки двух десятков известных сервисов, я бы хотел остановиться на представленных ниже.
Веб-сканер QUTTERA

Выполняет поиск вредоносного кода на страницах, используя бессигнатурный анализ. То есть обладает некой эвристикой и выполняет динамический анализ страниц, что позволяет обнаруживать 0-day угрозы. Из приятных особенностей стоит отметить возможность проверки сразу нескольких страниц сайта, поскольку проверять по одной не всегда эффективно.
Хорошо обнаруживает угрозы, связанные с загрузкой или размерещением троянов, завирусованных исполняемых файлов. Ориентирован на западные сайты с их характерными заражениями, но часто выручает и при проверке зараженных сайтов рунета. Поскольку сервис бесплатный, есть очередь на обработку задач, поэтому придется немного подождать.
Веб-сканер ReScan.pro

Выполняет динамический и статический анализ сайта. Поведенческим анализом детектятся скрытые редиректы, статический анализ ищет вирусные фрагменты на страницах и в загружаемых файлах, а базой черного списка определяются ресурсы, загружаемые с зараженных доменов. Ходит по внутренним ссылкам, поэтому кроме основного URL проверяет еще несколько смежных страниц сайта. Приятным дополнением является проверка сайта по блек-листам Яндекс, Google и VirusTotal. Ориентирован в основном на вредоносы, которые обитают в рунете. Поскольку сервис бесплатный, лимит на проверку – 3 запроса с одного IP в сутки.
Веб-сканер Sucuri

Ищет вирусный код по сигнатурам и с помощью эвристики. Отправляет запросы к нескольким URL на сайте с различными User Agent / Referer. Обнаруживает спам-ссылки, дорвей-страницы, опасные скрипты. Кроме того, умеет проверять актуальные версии CMS и в��б-сервера. Ограничений на число проверок не замечено. Из небольшого минуса обнаружилось, что список проверенных сайтов с результатами индексируется поисковыми системами, то есть можно посмотреть, какой сайт и чем был заражен (сейчас в поисковом индексе около 90 000 страниц), тем не менее эффективности сканера это не умаляет.
Redleg's File Viewer

Еще один западный веб-сканер сайтов. Может немного отпугивать своим аскетичным интерфейсом из 90-х, но, тем не менее, он позволяет выполнить полноценный статический анализ сайта и подключенных на странице файлов. При сканировании пользователь может задать параметры User Agent, referer, параметры проверки страницы. В настройках есть проверка страницы из кэша Google. Лимитов на проверку сайтов не обнаружено.
VirusTotal

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