Kaspersky security center отчет об установленных программах

Обновлено: 06.07.2024

Как это ни странно, я нашёл на Хабре всего одну статью по данной тематике — и ту в песочнице и сильно незаконченную фактически содержащую в себе маленький кусочек чуть переделанной справки по продукту. Да и Google по запросу klakaut молчит.

Я не собираюсь рассказывать, как администрировать иерархию Kaspersky Security Center (далее по тексту KSC) из командной строки — мне это пока не понадобилось ни разу. Просто хочу поделиться некоторыми соображениями по поводу средств автоматизации с теми, кому это может понадобиться, и разберу один кейс, с которым мне пришлось столкнуться. Если тебе, %habrauser%, эта тема будет интересной — добро пожаловать под кат.

Исторически сложилось так, что в качестве средства антивирусной защиты на работе я предпочитаю продукты Лаборатории Касперского (далее ЛК). Причины и прочие священные войны личных мнений, пожалуй, оставим за кадром.

Естественно, хотелось бы централизованно развернуть, защитить, оградить и не пущать рисовать красивые графики, интегрироваться в существующие системы мониторинга и заниматься прочим перекладыванием работы с больной головы на здоровый сервер. И если с развёртыванием и защитой тут всё более или менее в порядке (у ЛК даже есть какие-то онлайн-курсы по продуктам), то с интеграцией уже сильно грустнее: в последней на текущий момент версии KSC 10.2.434 появилась интеграция аж с двумя SIEM: Arcsight и Qradar. На этом всё.

Для интеграции в что-то своё KSC предоставляет аж 2 интерфейса:

    : в БД KSC есть ряд представлений с именами, начинающимися на «v_akpub_», из которых можно достать какую-то информацию о состоянии антивирусной защиты. : DCOM-объект, позволяющий скриптовать работу с KSC.

Минусы klakdb очевидны: чтобы напрямую обратиться к БД, нужно иметь к этой БД доступ, что приводит к необходимости лишних телодвижений по созданию правил доступа в межсетевых экранах, настройке прав доступа на серверах СУБД и прочему крайне неувлекательному времяпрепровождению. Ну и плюс мониторинг актуальности всех этих правил, естественно. Особенно интересно становится, когда имеется 20+ серверов — и все в разных филиалах, в каждом из которых свои администраторы.

klakaut в этом плане значительно более интересен: подключившись к корневому серверу иерархии, можно средствами самого KSC пройтись по оной иерархии и получить доступ ко всем нужным данным. Например, построить дерево серверов KSC с пометкой, кто из них живой, а кто нет, позапускать задачи, поперемещать компьютеры и вообще дать волю фантазии.

Минусы тоже есть, естественно: долго и сложно. Если нужно собрать какую-то статистику — нужно будет сначала долго писать скрипт, а потом долго ловить баги ждать, когда он отработает.

Естественно, никто не запрещает (по крайней мере, мне про это неизвестно) использовать оба механизма вместе: например, пройтись по иерархии серверов с помощью klakaut, получить полный список серверов KSC с информацией об используемых БД, а потом уже передать эту информацию в более другие средства автоматизации, которые удалят устаревшие правила из сетевых экранов, создадут новые, дадут разрешения на доступ и принесут кофе в постель отредактируют список источников данных в вашей системе мониторинга, которая, в свою очередь, опросит список и, обнаружив какие-нибудь девиации, с помощью klakaut сделает что-нибудь хорошее. Ну, или просто зарегистрирует инцидент в трекере. Тогда что-нибудь хорошее сделают администраторы в ручном режиме.

Воодушевлённый всеми этими соображениями, я написал свой первый скрипт:

И запустил его на сервере:

Если использовать js, эта ошибка не возникает. Интересно, почему.

Открыв консоль KSC, я убедился, что с правами у меня всё в порядке.

К сожалению, KSC не логирует неудачные попытки входа. Переписка с вендором показала, что логирование неудачных попыток входа можно включить (это была отдельная увлекательная история, которая, кстати, ещё не закончилась), однако данная конкретная попытка в логи всё равно попадать отказалась.

Казалось бы, можно сделать вот так:

В этом случае никаких ошибок не будет, но указывать логин с паролем открытым текстом в скрипте мне не показалось замечательной идеей. Новая переписка с техподдержкой ЛК подарила мне следующую рекомендацию:

Необходимо выставить в настройках COM, на вкладке Default Properties:
Default Authentication Level: Packet
Default Impersonation Level: Delegate

Эта инструкция заставила работать исходный скрипт, но показалась мне сомнительной в плане безопасности, поэтому я решил покопать чуть глубже. После некоторого времени поисков нашёлся добрый человек, который подсказал мне, как задать указанные уровни проверки подлинности и олицетворения для конкретного объекта, а не разрешать всем и всё сразу:

Вот так скрипт никаких ошибок выдавать не стал. Первый квест пройден.

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

Следующая задача: получить от KSC данные об используемой БД.

А вот тут всё сложно: документация о том, как это сделать, молчит. Исследование класса KlAkProxy ничего интересного не выявило, кроме параметра KLADMSRV_SERVER_HOSTNAME, который оказался идентификатором компьютера, на котором установлен KSC.

