Certified Cloud Developer


Seit meinem Einstieg in die Softwareentwicklung in den 80er-Jahren habe ich mich kontinuierlich in der jeweils aktuellen Technologie bewegt: von Assembler über C++ und Lisp/Common Lisp in den 1980er-Jahren, gefolgt von Java und Python in den 1990er-Jahren, später C# und .NET. Seit 2024 widme ich mich verstärkt wieder der Softwareentwicklung, nun im Kontext von KI-gestützten Systemen.

Als Anthropic-Certified Claude Developer setze ich moderne KI-Entwicklungsmethoden produktiv ein: Aufgaben, die früher Wochen an Entwicklungszeit beansprucht hätten, lassen sich heute in Stunden umsetzen. Aktuelles Beispiel ist Kontor, eine von mir entwickelte Handelsoberfläche mit Claude-API-Anbindung und einem eigenständigen Trader-Agent für KI-gestützte Marktanalyse, inklusive eines öffentlichen Wirtschaftskalenders mit allen Terminen.

Engineering is a Passion


Als System-Engineer (MCITP, CCP-V und AI Fluency & Claude Expert) betreue ich Netzwerkinfrastrukturen, führe Planungen durch, schule Mitarbeiter und führe Migrationen von Netzwerk, Server- als auch Client Infrastrukturen bis zum mittleren Enterprise Umfeld durch. Mein Aufgabengebiet umfasste der IT Support von mittelständischen Unternehmen als auch die Umsetzung von Projekten in Server und Clientnetzwerken unter den Betriebssystemen Microsoft, Mac OS und Linux resp. den Hypervisoren VMware, Hyper V und Citrix.

Mein Knowhow und Wissen sammelte ich in Projekten im Bereich öffentlicher und privater Auftraggeber.

 

Laptop-Audit:
Was ein Windows-Notebook im Hintergrund tut

BLG-1490-ch-deLernanleitung5 Minuten

Auf einem verwalteten Firmen-Notebook flackerte regelmässig ein schwarzes Konsolenfenster auf, und das System wurde träge. Windows bietet kein Gesamtbild, denn Taskplaner, Autostart, Dienste, Defender und Eventlog muss man einzeln durchsuchen. Der Artikel beschreibt ein Audit-Skript, das zwölf Bereiche nur lesend erfasst und jedem auffälligen Task Risikogründe zuordnet, sowie ein Bereinigungsskript mit WhatIf, Schutzliste und Restore. Ursache im Ausgangsfall war ein selbst angelegter geplanter Task. Treffer sind Hinweise, keine Malware-Bestätigung.

Inhalt 11 Abschnitte
  1. Auf einen Blick
  2. Das Problem: Kein Gesamtbild in Windows
  3. Aufbau: Audit und Bereinigung getrennt
  4. Die Heuristik: warum ein Task auffällt
  5. Die Bereinigung mit Schutzliste und Rückgängig
  6. Einsatz in sieben Schritten
  7. Typische Fehler
  8. Grenzen
  9. Einordnung: Was das für Admins und Helpdesk-Teams heisst
  10. Fazit
  11. Änderungshistorie
Symbolfoto zum Artikel „Laptop-Audit: Was ein Windows-Notebook im Hintergrund tut“ (neourban, laptop, hardware)
Windows-Laptop-Audit
2 Skripte, 12 Bereiche
Foto: markusspiske / Pixabay

Alle 3 Stunden blitzt ein schwarzes Konsolenfenster auf, und das Notebook wird träge. Im Ausgangsfall war die Ursache ein geplanter Task, den jemand selbst angelegt hatte, mit -WindowStyle Hidden. Das Fenster erscheint trotzdem kurz.

Auf einen Blick

  • Zwei Skripte statt Handarbeit. Ein Audit sammelt zwölf Bereiche nur lesend, ein zweites deaktiviert auffällige Tasks kontrolliert.
  • Das Audit beendet nichts und löscht nichts. Es schreibt je Bereich eine CSV, eine Zusammenfassung und ein Manifest mit SHA256 je Datei.
  • Das Bereinigungsskript kennt -WhatIf, eine Schutzliste und -RestoreFromLog. Jede Änderung steht in einer CSV und lässt sich zurücknehmen.
  • Treffer sind Hinweise, keine Malware-Bestätigung. Ein rundll32 in einem System-Task ist normal.

Das Problem: Kein Gesamtbild in Windows

Auf einem verwalteten Firmen-Notebook erschien regelmässig ein schwarzes Konsolenfenster, und das System reagierte langsamer. Windows bietet für solche Fälle kein Gesamtbild. Taskplaner, Autostart, Dienste, Defender und Eventlog durchsucht man einzeln, und jedes Fenster zeigt nur einen Ausschnitt.

