Почему OSQuery не включает информацию о событии «Компьютер» при чтении журналов событий Windows?

#windows #event-log #osquery

#Windows #журнал событий #osquery

Вопрос:

Я пытаюсь использовать OSQuery в среде с WEF / WEC, и то, что я пытаюсь сделать, это собрать все события Windows, которые хранятся через подписки на серверах WEC.

Моя проблема в том, что когда я собираю события Windows с помощью OSQuery, я, похоже, не могу получить поле «Компьютер», которое включает имя хоста, которое фактически сгенерировало событие.

Кому-нибудь удалось заставить это работать? Или это фактическое ограничение OSquery? При просмотре схемы таблицы windows_events (https://osquery.io/schema/4.5.1/#windows_events ) похоже, что поле «Компьютер» не было принято во внимание.

В качестве примера, у меня есть WEC, настроенный на хосте с именем DESKTOP-JC2OUUQ, и у меня есть подписка на ноутбук с именем DESKTOP-BEH0A7O. Журналы событий правильно передаются в WEC, и я могу их получить. Ниже приводится одно из событий, которые я получаю:

 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event" xml:lang="en-US">
<System>
  <Provider Name="Microsoft-Windows-Security-SPP" Guid="{E23B33B0-C8C9-472C-A5F9-F2BDFEA0F156}" EventSourceName="Software Protection Platform Service" /> 
  <EventID Qualifiers="16384">16384</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2020-10-22T16:20:17.2647971Z" /> 
  <EventRecordID>907</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>DESKTOP-BEH0A7O</Computer> 
  <Security /> 
  </System>
<EventData>
  <Data>2020-12-18T12:30:17Z</Data> 
  <Data>RulesEngine</Data> 
  </EventData>
<RenderingInfo Culture="en-US">
  <Message>Successfully scheduled Software Protection service for re-start at 2020-12-18T12:30:17Z. Reason: RulesEngine.</Message> 
  <Level>Information</Level> 
  <Task /> 
  <Opcode /> 
  <Channel /> 
  <Provider>Microsoft-Windows-Security-SPP</Provider> 
<Keywords>
  <Keyword>Classic</Keyword> 
  </Keywords>
  </RenderingInfo>
  </Event>
  

Когда я пытаюсь собрать это событие с помощью OSQuery, я получаю следующий вывод:

 {
    "name": "windows_events_query",
    "hostIdentifier": "DESKTOP-JC2OUUQ",
    "calendarTime": "Thu Oct 22 16:26:14 2020 UTC",
    "unixTime": 1603383974,
    "epoch": 0,
    "counter": 0,
    "numerics": false,
    "decorations": {
        "host_uuid": "A7A0828C-1264-4E24-A67F-F5B69BE86165",
        "username": "vagrant"
    },
    "columns": {
        "data": "{"EventData":["2020-12-18T12:30:17Z","RulesEngine"]}",
        "datetime": "2020-10-22T16:20:17.2647971Z",
        "eventid": "16384",
        "keywords": "0x80000000000000",
        "level": "4",
        "provider_guid": "{E23B33B0-C8C9-472C-A5F9-F2BDFEA0F156}",
        "provider_name": "Microsoft-Windows-Security-SPP",
        "source": "Application",
        "task": "0",
        "time": "1603383958"
    },
    "action": "added"
}
  

Как вы можете видеть, среди других полей я не вижу тега «Компьютер», который, насколько мне известно, является единственным, содержащим фактический хост, который сгенерировал событие. Есть ли какой-либо способ получить это значение с помощью OSQuery или это ограничение?

Спасибо!

Комментарии:

1. Насколько вы уверены, что это одно и то же событие? Это единственный идентификатор события 16384 в вашем журнале?

2. Я почти уверен, что это то же самое. На самом деле, это всего лишь пример, поскольку это происходит с каждым событием, которое я получаю. Я проверил средство просмотра событий на обоих хостах, чтобы убедиться, что на обоих серверах не было повторяющихся событий.

3. Кроме того, я пытался отправлять пользовательские события через командную строку с теми же результатами.

4. Хорошо, я только что заметил, что в JSON есть поле hostIdentifier , которое не сопоставляется ни <Computer> с чем, кроме XML. Существует также decorations.host_uuid , который может содержать необходимую вам информацию, если вы узнаете, как ее декодировать (где-то должна быть таблица сопоставления)

5. Идентификатор хоста и украшения добавляются OSQuery в начало события. Из того, что я знаю, оба ссылаются на хост, на котором запущен агент OsQuery, а не на удаленный хост.

Ответ №1:

Osquery не поддерживает это Computer поле. Теперь это происходит:

https://github.com/osquery/osquery/pull/6952