
Explorador de IPC do macOS, launchd, Mach-O e relações de confiança — ferramenta forense nativa de terminal sem dependências
machscope é um explorador macOS nativo do terminal que transforma processos, jobs do launchd, serviços Mach, bundles, assinaturas, entitlements e ligações Mach-O em um único gráfico interrogável.
Ele existe para responder a uma pergunta simples de forma brutalmente eficaz:
A que este processo, serviço, binário ou bundle está realmente conectado?
Ele correlaciona processos, executáveis, jobs do launchd, serviços Mach, bundles, serviços XPC embutidos, assinaturas de código, entitlements, ligações Mach-O e achados de confiança/anomalias em uma única visão.
Se Activity Monitor, ps, lsof, launchctl, codesign e otool tivessem um filho paranóico e amigável para operadores, seria este.
Os internals do macOS são elegantes, mas a verdade está espalhada.
Para entender um processo suspeito, você frequentemente acaba alternando entre:
pslsoflaunchctlcodesignotoolInfo.plistO machscope condensa esse fluxo de trabalho em uma única ferramenta de terminal.
Ele é feito para:
Dado um PID, caminho, label do launchd ou nome de serviço Mach, o machscope pode correlacionar:
pslsoflaunchctlMachServices declarados.xpc embutidoscodesignotoolEle não pretende observar todas as relações XPC ao vivo. Algumas relações são declaradas, não observadas. Essa honestidade é intencional.
ps mostra o processo, não a cadeia de propriedadelaunchctl mostra o job, não o contexto completo de binário/bundle/confiançacodesign mostra a identidade, não relações de runtimeotool mostra as ligações, não a exposição de serviços do launchd ou Machmachscope correlaciona tudo isso em uma única passada--follow
graph.nodes e graph.edges são projetados para futuros fluxos de trabalho de TUI, renderer 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
O inspect --json retorna um objeto estruturado projetado para scripts e futuros trabalhos de UI.
Estrutura de nível superior:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesO grafo é intencionalmente simples para poder alimentar:
--follow funcionaO --follow é onde o machscope começa a parecer menos um despejador de metadados e mais um explorador.
Ele adiciona pivôs de resolução como:
launchctl print → PID ativo quando disponívelIsso importa porque os artefatos mais interessantes do macOS geralmente não são a coisa literal que você digitou, mas o que está por trás dela.
O machscope inclui uma camada simples de confiança/anomalias.
Exemplos de coisas que ele pode expor:
.reloadedIsto não é um mecanismo de veredicto de malware. É uma forma de expor pistas, reduzir pontos cegos e tornar cadeias suspeitas mais fáceis de interrogar.
A primeira versão usa intencionalmente:
As ferramentas encapsuladas incluem:
pslsoflaunchctlcodesignotoolfileIsso mantém a ferramenta fácil de clonar, inspecionar e executar em um sistema mais ou menos padrão.
Algumas relações são declaradas, não observadas.
Por exemplo:
O machscope prefere ser explícito a fingir certeza.
ps, lsof, launchctl, codesign, otool e fileExecute-o como um usuário normal primeiro.
Isso geralmente é suficiente para respostas úteis.
Alguns detalhes podem ser parciais sem privilégios elevados, especialmente em relação a:
lsoflaunchctlSe você elevar privilégios, faça-o deliberadamente.
O machscope não está tentando ser:
É uma ferramenta local afiada para tornar os internals do macOS legíveis.
Inicial, mas já útil.
A saída atual e o modelo de grafo são deliberadamente moldados para que versões futuras possam adicionar: