воскресенье, 15 апреля 2018 г.

Kaspersky. Инвентаризация ПО

Приветствую, уважаемый читатель!

Сегодня хочу поделиться опытом получения списка установленного программного обеспечения на компьютерах при помощи централизованной системы антивирусной защиты Kaspersky 10. 



Антивирус Kaspersky помимо защиты от вредоносного ПО позволяет управлять программным обеспечением на компьютерах, где он установлен. Соответственно, на сервере управления KSC 10 ведется централизованный реестр всего ПО на объектах защиты (Дополнительно – Управление программами – Реестр программ).


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

Все попытка найти решение в консоли управления потерпели неудачу, и ничего лучше, чем глянуть БД KSC 10, с целью определить, как он хранит информацию о ПО, придумано не было J

Итак,

список всего программного обеспечения хранится в представлении:
[%Имя БД Касперского%].[dbo].[v_akpub_application]

Нам интересны следующие поля данного представления:
wstrDisplayName – название ПО;
nHostId – id компьютера, на котором ПО установлено;
nProductId – id самой программы.

Список всех компьютеров, с их доменными именами хранится
[%Имя БД Касперского%].[dbo].[v_akpub_host]


Нам интересны следующие поля данного представления:
wstrDisplayName – имя компьютера;
nId - id компьютера.



Фактически, для всех записей в представлении v_akpub_application необходимо добавить имя соответствующего компьютера из v_akpub_host, и можно начинать производить манипуляции по подсчету:

SELECT [BD].[dbo].[v_akpub_host].[wstrDisplayName],[BD].[dbo].[v_akpub_application].[nId]
      ,[BD].[dbo].[v_akpub_application].[nProductId]
      ,[BD].[dbo].[v_akpub_application].[wstrDisplayName] as SoftName
      ,[BD].[dbo].[v_akpub_application].[nHostId]
  FROM [BD].[dbo].[v_akpub_application]
  INNER JOIN [BD].[dbo].[v_akpub_host] ON [BD].[dbo].[v_akpub_application].[nHostId]=[BD].[dbo].[v_akpub_host].[nId]
  ORDER BY [BD].[dbo].[v_akpub_application].[wstrDisplayName]


Результат выполнения запроса я выгрузил в csv-файлик и загрузил в Splunk

source="soft.csv"
| stats values(wstrDisplayName) as Comps by SoftName


Соответственно, таким образом можно получить список компьютеров для каждого экземпляра ПО. Может, кому пригодится J


3 комментария:

  1. не пояснил, что значит все эти параметры в квадратных скобках []

    ОтветитьУдалить
    Ответы
    1. T-SQL однако
      Итак по-порядку
      ORDER BY [BD].[dbo].[v_akpub_application].[wstrDisplayName]
      [имя бд].[имя схемы].[имя таблицы].[имя столбца]

      Удалить
  2. Спасибо. Конечно пригодится

    ОтветитьУдалить