Wer eine größere Domänen Umgebung ohne SIEM betreibt, weiß wie Aufwendig es ist remote den Eventlog von mehreren Systemen auf das vorkommen eines bestimmten Log-Eintrages hin zu untersuchen.

    Ein einfacherer Weg, wenn auch nicht ganz ohne Vorbedingungen, ist die verwendung der Powershell. Dazu muss auf dem abzufragenden Systeme jedoch PSRemoting aktiviert sein. Dies kann entweder auf dem Zielsystem selber erfolgen

    Enable-PSRemoting -force

    oder Remote mittels psexec.

    psexec \[computer name] -u [admin account name] -p [admin account password] -h -d powershell.exe "enable-psremoting -force"

    Ist die Aktivierung erfolgt, so kann mit dem Commandlet Get-Eventlog der Eventlog eines remote Systems abgefragt werden.

    Import-Module ActiveDirectory
    invoke-command {get-eventlog -LogName Security } -ComputerName Computername1

    Für eine gezielte Eventlog-Suche bietet es sich an, die Eventlogs vorzufiltern:

    Import-Module ActiveDirectory
    invoke-command {get-eventlog -LogName Security -After (Get-Date).Adddays(-1) | where { $_.InstanceId -EQ 0 }} -ComputerName Computername1

    Es ist natürlich auch möglich, alle DCs auf das vorkommen gewisser Eventlogs hin zu untersuchen. Unter Windows 2008 R2 dokumentiert zum Beispiel das Security-Event 4726 das Löschen eines AD-Objektes.

    Import-Module ActiveDirectory
    $PCList=Get-ADDomainController -Filter * | Select-Object name
    
    foreach($name in $PCList)
    {
       invoke-command {get-eventlog -LogName Security -After (Get-Date).Adddays(-1) | where { $_.InstanceId -EQ 4726 }} -ComputerName $PCList.name
    }

    Zum Testen kann so ein Befehl auch auf einen einzelnen Rechner bzw. Domain-Controller reduziert werden bis man sicher ist, dass die Filterung wie gewünscht funktioniert.

    $PCList=Get-ADComputer -Filter *|where {$_.Name -eq "ABC***"} | Select-Object Name
    
    $PCList=Get-ADDomainController -Filter * |where {$_.Name -eq "Server1"} | Select-Object Name

    Sicherheit von PSRemoting

    Bezüglich der Sicherheit von PSRemoting empfiehlt es sich die beiden verlinkten Seiten unter Links zu lesen, da PSRemoting gegen Domänen-Mitgleider anders Verhält als bei nicht Domänen Mitglieder.

    "When using Kerberos authentication in a domain, Windows PowerShell knows that it can trust the other computer because the domain controller is capable of verifying that system’s identity. When not in a domain environment, Windows PowerShell has no way of knowing if the system you’re trying to connect to is a malicious system spoofing as a legitimate computer. […] Kerberos protocol will only work with computer names, so Windows PowerShell will default to NTLM authentication any time an IP address is used." (Quelle)

    Leave A Reply