СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Сравнение сканеров вредоносного кода на сайте в черновиках

В настоящий момент существует не так много сканеров для поиска вредоносного кода и вирусов на хостинге, но даже при их малом числе никто не проводил оценок эффективности этих инструментов применительно к задаче поиска вредоносов на сайте. Поэтому возникла идея взять типовой взломанный и зараженный сайт, и проверить его доступными сканерами, чтобы грубо оценить, насколько они хороши в поиске веб-шеллов, бэкдоров, дорвеев и других разновидностей хакерских активностей и вредоносного кода. Делаем простой эксперимент: 1 взломанный сайт c 69 вредоносными скриптами, 5 сканеров.

Дано

Взломанный сайт на Joomla 3.1.5, жалоба хостинга на рассылку спама. Полная резервная копия содержит 9728 файлов.

Задача

Основная цель – просканировать сайт и оценить эффективность выбранных инструментов применительно к задаче нахождения вредоносного кода на сайте. Как побочный результат эксперимента — посчитать затраченное на сканирование время каждым инструментом.


Решение

Сканирование будет выполняться следующими инструментами:



ClamAv, Maldet и AI-Bolit запускались на VPS сервере под Debian, десктопные сканеры – под Windows 7. Производительность обеих систем для простоты будем считать одинаковой.

Результаты сканирования


  • СlamAv — общепризнанный серверный сканер, которым пользуются большинство хостингов, показал самый плохой результат в обнаружении вредоносного кода на сайте. Он нашел всего 16% загруженных на сайте вредоносов.
  • Приятно порадовали десктопные антивирусы и сканеры. Несмотря на то, что “Антивирус Касперского” не предназначен для сканирования сайтов, он неплохо справился с поиском шеллов и бэкдоров, обнаружив почти 60% вредоносов.
  • Чемпионом по обнаружению вредоносного кода стал AI-BOLIT, хотя он же и чемпион по ложным срабатываниям. Минус сканера — скорость, зато он обнаружил все существующие вредоносные скрипты и бэкдор-вставки в .php файлах.

Выводы (из эксперимента и собственной практики работы с перечисленными сканерами)

  1. Результаты эксперимента не следует принимать как истину в последней инстанции. Естественно, для более объективной картины следовало бы взять десяток сайтов с различными вредоносами и получить результат сканирования по ним каждым выбранным инструментом. Несмотря на это грубую оценку эффективности можно сделать уже сейчас.
  2. Maldet эффективнее ищет вредоносный код в скриптах сайта, чем ClamAv. Последний хорошо обнаруживает только классические шеллы, наподобие WSO Shell. И оба годятся лишь для быстрой проверки сайта (взломан/не взломан). Но лечить сайт по их отчетам было бы неправильно, так как останется больше половины вредоносных скриптов.
  3. AI-BOLIT обладает высокой степенью параноидальности и в отчет могут попадать и не вредоносные скрипты. Но в умелых руках это хороший инструмент для поиска вредоносного кода и лечения сайта после взлома, так как наиболее точно определяет вредоносы.
  4. Раньше фразы о том, что владелец лечил свой сайт “Касперским” не вызывали ничего кроме улыбки. Сейчас мне видится это не такой уж и плохой идеей, учитывая то, что он показал себя эффективнее ClamAv в 4 раза. Хотя опять таки, как только эффективность поиска вредоносного кода ниже 100%, применять данный инструмент для лечения не разумно, так как гарантирован рецидив.

комментарии (19)

+2
ange007 ,   * (был изменён)

А как же данные которые приводят в других подобных обзорах/сравнениях ( правда для десктопа )?
Например нагрузка на процессор во время проверки и проверка одиночных файлов ( при той-же загрузке на сервер ).

Или же речь исключительно «о вредоносном коде»?

0
datacompboy ,  

никто не сталкивался, что maldet пишет «вылечил», а по факту файлы не меняет?

0
iznakurnozh ,  

А вы его настраивали?
/usr/local/maldetect/conf.maldet

##
# [ QUARANTINE OPTIONS ]
##
# The default quarantine action for malware hits
# [0 = alert only, 1 = move to quarantine & alert]
quar_hits=0

# Try to clean string based malware injections
# [NOTE: quar_hits=1 required]
# [0 = disabled, 1 = clean]
quar_clean=0


Если честно, у меня он ни ризу не «лечил» :) Всегда просто убирал файл в карантин. Для продакшина я настроил только alert без карантина.
0
datacompboy ,  

разумеется настроил:
quar_hits=1
quar_clean=1

но я говорю о запуске вручную:
maldet -a.

maldet(20994): {scan} processing scan results for hits: 6 hits 6 cleaned
maldet(20994): {scan} scan completed on .: files 1455, malware hits 6, cleaned hits 6
maldet(20994): {scan} scan report saved, to view run: maldet --report 040914-1817.20994

