Windows-Server-2008-R2

來自安全事件日誌的 XML 查詢過濾器的意外結果

  • May 13, 2018

伙計們,

我正在嘗試為 Windows 事件日誌查看器製作一個自定義 XML / Xpath 過濾器,以從安全日誌的視圖中排除無數的“系統”登錄。在有關 XML 過濾的 Technet 部落格的幫助下,我設法做到了這一點:

<QueryList>
 <Query Id="0" Path="Security">
   <Select Path="Security">
     *[System[(EventID=4624)]] 
     and
     *[EventData[Data[@Name='TargetUserSid'] and  (Data!='S-1-5-18')]]
</Select>
 </Query>
</QueryList>

但出乎所有人的意料,我仍然有這樣的事件(當然還有其他事件)在視圖中:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
   <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
   <EventID>4624</EventID>
   <Version>0</Version>
   <Level>0</Level>
   <Task>12544</Task>
   <Opcode>0</Opcode>
   <Keywords>0x8020000000000000</Keywords>
   <TimeCreated SystemTime="2013-07-18T15:12:55.797049800Z" />
   <EventRecordID>199135861</EventRecordID>
   <Correlation />
   <Execution ProcessID="496" ThreadID="3028" />
   <Channel>Security</Channel>
   <Computer>SBS.domain.local</Computer>
   <Security />
 </System>
 <EventData>
   <Data Name="SubjectUserSid">S-1-0-0</Data>
   <Data Name="SubjectUserName">-</Data>
   <Data Name="SubjectDomainName">-</Data>
   <Data Name="SubjectLogonId">0x0</Data>
   <Data Name="TargetUserSid">S-1-5-18</Data>
   <Data Name="TargetUserName">SBS$</Data>
   <Data Name="TargetDomainName">DOMAIN</Data>
   <Data Name="TargetLogonId">0x684af79a</Data>
   <Data Name="LogonType">3</Data>
   <Data Name="LogonProcessName">Kerberos</Data>
   <Data Name="AuthenticationPackageName">Kerberos</Data>
   <Data Name="WorkstationName">
   </Data>
   <Data Name="LogonGuid">{9D5E970C-928D-E3FD-8D96-09044670F33E}</Data>
   <Data Name="TransmittedServices">-</Data>
   <Data Name="LmPackageName">-</Data>
   <Data Name="KeyLength">0</Data>
   <Data Name="ProcessId">0x0</Data>
   <Data Name="ProcessName">-</Data>
   <Data Name="IpAddress">fe80::cc18:cb50:1710:c2a7</Data>
   <Data Name="IpPort">6413</Data>
 </EventData>
</Event>

我很難理解為什麼具有 S-1-5-18 的 TargetUserSid 屬性的事件已包含在視圖中,而它不應該包含在視圖中。它也適用於另一個方向 - 如果我將過濾器定義為*[EventData[Data[@Name='TargetUserSid'] and (Data='S-1-5-18')]],我會看到具有不同 TargetUserSid 的事件“滑過”。

從域對像中選擇不同的(長)SID 似乎可以按預期工作,並讓我看到僅相應地設置了 TargetUserSid 的事件。

我也嘗試過濾其他屬性,如 TargetUserName,但只是遇到類似的問題。

非常感謝有關如何修復我的查詢或類似案例的工作範例的任何提示。

試試這個:

<QueryList>
 <Query Id="0" Path="Security">
   <Select Path="Security">*[System[(EventID=4608)]]</Select>
   <Suppress Path="Security">*[EventData[Data[@Name="TargetUserSid"] = "S-1-5-18"]]</Suppress>
 </Query>
</QueryList>

我在 Windows 10 桌面作業系統上觀察到了同樣的情況。像下面這樣的特定查詢,而不是給出指定的事件,會導致所有流程創建事件。但是,相同的查詢在 Server 2012 OS 中執行良好。

<QueryList>
<Query Id="0" Path="Security">
  <Select Path="Security">
       *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\process0.exe'  or Data='C:\Windows\System32\process1.exe' or Data='C:\Windows\process2.exe')]]
       and 
       *[System[(EventID=4688)]]
   </Select>
</Query>
</QueryList>

我的解決方法是將搜尋屬性值分開,如下所示:

<QueryList>
 <Query Id="0" Path="Security">
   <Select Path="Security">
       (*[EventData[Data[@Name='NewProcessName'] ='C:\Windows\System32\process0.exe']] 
        or
        *[EventData[Data[@Name='NewProcessName'] ='C:\Windows\process1.exe']]
        or
        *[EventData[Data[@Name='NewProcessName'] = 'C:\Windows\process2.exe']])
       and 
       *[System[(EventID=4688)]]
   </Select>
 </Query>
</QueryList>

引用自:https://serverfault.com/questions/524444