Создание своего зеркала сервера обновления антивируса Касперского
Один из популярных антивирусов в России это, конечно же, Антивирус Касперского (далее 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
февраля 17, 2008 - 22:17
осилил на половину
к сожалению антивирусы не юзаю временно
апреля 5, 2008 - 02:01
Огромное спасибо за статью, единственное надо подправить ссылки на файлы, а то не качается ничего.
апреля 5, 2008 - 13:29
Dimitri
прошу прощения. поправил ссылки
апреля 30, 2008 - 19:15
Привет...у меня проблема с настройкой зеркала, ты не могу бы сказать свою асю чтобы помочь настроить его на моем сайте, отблагодарю. вот если что моя 492-538-285
апреля 30, 2008 - 19:16
ой блин на главной я нашел твою асю
июня 2, 2008 - 19:32
Вопрос такой возможно ли в файле cong.ini прописать local=ru,en. Тоесть загружать обновления сразу для двух локализаций антивиря?
июня 3, 2008 - 17:05
Нет. Не было такой необходимости.
июня 13, 2008 - 12:04
Ссылка на Kav_upd битая. Закачайте файл еще раз пожалуйста
С уважением
soul57
июня 14, 2008 - 10:58
прошу прощения, ссылки поправлены.
что то постоянно не так (
июня 26, 2008 - 09:17
да, у всех выбают проколы. Ссылка уже рабочая, а Касперский forever :mrgreen:
июня 26, 2008 - 18:44
у меня Касперский дал сбой. пропустил вирус, который сожрал все програмы установленные на буке, оставил только оболочки. вот так :cry:
июля 8, 2008 - 12:13
Да антивирусник конечно отличный только вот моё железо его абсолютно не тянет, может кто нибудь знает способ как снизить загрузку системы АК?Подскажите плиз
июля 8, 2008 - 20:35
это говорит о том, что железо пора менять, а антивирусник просто супер!
июля 10, 2008 - 12:39
спасибо за ссылку на xml файл на сервере обновлений. очень пригодилась :mrgreen:
июля 10, 2008 - 18:41
Автор, а сложно подобное вообще писать?
июля 11, 2008 - 14:14
Итшник либо использовать более старую версию, но возникнут вопросы с ключами (при пиратском использовании).
второй вариант — использовать 7 версию. и периодически делать полную проверку компьютера, когда антивирус скажет (плюс минус пару дней). благодоря этому антивирус не будет лишний раз проверять файлы, у которых контрольная сумма не изменилась. технология iChecker если не ошибаюсь.
ну и самом собой для нормальной работы на xp надо 512 мб оперативной памяти. ну и можно поиграться с фильтрами ,какие файлы проверять, а какие нет. например зачем проверять rar архив когда ты его скачал? пусть проверяет содержимое архива при распаковке. но это всего лишь вариант, не претендующий на правильность. в каждом случае все индивидуально.
июля 11, 2008 - 14:16
indamixer
не знаю даже. главное разобраться что надо вообще делать. а потом пытаться реализовать. делал для себя, было интересно. в итоге получилось что то
июля 21, 2008 - 09:40
недавно почистили свой комп Касперским, сама в шоке сколько всякой дряни он нашел. теперь буду поьзоваться постоянно :razz:
июля 24, 2008 - 07:41
чтобы обновить, надо найти ошибку или придумать новый функционал.
пока мыслей таких нет.
если что то прделожите — сделаем.
июля 28, 2008 - 16:06
пасип, но по мне лучше нод32, базы всегда свежачек
августа 6, 2008 - 14:36
А есть, какая нибудь альтернатива?
августа 6, 2008 - 16:38
Помогите пжста. Ключ –timestamping не корректно работает. Когда пытаюсь обновиться то все файлы начинают качаться по новой, хотя они присутствуют в папке. Как сделать чтобы качались ТОЛЬКО новые файлы?
+++++++++++++++++++++++++++++
Set avp_path=C:\WebServers\home\123\www\avp\
Set log=log.txt
wget -P %avp_path% --timestamping -x -nH dnl-ru1.kaspersky-labs.com/index/6/u0607g.xml -o %log%
call kav_up.exe -main
wget -P %avp_path% --timestamping -B dnl-ru1.kaspersky-labs.com -i main.txt -x -nH -o %log%
call kav_up.exe -othes
wget -P %avp_path% --timestamping -B dnl-ru1.kaspersky-labs.com -i othes.txt -x -nH -o %log%Set avp_path=C:\WebServers\home\10.2.11.41\www\avp\
Set log=log.txt
wget -P %avp_path% --timestamping -x -nH dnl-ru1.kaspersky-labs.com/index/6/u0607g.xml -o %log%
call kav_up.exe -main
wget -P %avp_path% --timestamping -B dnl-ru1.kaspersky-labs.com -i main.txt -x -nH -o %log%
call kav_up.exe -othes
wget -P %avp_path% --timestamping -B dnl-ru1.kaspersky-labs.com -i othes.txt -x -nH -o %log%
августа 9, 2008 - 18:40
Киря Робски
не видел
XuT
обсудили в icq
Блоговед
всегда готов к обсуждению
августа 13, 2008 - 18:31
Хотел почитать исходники и, возможно, переписать на юниксовом шелле/пхп — www.dobrih.net/files/avp/kav_up.scr.zip не качается
августа 13, 2008 - 20:57
yanis
исправил. уже 3 раз вроде. оказывается не все сылки поправил
www.dobrih.net/files/avp/kav_upd.scr.zip
августа 14, 2008 - 07:50
Спасибо.
Я вчера уже начал писать, как закончу — дам ссылку на результат. Плохо что в шелле ХМЛ-парсера нет никакого, а «настоящие» языки программирования неохота мучать
августа 15, 2008 - 14:25
yanis, хоть мы и обсудили с тобой , отпишу для всех
XuT жаловался, что у него постоянно все файлы закачиваются.
ответ был такой — вначале запускаешь скрипт , он первый раз скачивает и фиксирует даты. затем, при новой закачке он качает только изменившиеся файлы.
проблемы бывают такие что качает все. с чем связано трудно сказать. нужно попробовать новые версии wget.
как альтернатива, изменить программу (как ты и сделал в nix варианте), сверяя размер и дату файла на сервере и в xml
августа 15, 2008 - 13:53
А можно запостить сюда обсуждение в ICQ
XuT
обсудили в icq
по поводу wget -timestamping
?
августа 15, 2008 - 16:43
С размерами файлов вроде лучше — но, увы, не во всех файлах проставлен атрибут FileSize. Мой скрипт будет такие файлы каждый раз качать... Хотя я попробую скомбинировать — если атрибут проставлен, то верить ему. Если нет — то проверять с сервера
августа 15, 2008 - 17:41
*никсовая версия здесь, обсуждаем:
forum.lissyara.su/viewtop...f=14&t=10414