
Explorer für macOS-IPC, launchd, Mach-O und Vertrauensbeziehungen — terminal-natives Forensik-Tool ohne Abhängigkeiten
machscope ist ein terminal-basierter macOS-Explorer, der Prozesse, launchd-Jobs, Mach-Dienste, Bundles, Signaturen, Entitlements und Mach-O-Verknüpfungen in einen abfragbaren Graphen verwandelt.
Es existiert, um eine einfache Frage gnadenlos gut zu beantworten:
Womit ist dieser Prozess, dieser Dienst, dieses Binary oder dieses Bundle wirklich verbunden?
Es korreliert Prozesse, Executables, launchd-Jobs, Mach-Dienste, Bundles, eingebettete XPC-Dienste, Codesignaturen, Entitlements, Mach-O-Verknüpfungen und Vertrauens-/Anomalie-Befunde in einer Ansicht.
Wenn Activity Monitor, ps, lsof, launchctl, codesign und otool ein paranoides, bedienerfreundliches Kind hätten, wäre es das.
macOS-Interna sind elegant, aber die Wahrheit ist verstreut.
Um einen verdächtigen Prozess zu verstehen, springt man oft zwischen Folgendem hin und her:
pslsoflaunchctlcodesignotoolInfo.plistmachscope bündelt diesen Arbeitsablauf in einem einzigen Terminal-Werkzeug.
Es ist gebaut für:
Mit einer PID, einem Pfad, einem launchd-Label oder einem Mach-Dienstnamen kann machscope korrelieren:
pslsoflaunchctlMachServices.xpc-DienstecodesignotoolEs gibt nicht vor, jede Live-XPC-Beziehung zu beobachten. Manche Beziehungen sind deklariert, nicht beobachtet. Diese Ehrlichkeit ist beabsichtigt.
ps zeigt den Prozess, nicht die Eigentümerkettelaunchctl zeigt den Job, nicht den vollständigen Binary-/Bundle-/Vertrauenskontextcodesign zeigt die Identität, nicht die Laufzeitbeziehungenotool zeigt die Verknüpfungen, nicht die launchd- oder Mach-Dienst-Expositionmachscope korreliert all das in einem Durchgang--follow-Resolver-Pivots
graph.nodes und graph.edges sind für zukünftige TUI-, Renderer- oder Diff-Workflows ausgelegt./machscope.py inspect <pid|path|launchd-label|mach-service>
./machscope.py inspect <target> --follow
./machscope.py inspect <target> --json
./machscope.py scan --limit 40 --min-score 1
./machscope.py services [filter]
./machscope.py inspect 1
./machscope.py inspect 57382
./machscope.py inspect /System/Applications/Calculator.app --follow
./machscope.py inspect /usr/libexec/remoted
./machscope.py inspect com.apple.WindowServer --follow
./machscope.py inspect ai.openclaw.gateway --follow
./machscope.py inspect com.apple.dnssd.service --follow
./machscope.py scan --limit 40 --min-score 1
./machscope.py scan --limit 10 --min-score 6
./machscope.py services
./machscope.py services mDNS
./machscope.py services com.apple
Target: com.apple.dnssd.service [mach-service follow]
Resolved via: mach-service-launchd
Executable: /usr/sbin/mDNSResponder
Launchd: com.apple.mDNSResponder.reloaded
Plist: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Signature: apple-platform team=not set id=com.apple.mDNSResponder
Mach services: com.apple.dnssd.service, com.apple.mDNSResponder.control, com.apple.mDNSResponder.log_utility
Entitlements: 0
Linked dylibs: 25 RPATHs: 0
Trust: score=1 verdict=ordinary
Findings:
- [LOW] T012 Odd launchd label suffix
inspect --json liefert ein strukturiertes Objekt, das für Skripte und zukünftige UI-Arbeit gedacht ist.
Struktur der obersten Ebene:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesDer Graph ist bewusst einfach gehalten, damit er Folgendes speisen kann:
--follow funktioniert--follow ist der Punkt, an dem sich machscope weniger wie ein Metadaten-Ausgeber und mehr wie ein Explorer anfühlt.
Es fügt Resolver-Pivots hinzu wie:
launchctl print-Zustand → Live-PID, sofern verfügbarDas ist wichtig, weil die interessantesten macOS-Artefakte oft nicht das wörtliche Ding sind, das du eingegeben hast, sondern das Ding dahinter.
machscope enthält eine einfache Vertrauens-/Anomalie-Ebene.
Beispiele für Dinge, die es aufdecken kann:
.reloadedDas ist kein Malware-Urteilsmodul. Es ist eine Möglichkeit, Spuren aufzudecken, blinde Flecken zu verringern und verdächtige Ketten leichter zu untersuchen.
Die erste Version verwendet bewusst:
Eingebundene Werkzeuge sind:
pslsoflaunchctlcodesignotoolfileDas hält das Werkzeug einfach zu klonen, zu untersuchen und auf einem weitgehend Standard-System auszuführen.
Manche Beziehungen sind deklariert, nicht beobachtet.
Zum Beispiel:
machscope möchte lieber explizit sein, als Sicherheit vorzutäuschen.
ps, lsof, launchctl, codesign, otool und fileFühre es zuerst als normaler Benutzer aus.
Das reicht oft für nützliche Antworten.
Einige Details können ohne erhöhte Privilegien unvollständig sein, insbesondere bei:
lsoflaunchctlWenn du die Rechte erhöhst, tu es bewusst.
machscope versucht nicht zu sein:
Es ist ein scharfes lokales Werkzeug, um macOS-Interna lesbar zu machen.
Früh, aber bereits nützlich.
Die aktuelle Ausgabe und das Graphmodell sind bewusst so geformt, dass zukünftige Versionen hinzufügen können: