Sysmon (Teil der Sysinternals-Tools) ist ein mächtiges Überwachungstool, das detaillierte Informationen über Systemaktivitäten wie Prozessstarts und Netzwerkverbindungen sammeln kann. Mit Sysmon lassen sich Sicherheitslücken und verdächtige Aktivitäten in Echtzeit erkennen und analysieren.
Das folgende Skript zeigt, wie man das Sysinternals-Paket inklusive Sysmon automatisiert herunterlädt, installiert und eine Konfigurationsdatei einspielt.
Das PowerShell-Skript im Überblick
$sysinternals_repo = 'download.sysinternals.com'
$sysinternals_downloadlink = 'https://download.sysinternals.com/files/SysinternalsSuite.zip'
$sysinternals_folder = 'C:\Program Files\sysinternals'
$sysinternals_zip = 'SysinternalsSuite.zip'
$sysmonconfig_downloadlink = 'https://raw.githubusercontent.com/olafhartong/sysmon-modular/master/sysmonconfig.xml'
$sysmonconfig_file = 'sysmonconfig-export.xml'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if (Test-Path -Path $sysinternals_folder) {
Write-Host ('Sysinternals folder already exists')
} else {
$OutPath = $env:TMP
$output = $sysinternals_zip
New-Item -Path "C:\Program Files" -Name "sysinternals" -ItemType "directory"
# Mehrfacher Check für die Netzwerkverbindung
$X = 0
do {
Write-Output "Waiting for network"
Start-Sleep -s 5
$X += 1
} until(($connectreult = Test-NetConnection $sysinternals_repo -Port 443 | ? { $_.TcpTestSucceeded }) -or $X -eq 3)
if ($connectreult.TcpTestSucceeded -eq $true){
Try
{
Write-Host ('Downloading and copying Sysinternals Tools to C:\Program Files\sysinternals...')
Invoke-WebRequest -Uri $sysinternals_downloadlink -OutFile $OutPath\$output
# Entpacken
Expand-Archive -path $OutPath\$output -destinationpath $sysinternals_folder
Start-Sleep -s 10
# Sysmon Config herunterladen
Invoke-WebRequest -Uri $sysmonconfig_downloadlink -OutFile $OutPath\$sysmonconfig_file
# Sysmon Installation prüfen
$serviceName = 'Sysmon64'
If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
Write-Host ('Sysmon is already installed')
} else {
# Eula akzeptieren
Invoke-Command {reg.exe ADD HKCU\Software\Sysinternals /v EulaAccepted /t REG_DWORD /d 1 /f}
Invoke-Command {reg.exe ADD HKU\.DEFAULT\Software\Sysinternals /v EulaAccepted /t REG_DWORD /d 1 /f}
# Sysmon installieren mit Konfiguration
Start-Process -FilePath $sysinternals_folder\Sysmon64.exe -Argumentlist @("-i", "$OutPath\$sysmonconfig_file")
}
}
Catch
{
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
Write-Error -Message "$ErrorMessage $FailedItem"
exit 1
}
Finally
{
# Aufräumen: ZIP löschen
Remove-Item -Path $OutPath\$output
}
} else {
Write-Output "Unable to connect to Sysinternals Repo"
}
}
Funktionsweise
- Initialisierung der Variablen
- $sysinternals_repo und $sysinternals_downloadlink enthalten die Informationen, von wo das SysinternalsSuite-Paket bezogen wird.
- $sysinternals_folder definiert das Zielverzeichnis (z. B. C:\Program Files\sysinternals).
- $sysmonconfig_downloadlink verweist auf eine Beispiel-Konfigurationsdatei für Sysmon.
- $sysmonconfig_file legt den Namen dieser Konfigurationsdatei (lokal) fest.
- Netzwerkverfügbarkeit prüfen
- Mit
Test-NetConnection
wird bis zu dreimal geprüft, ob der Download-Server erreichbar ist.
- Mit
- Download und Entpacken
- Das SysinternalsSuite-Paket wird per
Invoke-WebRequest
heruntergeladen und anschließend mitExpand-Archive
entpackt.
- Das SysinternalsSuite-Paket wird per
- EULA-Akzeptanz setzen
- Bevor Sysmon installiert werden kann, müssen die Sysinternals-AGB akzeptiert werden. Dafür werden entsprechende Registry-Einträge erstellt.
- Sysmon Installation
- Falls Sysmon noch nicht vorhanden ist, wird es mittels Sysmon64.exe -i und dem Pfad zur Konfigurationsdatei installiert.
- Aufräumen
- Nach erfolgreichem Abschluss wird das heruntergeladene ZIP wieder gelöscht.
Sinn und Zweck von Sysmon
- Überwachung von Prozessen: Sysmon zeichnet detaillierte Prozessinformationen auf, inklusive Startzeitpunkt, Pfad und zusätzlicher Metadaten.
- Netzwerkaktivität: Auch ausgehende TCP/UDP-Verbindungen und Ports lassen sich überwachen.
- Sicherheitsvorfälle: Erkennen von ungewöhnlichen Aktionen, die auf Malware oder andere Kompromittierungen hindeuten.
Anpassungsmöglichkeiten
- Konfigurationsdatei
- Das Skript nutzt eine Beispielkonfigurationsdatei aus dem Repository olafhartong/sysmon-modular. Ihr könnt auch eigene Sysmon-Configs einsetzen.
- Zielverzeichnis
- Aktuell wird alles in C:\Program Files\sysinternals entpackt. Dies kann bei Bedarf geändert werden.
- Fallback für Netzwerk
- Standardmäßig werden maximal 3 Versuche unternommen, um das Repository zu erreichen. Wer häufiger/ länger warten möchte, passt die Schleife entsprechend an.
- Logverarbeitung
- Im Skript selbst ist keine Logverarbeitung enthalten. Events schreibt Sysmon in die Windows-Eventprotokolle.
- Für eine bessere Übersicht können zusätzliche PowerShell-Skripte oder SIEM-Tools genutzt werden, um die Sysmon-Logs zentral zu sammeln und auszuwerten.
Praxistipps
- Silent Installation: Möchtet ihr das Ganze ohne Ausgabedialoge automatisieren, kann man PowerShell im unbeaufsichtigten (silent) Modus ausführen oder das Skript als Aufgabenplanung (Task Scheduler) hinterlegen.
- Testumgebung: Bevor ihr das Skript auf Produktivsystemen einsetzt, testet es unbedingt in einer isolierten Umgebung, z. B. auf einer VM oder in einer LAB-Umgebung.
- Automatisches Update: Wer die Sysinternals-Tools regelmäßig aktualisieren möchte, kann dieses Skript in einen geplanten Task integrieren und in Intervallen ausführen.
Das vorgestellte PowerShell-Skript zeigt einen bequemen Weg, um Sysinternals-Suite und Sysmon automatisiert herunterzuladen und zu installieren. Durch die Einbindung einer passenden Konfigurationsdatei erhaltet ihr schnell einen umfassenden Überblick über die Aktivitäten im Betriebssystem – eine wertvolle Basis für Sicherheitsanalysen, Troubleshooting und forensische Untersuchungen.
Quellen
Microsoft Sysinternals | Offizielle Dokumentation, Download-Links und Beschreibungen der Sysinternals-Tools |
Docs: Sysmon Usage | Detailierte Informationen zur Installation und Konfiguration von Sysmon |
GitHub: olafhartong/sysmon-modular | Sysmon-Konfigurationsmodule zur granularen Anpassung (verwendet im Skript) |
Tech Community: Sysmon Deployment | Tipps und Best Practices zur Sysmon-Installation und -Konfiguration |
WindowsPro.de: Sysmon in der Praxis | Praxisbericht und Anleitung zur Nutzung von Sysmon in Windows-Umgebungen |
Hinterlasse jetzt einen Kommentar