Im Ausgangsfall endete die Suche bei einem geplanten Task. Er startete alle drei Stunden ein PowerShell-Skript mit -WindowStyle Hidden. Der Parameter versteckt das Fenster, aber nicht vollständig: Es blitzt beim Start kurz auf. Der Task war eine Altlast. Solche Altlasten fallen in keiner Inventarliste auf.

Aufbau: Audit und Bereinigung getrennt

Die Lösung besteht aus zwei Skripten mit klar getrennten Rollen.

Skript Aufgabe Verhalten
Laptop-Audit.ps1
Erfasst zwölf Bereiche
Nur lesend, beendet und löscht nichts
Disable-SuspiciousTasks.ps1
Deaktiviert auffällige Tasks
Ändert, unterstützt -WhatIf, schützt kritische Tasks

Das Audit sammelt zwölf Bereiche und legt je eine CSV im Ordner Log\v<Version>_<Zeitstempel>\ ab: geplante Tasks, Taskplaner-Events, Prozesse (zwei Messungen, daraus das CPU-Prozent), TCP-Verbindungen, DNS-Cache, Dienste, Autostarts (Run, RunOnce und Startup-Ordner), installierte Software, mögliche Fernwartungs- und Überwachungstools, WMI-Persistenz, Defender-Status und System-Warnungen. Dazu kommen 00-Summary.md, 00-RunMetadata.json und 00-Manifest.csv. Eine Datei LATEST.txt zeigt auf den letzten Lauf.

Fernwartungssoftware verdient besondere Aufmerksamkeit, denn sie ist ein beliebtes Angriffsziel. Wie schnell das zum Problem wird, zeigt der Artikel N-able N-central: kritische Lücke wird bereits ausgenutzt. Der Abgleich im Audit läuft allerdings nur über Namen, deshalb erscheinen auch legitime Agenten der eigenen IT in der Liste.

Die Heuristik: warum ein Task auffällt

Die Funktion Get-RiskReasons vergibt Gründe nach einfachen Mustern. Sie sucht PowerShell und sogenannte LOLBins (Programme von Windows, die Angreifer missbrauchen), Obfuskation und Download-Aufrufe, Benutzer- und Temp-Pfade sowie versteckte Fenster. Die Liste der LOLBAS-Projekte beschreibt viele dieser Programme.

function Get-RiskReasons {
    param([string]$Text, [bool]$Hidden)
    $r = [System.Collections.Generic.List[string]]::new()
    if ($Text -match '(?i)\bpowershell(\.exe)?\b|\bpwsh(\.exe)?\b') { $r.Add('PowerShell') }
    if ($Text -match '(?i)\b(cmd|wscript|cscript|mshta|rundll32|regsvr32)(\.exe)?\b') { $r.Add('Script/LOLBin') }
    if ($Text -match '(?i)-enc(odedcommand)?\b|frombase64string|downloadstring|invoke-webrequest|\biwr\b|\biex\b') { $r.Add('Obfuscation/Download') }
    if ($Text -match '(?i)\\AppData\\|\\Temp\\|\\Downloads\\|\\Users\\Public\\') { $r.Add('Benutzer-/Temp-Pfad') }
    if ($Hidden -or $Text -match '(?i)windowstyle\s+hidden') { $r.Add('Verstecktes Fenster') }
    $r -join '; '
}

Das Ergebnis steht in der Spalte RiskReasons. Wer nur diese Funktion braucht, bekommt mit Get-ScheduledTask und einer Schleife über alle Tasks bereits eine brauchbare Liste. Die Gründe sind Hinweise zum Nachsehen, kein Urteil.

Die Bereinigung mit Schutzliste und Rückgängig

Das zweite Skript liest Kandidaten aus der letzten Audit-CSV oder macht einen Live-Scan. Es kennt drei Modi: Standard (Safe), -IncludeMicrosoftSystem und -DisableAllFlagged -Force. Der Standardmodus erfasst nur Tasks im Wurzelordner mit PowerShell sowie versteckte PowerShell-Tasks aus Benutzerpfaden.

# Kritische Windows-/MDM-Pfade nie anfassen
$protected = @(
    '^\\Microsoft\\Windows\\CertificateServicesClient\\',
    '^\\Microsoft\\Windows\\Workplace Join\\',
    '^\\Microsoft\\Windows\\EnterpriseMgmt\\',
    '^\\Microsoft\\Intune\\',
    '^\\Microsoft\\Windows\\BitLocker',
    '^\\Microsoft\\Windows\\WindowsUpdate\\',
    '^\\Microsoft\\Windows\\UpdateOrchestrator\\'
)

