
Ein Kommandozeilenwerkzeug für eine pstree-ähnliche Ausgabe auf macOS mit zusätzlichen PID-Erfassungsfähigkeiten

Über
Lesen Sie alles über das TrueTree-Konzept hier
TrueTree ist mehr als nur ein pstree-Befehl für macOS. Es wird verwendet, um einen Prozessbaum für aktuell laufende Prozesse anzuzeigen, wobei eine Hierarchie auf Basis zusätzlicher PIDs verwendet wird, die vom Betriebssystem erfasst werden können. Der standardmäßige Prozessbaum unter macOS, der mit traditionellen PIDs und PPIDs erstellt werden kann, ist aufgrund der vielen XPC-Kommunikation unter macOS wenig hilfreich. Die überwiegende Mehrheit der Prozesse hat am Ende launchd als Elternprozess. TrueTree hingegen zeigt einen Prozessbaum an, der für Incident Responder, Threat Hunter, Forscher und alles dazwischen nützlich sein soll!
Wichtiges Update: Aufgrund der sich ständig ändernden Funktionen von macOS funktionieren seit macOS 11 einige Funktionen nicht mehr ganz so wie früher, als ich den ursprünglichen Blogbeitrag für TrueTree geschrieben habe. Apple hat einen neuen Prozess namens „runningboardd" eingeführt, der letztlich der wahre Elternprozess vieler Prozesse ist. Um dies zu umgehen, wurde TrueTree aktualisiert, um das Application Services Framework zu verwenden, was in einigen Szenarien die Ermittlung des wahren Elternprozesses ermöglichte. Dies erlaubt jedoch nicht mehr die Ermittlung eines wahren Elternprozesses, wenn dieser Elternprozess beendet wurde. Dadurch wird es schwierig, einige wahre Elternprozesse wie den Befehl „open" genau zu bestimmen. Ein kleiner Preis, um sicherzustellen, dass TrueTree über macOS-Versionen hinweg weiter funktioniert. Weitere Hinweise auf einen wahren Elternprozess finden sich oft in der Ausgabe von launchctl procinfo. Dies könnte in Zukunft berücksichtigt werden.
Neu in TrueTree 0.9: Root ist nicht mehr erforderlich, um TrueTree auszuführen. Ohne Root werden verantwortliche PIDs aus Prozesskoalitionen geschätzt, und Netzwerkverbindungen sind auf die eigenen Prozesse beschränkt. Eine Koalition ist eine Gruppe verwandter Prozesse, die der macOS-Kernel gemeinsam verfolgt, wie etwa eine App und die von ihr gestarteten Helper und XPC-Dienste.
Bei Ausführung als Root verwendet TrueTree die ursprüngliche libquarantine-Methode, die die zuverlässigste ist. Um stattdessen die Koalitionsmethode als Root zu verwenden, übergeben Sie --acquire-responsible-via-coalition .
Es wurden auch neue Tests hinzugefügt, darunter Koalitionstests, die davor schützen, dass macOS stillschweigend eine private Kernel-Schnittstelle ändert, von der TrueTree abhängt.
./TrueTree -h
--nocolor -> Elemente in der Ausgabe nicht farblich kennzeichnen
--timeline -> Alle Prozesse nach ihrem Erstellungszeitstempel sortieren und ausgeben
--timestamps -> Prozesszeitstempel einschließen
--standard -> Den standardmäßigen Unix-Baum anstelle von TrueTree ausgeben
--sources -> Die Quelle ausgeben, aus der der Elternprozess jedes Prozesses stammt
--nonetwork -> Netzwerkverbindung nicht ausgeben
--nopid -> Die PID nicht neben jedem Prozess ausgeben
--nopath -> Nur den Prozessnamen anstelle vollständiger Pfade ausgeben
--json -> JSON anstelle von Text ausgeben (funktioniert mit --standard, --timeline und -o)
--version -> Die TrueTree-Versionsnummer ausgeben
--acquire-responsible-via-coalition
Verantwortliche PIDs aus Prozesskoalitionen anstelle von libquarantine schätzen.
Koalitionen werden immer verwendet, wenn nicht als Root ausgeführt.
-o -> Ausgabe in Datei
./TrueTree
Zeigt einen erweiterten Prozessbaum unter Verwendung des TrueTree-Konzepts an

./TrueTree --standard
Für eine Baumasgabe basierend auf standardmäßigen PIDs und PPIDs verwenden Sie --standard

./TrueTree --timestamps
Für eine Ausgabe in einem der beiden Formate mit hinzugefügter Prozesserstellungszeit verwenden Sie die Option --timestamps

./TrueTree --sources
Um anzuzeigen, woher jede Eltern-PID stammt, verwenden Sie die Option --sources

./TrueTree --timeline
Sammelt keinen Baum. Gibt stattdessen nur Prozesse sortiert nach Erstellungszeit aus