Перейдём тогда к компьютеру, для этого есть специальный класс KlAkHosts2. Для сокращения количества кода приведу только содержимое блока try:

Обратите внимание: переменная $Params, которую я использовал при подключении к KSC — экземпляр класса KlAkParams. А переменная $HostParams при, на мой взгляд, аналогичной функциональности, является экземпляром класса KlAkCollection. Почему используются разные классы — боюсь даже представить. Видимо, то, что SetAt принимает первым аргументом только целочисленные значения — очень принципиальный момент.

Данный код вернул значение «KSC», а значит, я на верном пути.

Метод GetHostInfo класса KlAkHosts2 достаточно хорошо задокументирован, но — не содержит нужной мне информации. Увы и ах. Зато есть метод GetHostSettings. Всё описание для которого сводится к следующему:

Давайте, заглянем внутрь:

Пробежавшись глазами по названиям секций, я решил просмотреть 85 и 87, поскольку остальные на нужное мне были не очень похожи.

Секция 85, судя по всему, отвечает за события и ныне нам неинтересна. А вот в 87 есть что-то, на что стоит обратить внимание:

Тут я воспользовался одним из предыдущих кейсов, где упоминалось, что нужные данные следует брать именно из KLSRV_CONNECTION_DATA (тогда я ещё не знал, что это вообще такое, просто отложилось).

Ну, вот, в общем-то, и всё. Данные об используемой БД получены. Квест пройден.

Наверное, ещё неплохо бы набросать скрипт для прохождения по иерархии серверов. Здесь ничего загадочного не оказалось, всё было вполне по документации. Я написал скрипт, который выбирает UID родителя, UID самого сервера, экземпляр СУБД и имя БД и выводит их в stdout через разделитель.

Стенд маленький, поэтому результат оказался не очень впечатляющим:

Естественно, чтобы превратить точку в актуальное имя сервера, придётся поколдовать с KlAkHosts2.GetHostInfo(), но это уже не столь страшно, просто ещё сколько-то кода.

Техподдержка ЛК, естественно, пугала меня тем, что структура SS_SETTINGS в следующих релизах KSC может поменяться, поэтому так лучше не делать. К сожалению, даже мой внутренний перфекционист считает, что скрипт нельзя просто написать и забыть: при смене версии используемого ПО его по-любому придётся тестировать и отлаживать. Так что пока пользуемся тем, что есть, а проблемы будем решать по мере поступления, благо, техника уже отработана.

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

  • Версиях операционных систем Microsoft Windows.
  • Исполняемых файлах, которые запускаются при старте операционной системы. Определить, какие из этих исполняемых файлов являются системными, а какие исполняемые файлы имеют бизнес-значение.
  • Производителях, чьи программы являются доверенными в локальной сети организации.
  • Офисных программах, их версиях.
  • Специализированных программах, разработанных в организации.
  • Корпоративных стандартных пакетах программ, их составе.
  • Хранилищах дистрибутивов в локальной сети организации.

Чтобы собрать информацию о программах, которые используются на компьютерах локальной сети организации, вы можете использовать данные, представленные в папках Реестр программ и Исполняемые файлы программ . Папки Реестр программ и Исполняемые файлы программ входят в состав папки Программы и уязвимости дерева консоли Kaspersky Security Center.

Папка Реестр программ содержит список программ, которые обнаружил на клиентских компьютерах установленный на них Агент администрирования.

Компонент программы Kaspersky Security Center, осуществляющий взаимодействие между Сервером администрирования и программами "Лаборатории Касперского", установленными на конкретном сетевом узле (рабочей станции или сервере). Данный компонент является единым для всех Windows-программ из состава продуктов компании. Для Novell-, Unix- и Mac-программ "Лаборатории Касперского" существуют отдельные версии Агента администрирования.

Папка Исполняемые файлы , содержит список исполняемых файлов, которые когда-либо запускались на клиентских компьютерах или были обнаружены в процессе работы задачи инвентаризации Kaspersky Endpoint Security.

Открыв окно свойств выбранной программы в папке Реестр программ или Исполняемые файлы программ , вы можете получить общую информацию о программе и информацию об исполняемых файлах программы, а также просмотреть список компьютеров, на которых установлена эта программа.

Клиент: Откуда и как Касперский собирает сведения о программах на компьютерах сети?

Консультант: Информация об установленных приложениях поступает через Агент администрирования. В качестве источника данных о программах выступает реестр Windows. При появлении в сети наблюдаемого приложения на Сервер администрирования передается соответствующее событие

Клиент: Можно подробнее о работе и настройках блока Реестр Программ в Касперский секьюрити Центр?

Консультант: Основная цель Реестра программ — предоставить администратору информацию об установленных в сети приложениях. Используя эту информацию, администратор видит, на каких компьютерах установлено то или иное приложение. Например, если в сети обнаружился интернет-браузер старой версии, администратор может принудительно обновить версию браузера на всех компьютерах.
Также Реестр программ может использоваться для отслеживания появления на компьютерах пользователей запрещенного в компании программного обеспечения. Например, в компании может быть запрещено использование IM-мессенджеров. Обнаружив в списке запрещенную программу, администратор может принять меры по ее удалению.

