macOS Unified Logs triagieren: die wichtigen Abfragen
log-show-Prädikate und Parser-Filter für sudo, SSH, Bildschirmfreigabe, TCC, Gatekeeper, XProtect, Launch-Agents, Anmeldeobjekte, USB und den Befehl log.
Kurz gesagt. Beginnen Sie bei Prozessen und Subsystemen, nicht beim exakten Meldungstext: sudo, sshd, screensharingd, tccd / com.apple.TCC, syspolicyd, XProtect, launchd und Background Task Management, diskarbitrationd sowie der Befehl log selbst. Jeder Abschnitt unten nennt ein log show-Prädikat für einen Mac und den entsprechenden Filter oder die Vorgabe im Unified Log Parser, der dieselben Kategorien im Tab Befunde automatisch markiert.
Eine Warnung vorab: Apple behandelt Protokollmeldungen als Freitext. Formulierungen ändern sich zwischen den Versionen, und eine Abfrage ohne Treffer ist kein Beweis für Abwesenheit. Lesen Sie die Einträge rund um jeden Treffer (gleiche PID, gleiche Minute).
Rechtenutzung: sudo und su
log show --archive case.logarchive --timezone UTC --predicate 'process == "sudo" AND eventMessage CONTAINS "COMMAND="'
Jede Zeile hat die Form user : TTY=ttys001 ; PWD=/Users/user ; USER=root ; COMMAND=/bin/…. Fehlgeschlagene Versuche erscheinen als incorrect password attempt. Im Parser wählt die Vorgabe Authentifizierung sudo, su, opendirectoryd, loginwindow, authd, sshd und SecurityAgent aus; die Markierung sudo-Nutzung behält nur Zeilen mit einem Befehl oder einem Fehlschlag, nicht das Verzeichnis-Lookup-Rauschen, das sudo ebenfalls erzeugt.
authd protokolliert Autorisierungsrechte, etwa system.privilege.admin, wenn eine App nach einem Administratorpasswort fragt, samt dem anfragenden Client. Die Markierung heißt Autorisierungsrechte.
Fernzugriff: SSH und Bildschirmfreigabe
log show --archive case.logarchive --timezone UTC --predicate 'process BEGINSWITH "sshd" OR process == "screensharingd"'
Entfernte Anmeldung und Bildschirmfreigabe sind standardmäßig deaktiviert; jede Aktivität bedeutet, dass jemand sie eingeschaltet hat. Neuere OpenSSH-Versionen teilen den Server in sshd und sshd-session auf, erfassen Sie also beide. Die Vorgabe SSH / Bildschirmfreigabe deckt beides ab, dazu ARDAgent für Apple Remote Desktop.
Datenschutzrechte: TCC
log show --archive case.logarchive --timezone UTC --predicate 'subsystem == "com.apple.TCC"'
Das ist gesprächig: Jede Client-Anfrage wird protokolliert. Konzentrieren Sie sich auf die Entscheidungen von tccd selbst und auf folgenreiche Dienste – kTCCServiceSystemPolicyAllFiles (Festplattenvollzugriff), kTCCServiceAccessibility, kTCCServiceScreenCapture, kTCCServiceListenEvent, kTCCServicePostEvent, kTCCServiceAppleEvents. Die Markierung Sensible Datenschutzrechte (TCC) des Parsers behält die tccd-Entscheidungen zu diesen Diensten; die einfache Markierung Datenschutzrechte (TCC) behält die übrigen Anfragen und Dialoge. Wird Terminal kurz vor massenhaftem Dateizugriff Festplattenvollzugriff gewährt, lohnt es sich, dieses Muster Minute für Minute zu rekonstruieren. Gleichen Sie das mit der TCC-Datenbank selbst ab.
Gatekeeper, Quarantäne und XProtect
log show --archive case.logarchive --timezone UTC --predicate 'process == "syspolicyd" OR process BEGINSWITH "XProtect" OR eventMessage CONTAINS[c] "quarantine"'
syspolicyd bewertet heruntergeladenen Code; der Großteil seiner Ausgabe ist Routine. Die Markierung Gatekeeper-Entscheidungen grenzt auf Zeilen ein, die eine Blockierung, eine Ablehnung, eine fehlende Notarisierung oder ein Übergehen durch den Nutzer („Dennoch öffnen“) erwähnen. Hinweise auf Quarantäne helfen, eine Datei mit der App zu verknüpfen, die sie heruntergeladen hat. XProtect erzeugt viel geplante Aktivität; die Markierung behält Formulierungen zu Erkennung und Bereinigung.
Persistenz: Launch-Agents, Daemons und Anmeldeobjekte
log show --archive case.logarchive --timezone UTC --predicate 'eventMessage CONTAINS "/Library/LaunchAgents/" OR eventMessage CONTAINS "/Library/LaunchDaemons/" OR subsystem == "com.apple.backgroundtaskmanagement"'
Background Task Management (macOS 13 und neuer) protokolliert neue Anmeldeobjekte und Launch-Items, sobald sie registriert werden. Pfade unter ~/Library/LaunchAgents und /Library/LaunchDaemons tauchen außerdem bei jedem Start eines vorhandenen Agents auf, rechnen Sie also mit Routinetreffern; achten Sie auf neue Labels und auf plists, die nach Herstellern benannt sind, deren Software Sie nicht einsetzen (im Beispiel com.example.updater.plist). Die Vorgabe launchd / Anmeldeobjekte und die Markierung Launch-Agents, -Daemons und Anmeldeobjekte decken das ab.
USB-Geräte und Volumes
log show --archive case.logarchive --timezone UTC --predicate 'process == "diskarbitrationd" OR subsystem BEGINSWITH "com.apple.DiskArbitration"'
Aktivieren, Deaktivieren und Auswerfen nennen das Volume (im Beispiel /Volumes/EXFIL). Verknüpfen Sie sie mit Dateiaktivität in denselben Minuten, um zu begründen, dass Daten auf ein Wechsellaufwerk gelangt sind. Die Vorgabe USB und Volumes und die Markierung Aktivierte Volumes wählen diese Einträge aus.
Der Befehl log selbst
In neueren Versionen protokolliert das Werkzeug log seine eigenen Aufrufe mit Elternprozess und Argumenten unter dem Subsystem com.apple.log. Ein Angreifer, der mit log show prüft, was aufgezeichnet wurde, oder sudo log erase ausführt, hinterlässt dort eine Spur – bis das Löschen greift. Die Markierung Der Befehl log behält diese Einträge.
Hinweise auf Shell und Skripte
Unified Logs sind kein Protokoll der Prozessausführung, aber Befehlszeilen sickern in Meldungen durch: sh -c, osascript -e, curl -o, python -c, base64 -d, chmod +x, xattr -d com.apple.quarantine. Die Markierung Shell- und Skriptbefehle sucht überall nach diesen Mustern. Behandeln Sie Treffer als Spuren, nicht als Beweise; Installer und Updater erzeugen viele davon.
Alles zusammenführen
Nutzen Sie den Tab Befunde für einen ersten Durchgang, setzen Sie den Zeitraum um das erste starke Signal („Um dieses Ereignis ±1 h“ von jedem Eintrag aus), wechseln Sie dann in den Tab Protokoll und entfernen Sie den Markierungsfilter, um alles zu lesen, was dieselben Prozesse getan haben. Die Browser-Anleitung macht genau das am synthetischen Fall FIN-MBP-03, und der Artikel zum Export zeigt, wie Sie die Ergebnisse in eine Zeitleiste überführen.