if ($RestoreFromLog) {
    Import-Csv $RestoreFromLog | Where-Object Action -eq 'Disabled' | ForEach-Object {
        if ($PSCmdlet.ShouldProcess("$($_.TaskPath)$($_.TaskName)", 'Enable')) {
            Enable-ScheduledTask -TaskPath $_.TaskPath -TaskName $_.TaskName | Out-Null
        }
    }
    return
}

Die Schutzliste hält Tasks heraus, ohne die ein verwaltetes Gerät nicht mehr funktioniert: Zertifikatsdienste, Workplace Join, die Geräteverwaltung, Intune, BitLocker und Windows Update. Jede Änderung landet in DisabledTasks.csv. Mit -RestoreFromLog aktiviert das Skript alle Tasks wieder. Der Modus -DisableAllFlagged -Force ist für verwaltete Geräte tabu, denn er kann Enrollment, Zertifikate und Lizenzprüfung brechen.

Einsatz in sieben Schritten

  1. PowerShell als Administrator öffnen und in den Skriptordner wechseln, etwa C:\Tools\LaptopAudit.
  2. Das Audit starten: .\Laptop-Audit.ps1, optional mit -HoursBack 72 -PerformanceSampleSeconds 20.
  3. Log\<Lauf>\00-Summary.md lesen: auffällige und stündliche Tasks, mögliche Überwachungstools, Top-CPU und -RAM.
  4. Die Details in den CSV-Dateien prüfen, vor allem die Spalte RiskReasons.
  5. Probelauf mit .\Disable-SuspiciousTasks.ps1 -WhatIf.
  6. Danach ohne -WhatIf ausführen.
  7. Bei Bedarf zurück: .\Disable-SuspiciousTasks.ps1 -RestoreFromLog ".\Log\DisableTasks\<Lauf>\DisabledTasks.csv".

Die wichtigsten Parameter fasst die Tabelle zusammen.

Skript Parameter Standard Bedeutung
Audit
-HoursBack
48 (1 bis 720)
Zeitraum für Events
Audit
-PerformanceSampleSeconds
10 (1 bis 120)
Abstand der zwei Prozessmessungen
Audit
-OutputPath
Log\v<Version>_<Zeit>
Zielordner
Bereinigung
-IncludeMicrosoftSystem
aus
Auch geflaggte Microsoft-Tasks, ausser der Schutzliste
Bereinigung
-RestoreFromLog
keiner
Tasks wieder aktivieren

Typische Fehler

  • Ohne Administratorrechte gestartet: Viele Bereiche erscheinen nur als Warnung. Das Bereinigungsskript verlangt Admin zwingend.
  • Viele Treffer bei Microsoft-Tasks: rundll32 in System-Tasks ist normal. Nicht jeder Treffer ist ein Fund.
  • takeown /D J gegen /D Y: Der Parameter hängt von der Systemsprache ab, beide Varianten gehören ins Skript.
  • Legitime Agenten in der Liste: MDM, Virenschutz und Fernwartung der eigenen IT erscheinen als mögliche Überwachungstools.

Grenzen

TCP-Verbindungen sind eine Momentaufnahme, denn Windows führt keine Verbindungshistorie. Das Audit prüft keine Dateiinhalte und gleicht nicht mit Threat Intelligence ab. Das CPU-Prozent ist eine Näherung aus zwei Messpunkten. Die Zusammenfassung enthält Computername, Benutzer und Pfade und gehört vor dem Teilen bereinigt.

Einordnung: Was das für Admins und Helpdesk-Teams heisst

Für Helpdesk und Admins ersetzt das Audit die halbe Stunde Klicken durch Taskplaner, Autostart und Dienste. Der Gewinn liegt im Nachweis: Manifest, Metadaten und Log zeigen, was gefunden und was geändert wurde. Wichtig ist die Grenze zwischen Hinweis und Befund. Wer nach dem Audit pauschal löscht, riskiert ein Gerät, das sich nicht mehr verwalten lässt. Die Schutzliste und der Rückgängig-Weg sind deshalb der Hauptwert des zweiten Skripts. Auf Geräten mit Intune lohnt sich zuerst die Rücksprache mit dem Team, das die Richtlinien pflegt.

Fazit

Ein Audit mit zwölf Bereichen macht sichtbar, was ein Windows-Notebook im Hintergrund erledigt. Die Bereinigung bleibt sicher, solange eine Schutzliste kritische Tasks ausnimmt und ein Log den Weg zurück zeigt. Lies zuerst die Zusammenfassung, teste mit -WhatIf und entscheide danach, was du deaktivierst.

Quellen: ScheduledTasks-Modul bei Microsoft Learn, LOLBAS-Projekt. Beispiele gekürzt und anonymisiert. Zuletzt geprüft: 24. Oktober 2026.

Geschrieben von

Änderungshistorie

  • — Artikel veröffentlicht: Laptop-Audit für Windows mit Bereinigung per Schutzliste.