
Explorador de IPC de macOS, launchd, Mach-O y relaciones de confianza — herramienta forense nativa de terminal sin dependencias
machscope es un explorador de macOS nativo de terminal que convierte procesos, trabajos de launchd, servicios Mach, bundles, firmas, entitlements y enlaces Mach-O en un único grafo interrogable.
Existe para responder a una pregunta simple de forma extraordinariamente eficaz:
¿A qué está realmente conectado este proceso, servicio, binario o bundle?
Correlaciona procesos, ejecutables, trabajos de launchd, servicios Mach, bundles, servicios XPC embebidos, firmas de código, entitlements, enlaces Mach-O y hallazgos de confianza/anomalías en una sola vista.
Si Activity Monitor, ps, lsof, launchctl, codesign y otool tuvieran un hijo paranoico y amigable para operadores, este sería.
Los internals de macOS son elegantes, pero la verdad está dispersa.
Para entender un proceso sospechoso, a menudo terminas saltando entre:
pslsoflaunchctlcodesignotoolInfo.plist del bundlemachscope reduce ese flujo de trabajo a una única herramienta de terminal.
Está pensado para:
Dado un PID, ruta, etiqueta de launchd o nombre de servicio Mach, machscope puede correlacionar:
pslsoflaunchctlMachServices declarados.xpc embebidoscodesignotoolNo pretende observar todas las relaciones XPC vivas. Algunas relaciones están declaradas, no observadas. Esa honestidad es intencional.
ps muestra el proceso, no la cadena de propiedadlaunchctl muestra el trabajo, no el contexto completo del binario/bundle/confianzacodesign muestra la identidad, no las relaciones en runtimeotool muestra el enlace, no la exposición de servicios launchd o Machmachscope correlaciona todo ello en una sola pasada--follow
graph.nodes y graph.edges están diseñados para futuros flujos de trabajo TUI, renderer o 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 devuelve un objeto estructurado diseñado para scripting y futuros trabajos de UI.
Estructura de nivel superior:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesEl grafo es intencionadamente simple para poder alimentar:
--follow--follow es donde machscope empieza a sentirse menos como un volcador de metadatos y más como un explorador.
Añade pivotes del resolvedor como:
launchctl print → PID vivo cuando esté disponibleEso importa porque los artefactos de macOS más interesantes a menudo no son la cosa literal que escribiste, sino lo que hay detrás.
machscope incluye una capa simple de confianza/anomalías.
Ejemplos de cosas que puede sacar a la superficie:
.reloadedEsto no es un motor de veredictos de malware. Es una forma de sacar pistas a la superficie, reducir puntos ciegos y facilitar la interrogación de cadenas sospechosas.
La primera versión usa intencionadamente:
Las herramientas envueltas incluyen:
pslsoflaunchctlcodesignotoolfileEso mantiene la herramienta fácil de clonar, inspeccionar y ejecutar en un sistema más o menos estándar.
Algunas relaciones están declaradas, no observadas.
Por ejemplo:
machscope prefiere ser explícito antes que fingir certeza.
ps, lsof, launchctl, codesign, otool y fileEjecútalo primero como usuario normal.
Eso suele ser suficiente para obtener respuestas útiles.
Sin privilegios elevados, algunos detalles pueden ser parciales, especialmente en torno a:
lsoflaunchctlSi escalas privilegios, hazlo deliberadamente.
machscope no intenta ser:
Es una herramienta local afilada para hacer legibles los internals de macOS.
En fase temprana, pero ya útil.
La salida actual y el modelo de grafo están deliberadamente formados para que las versiones futuras puedan añadir:
--