Свободный антивирус::Журнал СА 3.2004
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1826
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1887
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1446
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1066
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1636
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Свободный антивирус

Архив номеров / 2004 / Выпуск №3 (16) / Свободный антивирус

Рубрика: Безопасность /  Механизмы защиты

Сергей Яремчук СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

Свободный антивирус

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

Наибольшей популярностью среди антивирусов пользуется DrWeb от ЗАО «ДиалогНаука»: http://www.drweb.ru, обладающий действительно хорошими характеристиками и эвристическим анализатором, позволяющим иногда обнаружить неизвестный вирус. Все, в общем, хорошо, но, собрав полностью сервер из бесплатных компонентов, выбить финансы для того, чтобы платить за лиценцию, под конец года не получилось. А ограничения ознакомительной версии, в частности невозможность проверки архивов, мне не совсем подходят. Плюс зацикливание на одном продукте обычно мешает увидеть его слабые и сильные стороны, все, как говорится, познается в сравнении. Тем более что в Интернете я постоянно натыкался на другие антивирусы, и мне захотелось поискать замену (или убедиться в отсутствии таковой, что тоже хорошо). В результате я вышел на несколько довольно интересных проектов, о которых речь пойдет в этой и следующей статьях.

Clam AntiVirus (http://clamav.sourceforge.net или http://www.clamav.net) представляет собой антивирусный комплект для UNIX-систем. Главная цель продукта – интеграция с почтовыми серверами для проверки вложений на предмет наличия вирусов. В настоящий момент поддерживается широкий спектр операционных систем: Linux, Solaris, FreeBSD, OpenBSD, NetBSD, AIX, Mac OS X, BeOS, HPUX, SCO UNIX и Windows/Cygwin на нескольких архитектурах: Intel, Alpha, Sparc, Cobalt MIPS boxes, PowerPC, RISC 6000, что уже вызывает уважение. Распространяется по лицензии GPL, POSIX-интерфейс и общедоступные библиотеки позволяют быстро адаптировать его с другими приложениями. Работает с архивами и сжатыми файлами, в настоящее время встроена поддержка RAR, Zip, Gzip, Bzip2. Также встроена поддержка защиты от mail-бомб, которые периодически любят закидывать в пользовательские ящики, и поддерживается milter-интерфейс к программе Sendmail. Обнаруживает, по данным разработчиков, более 20 000 вирусов, червей и троянов (хотя программа при запуске выдает сообщение о чуть больше 10 000, остальное в дополнительных базах). Конечно, по сравнению с другими подобными продуктами число получилось небольшое, но ведь мы знаем, что количество можно считать по-разному, хотя сама программа при запуске выдает сообщение о 10 000 вирусов. При необходимости можно воспользоваться он-лайн-сканером, позволяющим протестировать файлы на жестком диске. Для этого заходим по адресу: http://www.gietl.com/test-clamav и указываем на файл. Если же вы имеете вирус, который не обнаруживается ClamAV с обновленными базами, то по адресу: http://www.nervous.it/~nervous/cgi-bin/sendvirus.cgi или http://www.clamav.net/cgi-bin/sendvirus.cgi можно заполнить форму, где нужно обязательно указать свой e-mail, имя и место расположения зараженного файла, опционально можно также проставить антивирус, обнаруживший заразу. Другой вариант: послать zip-архив с паролем virus по адресу virus@clamav.net. После чего вирус будет проанализирован и добавлен в базу данных. Об остальных возможностях поговорим, когда посмотрим на его работу в действии.

Установка

Из библиотек требуются zlib и bzip2, которые имеются в большинстве систем. Если привычнее пользоваться уже скомпилированными пакетами, то зайдите на страницу http://clamav.sourceforge.net/binary.html и выберите нужную ссылку: на момент написания статьи это Debian, RedHat – Fedora, PLD (Polish(ed) Linux Distribution), Mandrake, AIX, FreeBSD, OpenBSD и MS Windows, на установке в этом случае останавливаться не буду. В остальных случаях нужно компилировать самому, хотя ничего особо сложного разработчики не придумали.

#tar xzvf clamav-0.65.tar.gz

# cd clamav-0.65

Единcтвенная задержка возникает при конфигурировании и выглядит это так:

#./configure 

...
/dev/(u)random detected.
Checking /etc/passwd...
ERROR: User "clamav" (and/or group "clamav") doesn"t exist. Please create it. You can omit this check with the --disable-clamav option.

Дело в том, что разработчики в целях безопасности рекомендуют запускать утилиту от лица пользователя clamav, а не root, и не устанавливать ни в коем случае SUID или SGID.

Избежать этого сообщения можно двумя способами: добавить параметр --disable-clamav при конфигурировании или просто создать этого пользователя.

# groupadd clamav

# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

По умолчанию ClamAV устанавливается в /usr/local, и, соответственно, конфигурационный файл будет лежать в /usr/local/etc, его месторасположение на /etc можно изменить, добавив опцию --sysconfdir=/etc.

Если конфигурирование завершилось без ошибок, компилируем и устанавливаем.

# make

# su -c "make install"

После окончания установки в нашем распоряжении будет несколько исполняемых файлов:

  • clamscan – утилита командной строки, предназначенная для проверки файлов и каталогов на предмет наличия вирусов.
  • clamd – антивирусный демон, прослушивающий подключения к UNIX или TCP-сокетам и сканирующий каталоги по требованию. Обеспечена возможность on-access просмотра (только Linux) при применении утилиты clamuko.
  • clamdscan – простой интерфейс к демону clamd, позволяет также сканировать файлы и каталоги, при этом используются те же параметры, что и в clamscan, и может полностью заменить clamscan.
  • clamav-milter (при конфигурировании с опцией --enable-milter) – представляет собой антивирусный интерфейс к sendmail, использует для просмотра почты clamd.
  • freshclam – утилита автоматического обновления вирусной базы данных через Интернет, позволяющая держать ее в самом современном состоянии.
  • sigtool – генерирует вирусную сигнатуру, используя внешний антивирусный сканер, который способен обнаружить вирус. Может создавать шестнадцатиричный дамп и формировать и распаковывать CVD-базу данных (ClamAV Virus Database).

Теперь по порядку и поподробней. Проверить текущий каталог на наличие вирусов можно, просто набрав clamscan без каких-либо параметров. В результате получим список проверенных файлов и отчет. Список просканированных файлов позволяет проверить работу утилиты с различными типами файлов на начальном этапе, но в большинстве случаев лучше добавить параметр -i для вывода только зараженных файлов. Указать на файлы, находящиеся в другом каталоге, можно, перечислив их в строке запуска, или, если проверяется каталог, то указать путь к нему, не забыв опцию -r для рекурсивного обхода (для проверки работы антивируса с пакетом поставляется несколько тестовых файлов).

# /usr/local/bin/clamscan -r -i /home/sergej/work/clamav-0.65/

/home/sergej/work/clamav-0.65//test/test1: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65//test/test1.bz2: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65//test/test2.zip: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65//test/test3.rar: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65//test/test2.badext: ClamAV-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 10131
Scanned directories: 42
Scanned files: 390
Infected files: 5
Data scanned: 4.49 MB
I/O buffer size: 131072 bytes
Time: 7.204 sec (0 m 7 s)

Опция --database= позволяет указать место расположения дополнительной антивирусной базы. Также по умолчанию пограмма не ведет никаких логов, при работе с cron это не совсем удобно, т.к. теряется контроль над работой программы, при помощи --log= можно указать, в какой файл их заносить. При необходимости проверки отдельных файлов каталога можно воспользоваться опциями -exclude=PATT и -include=PATT. Первая позволяет указать шаблоны файлов, которые не надо проверять, а вторая, наоборот, только те, которые надо просканировать в поиске вирусов. Опция -mbox включает сканирование почтовых каталогов и файлов.

#clamscan -r --mbox /var/spool/mail

Или можно проверять выход другой программы на наличие вирусов.

#cat testfile | clamscan -

Кроме вывода информации об обнаружении вируса можно удалить (--remove) или переместить (--move=DIRECTORY) такие файлы в другой каталог. Обычно при работе с архивами программа сама находит нужную утилиту для распаковки, и дополнительных указаний ей не надо, но если появляются сообщения вроде:

/mnt/test/test.zip: Zip module failure

то указываем на необходимость проверки архивов, и если не видно нужного архиватора в переменной $PATH, то указываем также местонахождение такой программы. Например, для rar: -unrar[=FULLPATH]. Так, для zip-архива строка запуска может выглядеть так:

# clamscan –unzip /mnt/test/test.zip

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

Write error (disk full?). Continue? (y/n/^C)

Каталог /tmp забивается таким образом очень быстро, т.е., закинув большой архив, можно провести DOS-атаку. Чтобы избежать этого, можно указать при помощи -tempdir= на другой каталог, в котором побольше свободного места, или установив максимальное количество извлекаемых за один раз файлов (-max-files=#n), или извлечь сначала #n Кб архива (использовав nM или nm, можно указать на количество Мб) при помощи -max-space=#n. Можно просто указать на максимальный уровень рекурсии обхода архива: -max-recursion=#n.

В следующем примере используем новую антивирусную базу и ограничиваем размер временных файлов в 50 Мб, плюс проверяем архивы.

#clamscan -d /tmp/newclamdb –tgz –deb –unrar --max-space=50m -r /home

Я надеюсь, по clamscan все понятно. Переходим к демону clamd. Главное отличие демона от сканера заключается в том, что он один раз при старте загружает все необходимые базы и настройки и находится в оперативной памяти постоянно готовым выполнить работу. В своей работе он использует конфигурационный файл clamav.conf. Если запустить программу без дополнительного редактирования (в том случае, если установка происходила из исходных текстов), то демон откажется работать.

# /usr/local/sbin/clamd

ERROR: Please edit the example config file /usr/local/etc/clamav.conf.
ERROR: Can"t parse the config file /usr/local/etc/clamav.conf

Файл хорошо комментирован, и опции описаны в man, чтобы заставить работать демон в конфигурации по умолчанию, достаточно убрать или закомментировать строку Example в самом начале файла. Пример (ненужные параметры достаточно закомментировать):

#Example

# Путь к лог-файлу

LogFile /var/log/clamav/clamd.log

# Блокировка записи в лог-файл (необходима при запуске нескольких демонов одновременно)в том числе и во избежание работы

# с одинаковой конфигурацией

#LogFileUnlock

# максимальный размер лог-файла (0 – без ограничений)

LogFileMaxSize 0

# Использование syslog

LogSyslog

# Подробный отчет

#LogVerbose

# Файл для сохранения идентификатора процесса

PidFile /var/run/clamav/clamd.pid

# Путь к антивирусным базам (по умолчанию /usr/local/share/clamav)

DataDirectory /var/lib/clamav

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

# мне показалось более удобным именно в сетевом. Несколько следующих строк необходимы для настройки сетевого режима.

#LocalSocket /var/run/clamav/clamd.sock

#FixStaleSocket

#TCPSocket 3310

#TCPAddr 127.0.0.1

#MaxConnectionQueueLength 30

# Предварительная запись потока

StreamSaveToDisk

# Предел для потока, после которого соединение закрывается

#StreamMaxLength 10M

# Максимальное количество одновременно выполняемых задач

MaxThreads 10

# Максимальная рекурсия каталога

MaxDirectoryRecursion 15

# Следование символическим ссылкам для каталогов и файлов

#FollowDirectorySymlinks

#FollowFileSymlinks

# Проверка целостности баз (по умолчанию 1 час)

#SelfCheck 600

# Команда, которая должна выполниться при обнаружении вируса. При этом используются подстановки %f – имя инфицированного

# файла, %v – название вируса. Должен использоваться полный путь к команде

#VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %f: %v"

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

User clamav

# Работа с почтой и архивами, для RAR нужна отдельная строка

ScanMail

ScanArchive

ScanRAR

# Установка максимальных значений для архивов для защиты от mail-бомб (0 – без ограничений).

ArchiveMaxFileSize 10M

ArchiveMaxRecursion 5

ArchiveMaxFiles 1000

ArchiveLimitMemoryUsage

И далее в файле вы найдете несколько строк для работы с Clamuko. Это интерфейс к модулю Dazuko (http://dazuko.org), обеспечивает (только для Linux) работу clamd в режиме on-access через устройство /dev/dazuko. Это пока еще экспериментальная разработка, пока я не убедился в необходимости пользоваться ею, поэтому, если кто-то заинтересовался, за подробностями обращайтесь в документацию, в ней все понятно расписано.

Запущенный демон ничего не делает. Для указания того, чем именно сейчас ему заниматься, необходимо послать сигнал:

  • PING – проверка связи, в ответ демон посылает PONG, и закрывает соединение.
  • VERSION – вывод версии.
  • RELOAD – перезагрузка антивирусных баз.
  • QUIT – остановка демона.
  • SCAN file/directory – рекурсивный обход указанных каталогов в поисках вирусов с поддержкой архивов (если не запрещено в конфигурационном файле).
  • RAWSCAN file/directory – то же, только без поддержки работы с архивами.
  • CONTSCAN file/directory – то же, что и SCAN, но при обнаружении вируса программа не прерывает свою работу, а продолжает обход каталога дальше.
  • STREAM – просмотр потока, при этом демон выдаст номер порта, в который необходимо посылать сигнал.

С сигналами понятно, только вот как их посылать, в документации сказано довольно невнятно. Оказалось, все замешано на межпроцессорном взаимодействии или подключении к сетевому порту. Например, команду «просканировать каталог» можно дать таким образом (при сетевом режиме работы демона):

# telnet localhost 3310

Trying 127.0.0.1...
Connected to localhost.
Escape character is "^]".
CONTSCAN /home/sergej/work
/home/sergej/work/clamav-0.65.tar.gz: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65/test/test1: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65/test/test1.bz2: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65/test/test2.zip: ClamAV-Test-Signature FOUND
/home/sergej/work/clamav-0.65/test/test2.badext: ClamAV-Test-Signature FOUND
Connection closed by foreign host.

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

#clamdscan /home

Для автоматического запуска clamd вместе с системой необходимо положить файл clamd.sh в каталог /etc/init.d/ и прописать путь для запуска в /etc/rc.d/rc.local или создать символическую ссылку в каталоге соответствующему уровню запуска системы.

#ln -s /etc/init.d/clamd.sh /etc/rc.d/rc5.d/S50clamd

Хотя все в этом вопросе зависит от используемой операционной системы или дистрибутива Linux.

С clamav-milter все просто. Если антивирус устанавливался при помощи rpm-пакетов, то необходимо доустановить пакет clamav-milter-0.65-4.i386.rpm, в котором практически все уже настроено, и в каталоге /usr/share/doc/clamav-milter-0.65/ лежат документы RPM-clamav-milter.txt и HOWTO-logwathch.txt, в которых все расписано по шагам. При установке из исходников также ничего сложного. Добавляем в файл /etc/mail/sendmail.mc строку:

INPUT_MAIL_FILTER(`clmilter",`S=local:/var/run/clmilter.sock, F=, T=S:4m;R:4m")dnl

define(`confINPUT_MAIL_FILTERS", `clmilter")

А в  clamav.conf проверяем наличие таких строк.

LocalSocket /var/run/clamd.sock

ScanMail

StreamSaveToDisk

И запускаем утилиту:

#/usr/local/sbin/clamav-milter -blo /var/run/clmilter.sock

При необходимости ограничить число процессов добавляем опцию -max-children=, если сlamd работает в сетевом режиме, то дополнительно используется опция -server= с указанием IP-адреса, последним аргументом в этом случае проставляется номер порта.

Утилита автоматического обновления антивирусных баз может запускаться в двух режимах: интерактивном – из командной строки, и как демон. Утилита использует базу http://database.clamav.net для автоматического выбора зеркала. В комплекте имеется также список таких баз, занесенный в файл mirror.txt, утилита пробует по порядку соединиться с первым в списке и в случае неудачи далее следует по списку. Можно подобрать для себя оптимальный вариант и поставить его первым. Для начала следует запустить утилиту без параметров, если все нормально, то следующим создать лог-файлы, необходимые для работы.

# touch /var/log/clam-update.log

# chmod 600 /var/log/clam-update.log

# chown clamav /var/log/clam-update.log

Для запуска в режиме демона используется опция -d:

# freshclam -d -c 3 -l /var/log/clam-update.log

Параметр -с указывает на промежуток времени обновления базы в днях (число от 1 до 50). Для указания отличной от установленной по умолчанию директории, в которую должны помещаться обновления, используйте опцию -datadir=. Прокси можно указать двумя способами: либо задать в командной строке параметры -http-proxy=hostname[:port] и при необходимости указания пароля для доступа -proxy-user=user:password; второй вариант – установить нужное значение переменной http_proxy:

#export http_proxy="proxy.server:8080"

Для контроля за обновлениями можно воспользоваться параметрами: -on-error-execute=COMMAND и -on-update-execute=COMMAND. Первая позволяет задать команду, которая будет выполнена при неудачном обновлении баз, вторая – наоборот, при успешном проведении обновления. Для одноразового запуска утилиты в случае необходимости немедленного обновления она запускается без опции -d (да и -с смысла не имеет). Остальные параметры при этом остаются теми же. В rpm-пакете лежит файл-шаблон /etc/sysconfig/freshclam, в котором можно заполнить соответствующие поля для установки всех вышеперечисленных параметров, а запускать утилиту при помощи скрипта /etc/init.d/freshclam. Можно для запуска использовать и cron, занеся в /etc/сrontab для еженедельного обновления примерно такую строку:

0 00 * * 07 /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log

И последняя, довольно интересная утилита sigtool, позволяющая самим создать готовую сигнатуру для добавления в свою антивирусную базу. Таким образом можно попробовать самим создать себе антидот во время очередной эпидемии до реакции компаний, выпускающих антивирусное ПО. Естеcтвенно, это все-таки полумера, т.к. автоматически без глубокого анализа будет довольно трудно так сразу создать сигнатуру, действующую на все варианты обнаруженого вируса, особенно в случае полиморфного варианта. В документе «Creating signatures for ClamAV», который поставляется вместе с архивом, расписано, как получить сигнатуру из тестовых «вирусов», поставляемых вместе в ClamAV. Мне повезло чуть больше. Погоняв чуть дольше недели антивирус в боевом режиме, удалось найти вирус который ClamAV не обнаружил, а Dr.Web по его поводу сказал следующее:

#drweb  /mnt/dos.ext.1/virus_test/

Dr.Web (R) for FreeBSD, version 4.30 (October 7, 2003)
Report dated 24 January 2004, 15:09:37
Command line: -path=/mnt/dos.ext.1/virus_test/
Key file: /usr/local/drweb/drweb.key
Registration info:
0100000004
Evaluation key ID Anti-virus Lab St.Petersburg
This is an EVALUATION version with limited functionality!
To get your registration key, call regional dealer.
Loading /var/drweb/bases/drw43009.vdb - Ok, virus records: 115
...
Loading /var/drweb/bases/drwebase.vdb - Ok, virus records: 39721
Total virus records: 41300
/mnt/dos.ext.1/virus_test/test.exe infected with Win32.HLLP.Underscore.36864
/mnt/dos.ext.1/virus_test/test.zip - archive ZIP
Scan report for "/mnt/dos.ext.1/virus_test/":
Scanned       : 1         Cured      : 0    
Infected      : 1         Deleted    : 0    
Modifications : 0         Renamed    : 0    
Suspicious    : 0         Moved      : 0    
Scan time     : 00:00:01  Scan speed : 1087 Kb/s

Другой антивирус F-prot, о котором речь пойдет в следующий раз, выдал сообщение:

Infection: W32/Underscore.A

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

# sigtool -c "clamscan --stdout" -f  /home/sergej/virus_test/test.exe -s "Win32.HLLP.Underscore.36864"

ERROR: String  Win32.HLLP.Underscore.36864 not found in scanner"s output.
Please check it and try again.
Does the scanner write to stdout ? It has to.

Опция -с говорит, какую команду запускать, здесь должен быть один из установленных в системе антивирусов, -f задает инфицированный файл, а -s – уникальная строка, которую вывел антивирус, обнаруживший вирус, в большинстве случаев сюда пишем имя обнаруженного вируса. Как видите, при помощи clamscan обнаружить его не получилось, поэтому пробуем Dr.Web.

# sigtool -c "drweb" -f  -f  /home/sergej/virus_test/test.exe -s "Win32.HLLP.Underscore.36864"

Detected, decreasing end 1113799 -> 891039
...
Detected, decreasing end 445519 -> 222759
Not detected at 0, moving forward.
Detected, decreasing end 111380 -> 0
Not detected at 0, moving forward.
...
Not detected, moving backward 27866 -> 27816
ERROR: Generated signature is too big.

То есть сигнатура получилась больше, чем рекомендуемые 40... 200 символов. В этом случае в документе показано, как вручную найти нужную сигнатуру, но для этого как минимум необходимо немного знать что-то о вирусе. Этот вирус, например, переименовывает файлы и создает в системном каталоге файл mc42.exe. Поэтому при помощи Midnight Commander, или дав такую команду:

# strings test.exe | less

или двоичный дамп для анализа:

#cat  test.exe  | sigtool --hex-dump > virus.sig

а лучше, воспользовавшись двоичным редактором, находим специфические для данного вируса строки (см. рис. 1) и заносим их в отдельный файл. Но этот метод хоть интересен и работает на ура, мне созданная таким образом сигнатура позволила найти все файлы на зараженном компакте, в том числе и упрятанные в архив (куда не смог заглянуть Dr.Web), но все-таки этот процесс может занять значительный промежуток времени, особенно при большом исходном файле. Можно попробовать разбить исходный файл на меньшие по размеру, в котором(ых) внешний антивирус будет еще находить вирус, и затем повторить операцию. Разбить файл на части можно, воспользовавшись, например, split. Мне удалось, немного повозившись, создать такой файл в 10 Кб и в результате:

# sigtool -c "drweb" -f  -f  /home/sergej/work/xaf -s "Win32.HLLP.Underscore.36864"

The scanner was executed 26 times.
The signature length is 54 (108 hex)
Saving signature in /home/sergej/work/xaf.sig file.
Saving binary signature in /home/sergej/work/xaf.bsig file.

В результате в файле xaf.sig будет примерно такая строка.

433A5C57494E444F57530000433A5C00583A00007700000072000000534F4654574152455C4D 6963726F66745C576E5C52756E0000005C0000006D6334322E6578650000

Добавляем в ее начало:

Win32.HLLP.Underscore.36864 (Clam)=

Теперь осталось добавить сигнатуру вируса в базу данных.

Распаковываем одну из установленных баз, их имеется две – main.cvd и daily.cvd. Первая – постоянная, вторая – для ежедневных обновлений. Распаковываем нужную:

#sigtool --unpack-current daily.cvd

после чего в текущем каталоге появится файл viruses.db2, если его открыть в любимом редакторе, то увидим, что он состоит из подобных строк. Добавляем в него сигнатуру и просчитываем новую контрольную сумму:

#cat  xaf.sig  >> viruses.db2

#md5sum viruses.db2 > viruses.md5

Теперь можно пользоваться обновленной базой, указав на нее параметром -d или поместив обратно в каталог /var/lib/clamav или /usr/local/share/clamav/ к старым базам, после чего добавленный таким образом вирус будет обнаруживаться ClamAV. К сожалению, антивирусные компании не очень любят делиться своими наработками, поэтому как-то приделать внешние базы пока не получается, но некоторые сигнатуры в удобочитаемом виде можно взять, например, на Sophos http://www.us.sophos.com/downloads/ide, по крайней мере Bagle появился там быстро, а простота операции позволила также оперативно занести информацию о нем в свою базу. В документации показано, как можно затем обратно упаковать базу, воспользовавшись опцией --build, но для этого необходимо иметь доступ к специальному серверу, для подписи, поэтому дальше я не пошел, оставил все как есть.

Рисунок 1

Предвидя некоторую критику, сразу отвечу: да, не дело сисадмина собирать по всему свету сигнатуры. Но, с другой стороны, так можно среагировать все-таки побыстрее, чем антивирусные компании (ну, по крайней мере, такая возможность греет душу), плюс новые сигнатуры добавляются в базу данных ClamAV ежедневно, поэтому, я думаю, эта проблема будет решена в скором времени. Мне этот антивирус в общем-то понравился и не в последнюю очередь разнообразием инструментов и удобством работы. Также одним из положительных моментов знакомства с ним отмечаю именно открытость продукта, позволившую наконец разобраться с технологией и понять реальный механизм работы антивирусов. Для сомневающихся в следующих статьях продолжим поиск. Успехов!


Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru