Создание своего зеркала сервера обновления антивируса Касперского
Один из популярных антивирусов в России это, конечно же, Антивирус Касперского (далее AK). Обсуждать, хорош он или плох я не буду, это очередная тема для «священных войн». Но факт остаётся фактом — им пользуются многие.
Основной задачей при использовании любого антивируса является его своевременное обновление. Существует несколько способов для AK:
- Автоматическое обновление. Программа сама обновляется по команде или автоматически.
- Обновление через архивы антивирусных баз, скачанных с сайта антивируса
- Для локальных сетей предприятий существует агент для администрирования антивируса ( Kaspersky Administration Kit ) , одной из задач которого является обновления всех
версий программ АК (или всевозможных анти-спамов от Касперского). - еще один не официальный способ — копирование баз с компьютера с установленным АК на другой. Подробнее можно узнать тут.
Все это хорошо. Но как быть, если ставятся следующие условия. У нас есть большая сеть, разделенная на два сегмента. В одном можно
использовать службу «Клиент для сетей Microsoft», а в другом нет. Выход в интернет только на одном компьютере. Трафик дорогой. Нет мощностей для установки Kaspersky Administration Kit. Да и возможно мы еще и используем нелицензионный софт (При обновлении с официального сервера ключ программы заносится в статистическую базу. При каком то значении количества запросов с одного ключа, ключ банится, что не позволяет работать антивирусу.) Но это так, вариант, надо все-таки использовать лицензионный софт.
Т.е. ставится задача — создать зеркало сервера обновлений, которое работает как при расшареной папке так и без неё, экономия трафика ( т.е. скачивание только изменившихся файлов). Как быть?
Попробуем решить эту задачу.
Если нельзя использовать «Клиент для сетей Microsoft» для обновления, то нам нужно чтобы АК обновлялся как с собственным сервером по HTTP. Т.е. нам нужен веб-сервер который дает на просмотр папку с обновлениями. Но нам нужно заставить АК ходить на наш сервер, а не на официальный. Стандартными настройками этого не сделать. АК может обновляться либо с официального сервера, либо из локальной папки или сетевой. Эту проблему можно решить старым дедовским способом — в файле ваш_диск:\WINDOWS\system32\drivers\etc\hosts сделать записи вида
ваш_сервер_обновлений dnl-ru1.kaspersky-labs.com
Но где нам взять весь список официальных серверов? Поковырявшись в антивирусных базах мы их легко найдем. Но так как мы их еще не скачали то вот ссылка на xml файл на сервере обновлений, где как раз и хранятся все возможные адреса. Ну а
если вам лень от туда выковыривать то вот уже готовый файл. Стоит учесть, что если у вас установлен AK 7 версии со всевозможными проактивными
защитами, или KIS, то периодически они будут ругаться, что файл
ваш_диск:\WINDOWS\system32\drivers\etc\hosts содержит подозрительные записи.
Будем считать, что веб-сервер вы настроите сами. Осталось определиться где брать сами антивирусные базы.
Структура антивирусных баз.
Теперь стоит поговорить о структуре антивирусных баз.
Все, что будет описано, справедливо для 6 и 7 версии АК ( и KIS). Для более ранних версий не рассматривал.
Главная папка сервера обновления это index/6/ . В ней должен находиться файл
u0607g.xml. Это первый файл, к которому обращается антивирус при обновлении. Таких xml файлов в обновлениях много. Их можно назвать файлами-указателями на обновления. Вся информация о том, откуда брать
обновления хранится в них.
Рассмотрим файл u0607g.xml . Он состоит из структур FileDescription ( в терминах xml не селён, извините)
ComponentID="AVS"
UpdateType="desc"
ServerFolder="../../bases/av/avc/i386"
Filename="av-i386-0607g.xml"
FileDate="17022008 0704">
ComponentID содержит имя компонента антивируса, указатель на обновление Filename которого находится на сервере в папке ServerFolder (относительно текущей папки). Т.е. каждый компонент АК имеет свои базы. Вот небольшой список компонент,
что доступен на сервере обновления в файле retr.dat
AVS — Cигнатуры угроз;Описание вирусов и других вредоносных программ
AH — Сигнатуры атак Анти-Хакера для сборок 402, 411;Описание типичных сетевых атак
AHI386 — Сигнатуры атак Анти-Хакера для 32-разрядных операционных систем;Описание типичных сетевых атак
AHX64 — Сигнатуры атак Анти-Хакера для 64- разрядных операционных систем;Описание типичных сетевых атак
RT — Список компонентов для загрузки;Список компонентов для загрузки
Updater -Данные для балансировки нагрузки на инфраструктуру обновления;Данные для балансировки нагрузки на инфраструктуру обновления
Таким образом, антивирус, загрузив файл index/6/u0607g.xml, просматривает его и создает список файлов-указателей обновлений для установленных компонентов. Затем он загружает эти файлы-указатели и просматривает их. В них та же структура FileDescription, но зачастую она не содержит поле ServerFolder. Это значит, что файл обновления лежит в той же папке что и файл-указатель . Просмотрев все указатели, формируется список для закачки новых файлов.
Так примерно выглядит процедура обновления АК. Стоит отметить такие вещи:
- Список компонент, которые установлены на данном компьютере можно найти в реестре в разделе HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\protected\AVP7\environment в ключах с именем похожим на Components
- для некоторых компонент не существует обновлений. Например NEWS.
- даже если вы отключили какой-то компонент (например проактивную защиту), антивирус будет искать для него обновление. Не найдя, он выдаст сообщение об ошибке. Единственный компонент, загрузку которого можно отключить, это KAV2006EXEC и подобные. Это обновление программных файлов.
- Для того чтобы точно узнать (не из реестра) какие компоненты нужны, на будущем нашем зеркале оставляем только файл index/6/u0607g.xml . Запустив обновление антивируса в окошке мы увидим ошибки и ссылки на недостающие файлы. Потом мы ищем имя этого файла в index/6/u0607g.xml, определяем имя компонента.
- Опытным путем можно найти, что для AK 7 версии нужны следующие компоненты — AVS;AHI386;BLST;RM,BB,BB2;Updater;INFO;EMUI386;WAI386;KAV2006EXEC;RT
Теперь разберемся с задачей создания зеркала обновлений.
Минимум нам нужны две папки. Это папка Index и папка Bases. А если мы хотим, чтобы АК мог обновлять программные файлы, то потребуется папка AutoPatches. Т.е. если мы «тупо» скачаем эти папки со всем содержимым то получим зеркало сервера обновления. Если эту операцию проделывать каждые 2 часа, то у нас будут всегда свежие базы. Но мы люди не богатые, экономные, и , что самое главное, умные. В этих папках содержится множество не нужных нам обновлений, а если мы будем заново каждые 2 часа закачивать все папки вообще на трафике разоримся. Тогда нам нужно думать как АК при обновлении. А именно:
- скачать index/6/u0607g.xml
- скачать файлы-указатели для нужных нам компонентов
- скачать только изменившиеся файлы обновлений для этих компонентов
Для этих целей нам надо уметь качать, и уметь определять какие файлы нам нужны.
С первой задачей мы справимся с помощью консольной программы WGet. А вот со второй задачей сложнее. Для её решения я написал небольшую консольную программу kav_upd.
Kav_upd
Консольная программа, для формирования списка файлов обновления для загрузки. Для работы требуется файл conf.ini, в котором содержаться настройки работы программы.
components=KAV2006Exec;RT;AVS;AHI386;Updater;WM;RM,BB,BB2
local=ru
path=D:\avp\test3\avp\
components — список компонентов через точку с запятой, которые мы хотим загрузить. Названия должны быть такие же как в файле u0607g.xml (RM,BB,BB2 — это один компонент)
local - язык, может быть en,ru,de,fr. Указываете какой язык нужен для файла retr.dat .
path — путь, где хранятся базы
Программа имеет 2 ключа для запуска. Первый "-main". Программа смотрит файл
%path%\index\6\u0607g.xml и создает файл main.txt с писком файлов указателей для загрузки. Второй «-othes». Он читает файл main.txt и файлы указатели, создавая файл othes.txt со списком файлов обновления для загрузки.
Скрипт для создания зеркала обновлений.
Теперь приступим к созданию самого скрипта. Будем использовать обычные командные
файлы Windows. Вот пример такого скрипта
Set log=log.txt
wget -P %avp_path% --timestamping -x -nH http://dnl-ru1.kaspersky-labs.com/index/6/u0607g.xml -o %log%
call kav_up.exe -main
wget -P %avp_path% --timestamping -B http://dnl-ru1.kaspersky-labs.com/ -i main.txt -x -nH -o %log%
call kav_up.exe -othes
wget -P %avp_path% --timestamping -B http://dnl-ru1.kaspersky-labs.com/ -i othes.txt -x -nH -o %log%
После выполнения, в папке D:\avp\test3\avp лежат нудные нам файлы. Ключ --timestamping программы wget говорит программе скачивать только обновленные файлы. После первого запуска скачается порядка 19 мб (в зависимости от компонент). В дальнейшем гораздо меньше. Изучив ключи wget можно сделать, чтобы работа шла через прокси-сервер.
Теперь мы можем выложить содержимое папки avp_path на веб-сервер. И АК настроенный на этот сервер , будет обновляться с него нормально. Так же папку avp_path можно расшарить в сети, и настроить АК на обновление из этой папки.
Заключение.
По данной методике можно создать сервер обновления для многих продуктов от Лаборатории Касперского. Главное смотреть какие компоненты он не может обновить или файлы.
И еще , не забывайте менять адрес сервера, с которого берете базы. Иначе можно создать большую нагрузку на него. Ведь АК балансирует нагрузку на сервера, выбирая определенный. Выбор основывается на этом файле .
Ссылки.
Kav_upd — (57 кб.) программа kav_upd
Kav_upd.scr — (4 кб.) исходники kav_upd на Delphi 2007
update_script — (219 кб.) набор файлов для создания зеркала обновлений
Wget для Windows — страница порта wget под windows
Инструкция по Wget
сентября 1, 2008 - 21:26
Спасибо за статью оказалась очень полезной.
сентября 1, 2008 - 21:46
Рекомендую подписку на ленту новостей расположить на видном месте! Читателей будет больше! Особенно на таком сайте, как у вас! Проверяля — на 30% выросло количество подписчиков!
сентября 5, 2008 - 11:03
Спасибо, отличная статья, очень помогла.
марта 16, 2009 - 13:27
а для КИС 8 версии эта фича прокатит?
марта 16, 2009 - 13:53
не проверял. на 7 точно работает.
а для 8 версии есть официальная программа forum.kaspersky.com/index...amp;showforum=93
марта 18, 2009 - 13:57
Спасибо огромное!!!!! Уже 3 года держу сервер зеркал в локальной сети, зеркалировал обновления касперского тупым скачивание всего содержимого нужных ему папок. Ща затестим эту утилку.
марта 18, 2009 - 17:57
как не обидно, но советую глянуть forum.kaspersky.com/index...amp;showforum=93
а мое, это так, металолом уже
апреля 12, 2009 - 22:15
Ochen pomoglo
октября 19, 2009 - 18:07
Здорово! А вот еще бы в базах на таком зеркале, блек лист старый держать без обновления. Тупо переписывать не помогает. У кого какие мысли есть.
Ищу такую «приделку».