Клиент: Значит Агентами администрирования сканируется постоянно реестр?

Консультант: Информация об установленных на клиентских компьютерах программах отображается в контейнере Реестр программ узла Программы и уязвимости. За сбор данных отвечает Агент администрирования. Информация берется из веток реестра, формирующих список Programs and Features (в старых версиях операционных систем — Add/Remove Programs).
В зависимости от разрядности операционной системы, отслеживаются изменения в следующих ветках:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Сканирование веток реестра происходит при старте Агента администрирования или при изменениях в ветке реестра. За передачу информации на Сервер администрирования отвечает опция Информация об установленных программах в свойствах политики Агента администрирования. По умолчанию опция включена, то есть Сервер получает информацию об установленных приложениях, при желании ее можно отключить. В контейнере Реестр программ есть возможность задать конкретные приложения, для которых будут публиковаться события об установке программы на клиентском компьютере.
Например, если в компании существует политика, регламентирующая список запрещенных или нежелательных для использования приложений, администратор может задать список приложений и получать уведомления об их установке по электронной почте.
Список наблюдаемых приложений задается в свойствах контейнера Реестр программ в секции Наблюдаемые программы. Чтобы получать уведомления об установке/удалении наблюдаемых программ, нужно указать тип уведомления (по почте, по SNMP и т.д.) для события Установлена наблюдаемая программа / Удалена наблюдаемая программа в политике Агента администрирования.

Клиент: Какие фильтры и пользовательские настройки доступны в списке программ для поиска приложения?

Консультант: Список приложений содержит информацию обо всех приложениях когда-либо установленных в сети. Для удобства работы со списком можно использовать опции фильтрации:
— Группировать программы по названию — группирует различные версии одного и того же приложения по имени приложения
— Первая установка в сети — отображает приложения, установленные относительно определенной даты, например, до какой-то даты или после, или именно в конкретный день. Дата в качестве критерия фильтрации указывается вручную.
Для улучшения поиска приложений по списку или поиска компьютеров с установленными приложениями можно назначать теги. Например, создать единый тег для запрещенных приложений. Также можно создать отдельные теги для группы приложений, предназначенных для решения сходных задач, например, интернет-браузеры или офисные приложения.
Теги задаются в свойствах конкретного приложения. Список тегов единый, поэтому любой созданный тег будет доступен в списке для назначения другим приложениям. Кроме того, теги можно назначать и для компьютеров. Для таких тегов ведется отдельный единый список, отображаемый в свойствах каждого компьютера. Например, можно объединить все компьютеры, назначенные на роль Инфорсера с помощью тега.
Теги могут использоваться в утилите Поиск в случае глобального поиска компьютеров на Сервере администрирования. Для этого на закладке Поиск ->Реестр программ в качестве критерия поиска достаточно указать нужный тег.
Кроме того, теги могут использоваться при создании Группы лицензионных программ.

Для использования представленных возможностей необходимо приобрести дополнительную лицензию на продукт Управление Системами Kaspersky Systems Management Предлагаем Вашей организации - бесплатный электронный ключ Kaspersky Systems Management для тестирования. - Купить Kaspersky Systems Management со значительной скидкой у Официального Партнера Лаборатории Касперского.

Как уже упоминалось, Kaspersky Security Center обладает весьма серьезным функционалом по мониторингу сети. В том числе KSC позволяет мониторить ПО, установленное на рабочих станциях и серверах. Однако далеко не всегда этот список получается актуальным. И тогда у системного администратора возникает вопрос, как очистить реестр программ в Kaspersky Security Center от программ, которые на самом деле уже удалены.

На самом деле, в данном случае вопрос нужно разделить на две разных ситуации.

Как очистить реестр программ в Kaspersky Security Center

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

Если у вас именно такая ситуация, с высокой долей вероятности поможет следующий способ: первым делом нужно зайти в папку C:\ProgramData\KasperskyLab\adminkit\1103\Inventory (иногда буква системного раздела может отличаться, но по умолчанию это C:\) на проблемном компьютере и удалить файлы PerUserApps.dat и

2. Учтите, что каталог ProgramData является скрытым, поэтому нужно включить отображение скрытых файлов и папок.

Как очистить реестр программ в Kaspersky Security Center

После этого перезапустите службу Агента администрирования Kaspersky Security Center на этом компьютере.

Как очистить реестр программ в Kaspersky Security Center

Далее нужно запустить по-новой задачу инвентаризации ПО на сервере Kaspersky Security Center для этого компьютера.

Как очистить реестр программ в Kaspersky Security Center

Если по какой-то причине такая задача не создана на вашем сервере, вы всегда можете её создать.

Как очистить реестр программ в Kaspersky Security Center

Выберите версию антивирусного ПО, которое установлено на компьютере. Тип задачи должен быть Инвентаризация.

Как очистить реестр программ в Kaspersky Security Center

После того, как Агент администрирования, установленный на компьютере, проведет инвентаризацию установленных программ, их список должен прийти в норму.

Читайте также: