DNS Server Analytical Filter

DNS Server Analytical Filter

DNS Logs filtern

Für etwaige Recherchezwecke ist es manchmal sinnvoll, die Analytischen und Debugprotokolle in der Ereignisanzeige einzublenden.

Protokollname: Microsoft-Windows-DNS-Server/Analytical

Interessant an diesen Ereignissen sind die Attribute unterhalb der Elemente Sytem und EventData wie z.B.

<EventID>256</EventID>
<Data Name=”InterfaceIP”>172.18.32.220</Data>

<Data Name=”Source”>172.18.32.220</Data>
<Data Name=”Destination”>172.18.32.220</Data>
<Data Name=”QNAME”>der-windows-papst.de.</Data>

Diese geben Aufschluss darüber, welcher Client im Netzwerk welche DNS-Anfrage stellt und wer diese beantwortet.

Hier mal ein zusammenhängendes Beispiel:

DNS Server Analytical Filter

DNS Recurse Query

DNS Recurse Response

DNS Response SUCCESS

DNS Server Analytical Filter

Mit der Powershell lassen sich die Daten wie folgt anzeigen.

DNS Analyse mit der Powershell FilterXPath

Get-WinEvent -oldest -LogName Microsoft-Windows-DNSServer/Analytical -FilterXPath “*[EventData[Data[@Name=’qname’]=’www.der-windows-papst.de.’]]”

Get-WinEvent -oldest -LogName Microsoft-Windows-DNSServer/Analytical -FilterXPath “*[EventData[Data[@Name=’InterfaceIP’]=’127.0.0.1′]]”

Get-WinEvent -oldest -LogName Microsoft-Windows-DNSServer/Analytical -FilterXPath “*[EventData[Data[@Name=’Source’]=’172.18.32.1′]]”

Get-WinEvent -oldest -LogName Microsoft-Windows-DNSServer/Analytical -FilterXPath “*[EventData[Data[@Name=’qname’]=’www.der-windows-papst.de.’] and EventData[Data[@Name=’Source’]=’172.18.32.1′]]” | Export-Csv -Path C:\Logs\Export.csv

Get-WinEvent -oldest -FilterHashtable @{LogName=’Microsoft-Windows-DNSServer/Analytical’} | Where-Object -Property Message -like ‘*www.der-windows-papst.de*’ | fl -Property Message

DNS Logs filtern

DNS Analyse mit der Powershell Startdatum

$StartTime= “7 April 2022 11:00”
$EndTime= “10 April 2022 12:00”

Get-WinEvent -oldest -MaxEvents 10 -FilterHashtable @{
LogName = “Microsoft-Windows-DNSServer/Analytical”
StartTime = $StartTime
EndTime = $EndTime
}

$StartTime= “9 April 2022 11:00”
$EndTime= “10 April 2022 12:00”

Get-WinEvent -oldest -MaxEvents 10 -FilterHashtable @{
LogName = “Microsoft-Windows-DNSServer/Analytical”
StartTime = $StartTime
EndTime = $EndTime
} | Select -expand Message

DNS Analyse mit der Powershell Startdatum

DNS Analyse mit der Powershell PSCustomObject

# LookUP
$FilterHashTable = @{
LogName = ‘Microsoft-Windows-DNSServer/Analytical’
ID = 279,257,256
StartTime = (Get-Date).AddHours(-20)
EndTime = Get-Date
}
$Events = Get-WinEvent -oldest -FilterHashtable $FilterHashTable | ForEach-Object {

$Values = $_.Properties | ForEach-Object { $_.Value }

[PSCustomObject]@{
ID = $_.ID
Time = $_.TimeCreated
InterfaceIP = $Values[1]
Source = $Values[2]
QNAME = $Values[4]
}
}

$Events | Format-Table -AutoSize

# RECURSE_QUERY
$FilterHashTable = @{
LogName = ‘Microsoft-Windows-DNSServer/Analytical’
ID = 260,261
StartTime = (Get-Date).AddHours(-20)
EndTime = Get-Date
}
$Events = Get-WinEvent -oldest -FilterHashtable $FilterHashTable | ForEach-Object {
$Values = $_.Properties | ForEach-Object { $_.Value }

[PSCustomObject]@{
Time = $_.TimeCreated
InterfaceIP = $Values[2]
Dest = $Values[1]
QNAME = $Values[4]
}
}

$Events | Format-Table -AutoSize

DNS Analyse mit der Powershell PSCustomObject

Mit den Values müsst ihr etwas spielen, wenn es um eine exakte Auswertung anhand einer Event-ID geht. Ein Value steht nicht immer für das gleiche Attribut.