
Explorateur des IPC macOS, launchd, Mach-O et des relations de confiance — outil forensique natif du terminal, sans dépendance
machscope est un explorateur macOS natif du terminal qui transforme les processus, les jobs launchd, les services Mach, les bundles, les signatures, les entitlements et les liaisons Mach-O en un seul graphe interrogable.
Il existe pour répondre brutalement bien à une question simple :
À quoi ce processus, service, binaire ou bundle est-il réellement connecté ?
Il corrèle les processus, les exécutables, les jobs launchd, les services Mach, les bundles, les services XPC embarqués, les signatures de code, les entitlements, les liaisons Mach-O et les constats de confiance/anomalies en une seule vue.
Si Activity Monitor, ps, lsof, launchctl, codesign et otool avaient un enfant paranoïaque et orienté opérateur, ce serait cet outil.
Les internals de macOS sont élégants, mais la vérité est éparpillée.
Pour comprendre un processus suspect, on finit souvent par sauter entre :
pslsoflaunchctlcodesignotoolInfo.plist du bundlemachscope condense ce flux de travail en un seul outil de terminal.
Il est conçu pour :
Étant donné un PID, un chemin, un label launchd ou un nom de service Mach, machscope peut corréler :
pslsoflaunchctlMachServices déclarés.xpc embarquéscodesignotoolIl ne prétend pas observer chaque relation XPC vivante. Certaines relations sont déclarées, pas observées. Cette honnêteté est intentionnelle.
ps montre le processus, pas la chaîne de propriétélaunchctl montre le job, pas le contexte complet binaire/bundle/confiancecodesign montre l'identité, pas les relations à l'exécutionotool montre les liaisons, pas l'exposition aux services launchd ou Machmachscope corrèle tout cela en une seule passe--follow
graph.nodes et graph.edges sont conçus pour de futurs flux TUI, rendu ou diff./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 renvoie un objet structuré conçu pour les scripts et le futur travail d'interface.
Forme de plus haut niveau :
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesLe graphe est volontairement simple pour pouvoir alimenter :
--followC'est avec --follow que machscope commence à ressembler moins à un extracteur de métadonnées et plus à un explorateur.
Il ajoute des pivots de résolution tels que :
launchctl print → PID vivant lorsqu'il est disponibleC'est important car les artefacts macOS les plus intéressants ne sont souvent pas la chose littérale que vous avez tapée, mais la chose qui se trouve derrière.
machscope inclut une couche simple de confiance/anomalies.
Exemples de ce qu'il peut faire remonter :
.reloadedCe n'est pas un moteur de verdict malware. C'est un moyen de faire remonter des pistes, de réduire les angles morts et de rendre les chaînes suspectes plus faciles à interroger.
La première version utilise intentionnellement :
Les outils enveloppés incluent :
pslsoflaunchctlcodesignotoolfileCela rend l'outil facile à cloner, inspecter et exécuter sur un système quasi standard.
Certaines relations sont déclarées, pas observées.
Par exemple :
machscope préfère être explicite plutôt que de feindre la certitude.
ps, lsof, launchctl, codesign, otool et fileExécutez-le d'abord en utilisateur normal.
C'est souvent suffisant pour obtenir des réponses utiles.
Certains détails peuvent être partiels sans privilèges élevés, notamment autour de :
lsoflaunchctlSi vous élevez les privilèges, faites-le délibérément.
machscope n'essaie pas d'être :
C'est un outil local tranchant pour rendre les internals de macOS lisibles.
Précoce, mais déjà utile.
La sortie actuelle et le modèle de graphe sont délibérément façonnés pour que les futures versions puissent ajouter :