Unerwartete Ergebnisse eines XML-Abfragefilters für das Sicherheitsereignisprotokoll

7

Leute,

Ich versuche, einen benutzerdefinierten XML / Xpath-Filter für die Windows-Ereignisprotokollanzeige zu erstellen, um die unzähligen "SYSTEM" -Anmeldungen aus der Ansicht des Sicherheitsprotokolls auszuschließen. Mit Hilfe des Technet-Blogs zur XML-Filterung bin ich so weit gekommen :

<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>

Aber gegen alle Erwartungen habe ich immer noch Ereignisse wie dieses (unter anderem natürlich) im Blick:

<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>

Ich habe Probleme zu verstehen, warum ein Ereignis mit dem TargetUserSid-Attribut von S-1-5-18 in die Ansicht aufgenommen wurde, obwohl dies nicht der Fall sein sollte. Es funktioniert auch in die andere Richtung - wenn ich den Filter so definiere *[EventData[Data[@Name='TargetUserSid'] and (Data='S-1-5-18')]], sehe ich Ereignisse mit einer anderen TargetUserSid "durchrutschen".

Die Auswahl einer anderen (langen) SID als eines Domänenobjekts scheint wie erwartet zu funktionieren und gibt mir eine Ansicht mit den Ereignissen, für die TargetUserSid nur entsprechend festgelegt wurde.

Ich habe auch versucht, nach anderen Attributen wie TargetUserName zu filtern, aber nur, um ähnliche Probleme zu finden.

Hinweise zur Behebung meiner Anfrage oder Arbeitsbeispiele für ähnliche Fälle sind sehr willkommen.

the-wabbit
quelle

Antworten:

4

Versuche dies:

<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>
Greg Askew
quelle
0

Ich habe das gleiche unter Windows 10 Desktop OS beobachtet. Eine bestimmte Abfrage wie unten führt zu bestimmten Prozesserstellungsereignissen, anstatt bestimmte Ereignisse anzugeben. Dieselbe Abfrage funktioniert jedoch auch unter Server 2012.

 <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>

Meine Problemumgehung besteht darin, die Suchattributwerte wie folgt zu trennen:

<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>
Akshat
quelle