maldet -n 040914-1817.20994

maldet(22176): {clean} trying to clean ./helpers/template.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./helpers/template.php for malware hits
maldet(22176): {clean} clean successful on ./helpers/template.php
maldet(22176): {clean} trying to clean ./admin.templates.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./admin.templates.php for malware hits
maldet(22176): {clean} clean successful on ./admin.templates.php
maldet(22176): {clean} trying to clean ./toolbar.templates.html.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./toolbar.templates.html.php for malware hits
maldet(22176): {clean} clean successful on ./toolbar.templates.html.php
maldet(22176): {clean} trying to clean ./admin.templates.html.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./admin.templates.html.php for malware hits
maldet(22176): {clean} clean successful on ./admin.templates.html.php
maldet(22176): {clean} trying to clean ./toolbar.templates.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./toolbar.templates.php for malware hits
maldet(22176): {clean} clean successful on ./toolbar.templates.php
maldet(22176): {clean} trying to clean ./controller.php with base64.inject.unclassed rule
maldet(22176): {clean} scanning ./controller.php for malware hits
maldet(22176): {clean} clean successful on ./controller.php

maldet -a.

maldet(22830): {scan} scan completed on .: files 1455, malware hits 0, cleaned hits 0
maldet(22830): {scan} scan report saved, to view run: maldet --report 040914-1818.22830

опа. не понял O_O
походу он в какой-то момент обновился и теперь всё хорошо. вот блин :)

+1
+2 –1
LeX_KaR ,   * (был изменён)

Давно работаю с Ай-Болитом. Да, в его отчете много (для джумлы зараженной порядка 20-30%) чистых файлов, но если ты хоть грамульку разбираешься в том где код нормальный, а где левак — отчеты разгребаются быстро. Своими руками при помощи этой утилиты очистил с десяток сайтов джумловых. Все из них почистились на 100% и быстренько вернулись в индекс гугла и яндекса. Советую.

P.S. скрипт запускал локально, win7+php. Версии джумлы: от 1.0.16 до 3.0

0
+1 –1
Osipov ,  

Показатель детектирования десктопными решениями различных вендоров вредоносного ПО такого рода зависит в основном от наличия сигнатур угроз в базе: таким образом, улучшить показатели можно отправляя обнаруженные образцы в соответствующие вирлабы. Следует иметь ввиду, что ни «Антивирус Касперского», ни «Dr.Web CureIt» не являются «сканерами вредоносного кода на сайте» — для антивирусных компаний основной задачей является защита своих пользователей.

0
pansa ,  

Не только сигнатур, JS тоже анализируется, поэтому есть шанс поймать каку эвристиком. В остальном вы очень правы, редко близкие по адекватности комментарии на эту тему встретишь.

0
gentee ,  

А еще можно сразу поставить на сайты системку для отслеживания изменений в файлах и не парится потом с поиском зараженных файлов. Например, watcher4site, github.

0
AmdY ,  

Согласен, можно просто поставить git и делать reset

+1
iznakurnozh ,  

Иногда вредоносный код появляется в ignored директориях, например среди картинок. Так что это не панацея.

0
AmdY ,  

Угу, я привёл альтернативу watcher4site
Для статики нужно же исполнение левых файлов запретить.
Ну и подход должен быть комплексным, убийство ftp сервера в 99% спасает от распостранённых вирусов.

0
zapimir ,  

А отключение сервера от розетки вообще спасает от вирусов на 100% :) Но нужно исходить из того, что большинство зараженных сайтов работает на обычном хостинге. А не VPS или выделенных серваках.

0
pansa ,  

Либо в БД. Поди дифф проанализируй…

0
olegi ,  

Яндекс недавно писал про штучку которая в apache внедряется. Вопрос — перечисленные утилиты смогут такое найти? Имеют они бинарные сигнаруты файлов?

0
pansa ,  

«СlamAv — общепризнанный серверный сканер, которым пользуются большинство хостингов»
Серьезно? Можно пруфлинк?

0
LeX_KaR ,  

на многих vds он является предустановленным (знаю по собственному опыту). видимо автор имел ввиду именно это

0
pansa ,  

Может. Мельком посмотрел AI Bolit. Несколько удивлен вцелом хорошими отзывами о нем, выглядит всё как-то… не очень.
«как запускать.txt» в ISO8859 — убил наповал =)

+1
LeX_KaR ,  

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

0
pansa ,  

Молодцы, хотя чтобы следовать общепринятым концепциям не обязательно команда из 100 человек. пожалуй, даже наоборот, чем меньше, тем проще. Оценить мощь базы сигнатур затруднительно, аналогов-то нет по сути? Вот что ещё странно. Казалось бы — выставить ханипоты голым телом в интернеты — и собирай чуть ли не автомате. Ан нет.