PSSCRIPTS.DE | Sysmon / Sysinternals Installation

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

  1. 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.
  2. Netzwerkverfügbarkeit prüfen
    • Mit Test-NetConnection wird bis zu dreimal geprüft, ob der Download-Server erreichbar ist.
  3. Download und Entpacken
    • Das SysinternalsSuite-Paket wird per Invoke-WebRequest heruntergeladen und anschließend mit Expand-Archive entpackt.
  4. EULA-Akzeptanz setzen
    • Bevor Sysmon installiert werden kann, müssen die Sysinternals-AGB akzeptiert werden. Dafür werden entsprechende Registry-Einträge erstellt.
  5. Sysmon Installation
    • Falls Sysmon noch nicht vorhanden ist, wird es mittels Sysmon64.exe -i und dem Pfad zur Konfigurationsdatei installiert.
  6. 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

  1. Konfigurationsdatei
    • Das Skript nutzt eine Beispielkonfigurationsdatei aus dem Repository olafhartong/sysmon-modular. Ihr könnt auch eigene Sysmon-Configs einsetzen.
  2. Zielverzeichnis
    • Aktuell wird alles in C:\Program Files\sysinternals entpackt. Dies kann bei Bedarf geändert werden.
  3. 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.
  4. 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 SysinternalsOffizielle Dokumentation, Download-Links und Beschreibungen der Sysinternals-Tools
Docs: Sysmon UsageDetailierte Informationen zur Installation und Konfiguration von Sysmon
GitHub: olafhartong/sysmon-modularSysmon-Konfigurationsmodule zur granularen Anpassung (verwendet im Skript)
Tech Community: Sysmon DeploymentTipps und Best Practices zur Sysmon-Installation und -Konfiguration
WindowsPro.de: Sysmon in der PraxisPraxisbericht und Anleitung zur Nutzung von Sysmon in Windows-Umgebungen

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*