
macOS IPC, launchd, Mach-O и исследователь доверительных отношений — криминалистический инструмент с нулевыми зависимостями, работающий в терминале
machscope — это терминальный нативный для macOS исследователь, который превращает процессы, задания launchd, сервисы Mach, пакеты, подписи, энтайтлменты и связи Mach-O в единый граф для допросов.
Он существует, чтобы отвечать на один простой вопрос максимально эффективно:
С чем на самом деле связан этот процесс, сервис, бинарный файл или пакет?
Он соотносит процессы, исполняемые файлы, задания launchd, сервисы Mach, пакеты, встроенные сервисы XPC, подписи кода, энтайтлменты, связи Mach-O и результаты доверия/аномалий в едином представлении.
Если бы у Activity Monitor, ps, lsof, launchctl, codesign и otool был параноидальный, удобный для оператора ребёнок, это был бы он.
Внутренности macOS элегантны, но истина разбросана.
Чтобы разобраться в одном подозрительном процессе, часто приходится прыгать между:
pslsoflaunchctlcodesignotoolInfo.plist пакетаmachscope сворачивает этот рабочий процесс в один терминальный инструмент.
Он создан для:
По PID, пути, метке launchd или имени сервиса Mach machscope может соотнести:
pslsoflaunchctlMachServices.xpccodesignotoolОн не притворяется, что наблюдает каждое живое отношение XPC. Некоторые отношения являются объявленными, а не наблюдаемыми. Эта честность намеренна.
ps показывает процесс, а не цепочку владенияlaunchctl показывает задание, а не полный контекст бинарника/пакета/доверияcodesign показывает идентификацию, а не отношения времени выполненияotool показывает связи, а не доступность launchd или сервиса Machmachscope соотносит всё это за один проход--follow
graph.nodes и graph.edges спроектированы для будущих TUI, рендеринга или рабочих процессов диффа./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 возвращает структурированный объект, предназначенный для скриптования и будущей работы с UI.
Форма верхнего уровня:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edgesГраф намеренно прост, чтобы его можно было передать:
--follow--follow — это то, где machscope начинает ощущаться не просто как дампер метаданных, а как исследователь.
Он добавляет переключения резолвера, такие как:
launchctl print → живой PID, если естьЭто важно, потому что самые интересные артефакты macOS часто находятся не в том, что вы буквально ввели, а в том, что за ним стоит.
machscope включает простой слой доверия/аномалий.
Примеры того, что он может выявить:
.reloadedЭто не механизм вердиктов о вредоносном ПО. Это способ выявлять зацепки, уменьшать слепые зоны и облегчать допрос подозрительных цепочек.
Первая версия намеренно использует:
Обёрнутые инструменты включают:
pslsoflaunchctlcodesignotoolfileЭто упрощает клонирование, проверку и запуск инструмента на стандартной системе.
Некоторые отношения являются объявленными, а не наблюдаемыми.
Например:
machscope лучше будет явным, чем притворяться уверенным.
ps, lsof, launchctl, codesign, otool и fileСначала запускайте как обычный пользователь.
Часто этого достаточно для полезных ответов.
Некоторые детали могут быть неполными без повышенных привилегий, особенно в отношении:
lsoflaunchctlЕсли повышаете привилегии, делайте это осознанно.
machscope не пытается быть:
Это острый локальный инструмент для того, чтобы сделать внутренности macOS читаемыми.
Ранняя версия, но уже полезная.
Текущие форматы вывода и модель графа намеренно спроектированы так, чтобы будущие версии могли добавить:
--