Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
machscope — macOS IPC, launchd, Mach-O и исследователь доверительных отношений — криминалистический инструмент с нулевыми зависимостями, работающий в терминале | Kitploit
Инструменты/GitHubGitHub/m10ust/machscope
РазведкаАнализ уязвимостейОбратная инженерияФорензикаСбор информацииАнализ вредоносных программЦифровая криминалистикаАнализ Бинарных ФайловРазведка угрозРеагирование на Инциденты
GitHubm10ust/machscope
14020 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

machscope

macOS IPC, launchd, Mach-O и исследователь доверительных отношений — криминалистический инструмент с нулевыми зависимостями, работающий в терминале

Репозиторий
Поделиться

machscope

machscope — это терминальный нативный для macOS исследователь, который превращает процессы, задания launchd, сервисы Mach, пакеты, подписи, энтайтлменты и связи Mach-O в единый граф для допросов.

Он существует, чтобы отвечать на один простой вопрос максимально эффективно:

С чем на самом деле связан этот процесс, сервис, бинарный файл или пакет?

Он соотносит процессы, исполняемые файлы, задания launchd, сервисы Mach, пакеты, встроенные сервисы XPC, подписи кода, энтайтлменты, связи Mach-O и результаты доверия/аномалий в едином представлении.

Если бы у Activity Monitor, ps, lsof, launchctl, codesign и otool был параноидальный, удобный для оператора ребёнок, это был бы он.

Зачем это существует

Внутренности macOS элегантны, но истина разбросана.

Чтобы разобраться в одном подозрительном процессе, часто приходится прыгать между:

  • ps
  • lsof
  • launchctl
  • codesign
  • otool
  • Info.plist пакета
  • plist'ами launchd
  • собственными заметками и догадками

machscope сворачивает этот рабочий процесс в один терминальный инструмент.

Он создан для:

  • триажа безопасности
  • поиска вредоносного ПО
  • расследования персистентности
  • изучения заданий launchd и сервисов Mach
  • отладки странного поведения macOS
  • понимания того, как на самом деле устроено приложение

Что он делает

По PID, пути, метке launchd или имени сервиса Mach machscope может соотнести:

  • метаданные процесса из ps
  • контекст исполняемого файла и открытых файлов из lsof
  • состояние launchd и подсказки по меткам из launchctl
  • метаданные plist launchd и объявленные MachServices
  • идентификацию пакета и встроенные сервисы .xpc
  • идентификатор подписи кода, Team ID, цепочку сертификатов и подсказки времени выполнения
  • данные энтайтлментов из codesign
  • заголовки Mach-O, связанные dylib, команды загрузки и rpath'ы из otool
  • узлы/связи графа для экспорта
  • выводы доверия с доказательствами

Он не притворяется, что наблюдает каждое живое отношение XPC. Некоторые отношения являются объявленными, а не наблюдаемыми. Эта честность намеренна.

Почему machscope, а не сырые инструменты macOS?

  • ps показывает процесс, а не цепочку владения
  • launchctl показывает задание, а не полный контекст бинарника/пакета/доверия
  • codesign показывает идентификацию, а не отношения времени выполнения
  • otool показывает связи, а не доступность launchd или сервиса Mach
  • machscope соотносит всё это за один проход

Возможности

  • Python без зависимостей
    • использует только стандартную библиотеку Python
  • Нативный для терминала
    • сначала читаемый человеческий вывод, JSON — когда нужно
  • Гибкое разрешение цели
    • исследуйте PID, исполняемый файл, пакет приложения, метку launchd или сервис Mach
  • Переключения резолвера --follow
    • цели-пакеты разрешаются в их исполняемый файл
    • сервисы Mach разрешаются в объявившее задание launchd и исполняемый файл
    • метки launchd переключаются на живой PID, когда он присутствует
  • Оценка доверия/аномалий
    • выявляет странности, не притворяясь, что каждая странность — вредоносное ПО
  • Простая модель графа
    • graph.nodes и graph.edges спроектированы для будущих TUI, рендеринга или рабочих процессов диффа

Команды

root@kitploit:~
./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]

Примеры

Исследовать живой процесс

root@kitploit:~
./machscope.py inspect 1
./machscope.py inspect 57382

Исследовать приложение или бинарник

root@kitploit:~
./machscope.py inspect /System/Applications/Calculator.app --follow
./machscope.py inspect /usr/libexec/remoted

Исследовать задание launchd

root@kitploit:~
./machscope.py inspect com.apple.WindowServer --follow
./machscope.py inspect ai.openclaw.gateway --follow

Исследовать сервис Mach

root@kitploit:~
./machscope.py inspect com.apple.dnssd.service --follow

Сканировать на аномалии

root@kitploit:~
./machscope.py scan --limit 40 --min-score 1
./machscope.py scan --limit 10 --min-score 6

Просмотреть объявленные сервисы

root@kitploit:~
./machscope.py services
./machscope.py services mDNS
./machscope.py services com.apple

Пример вывода

root@kitploit:~
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

JSON-вывод

inspect --json возвращает структурированный объект, предназначенный для скриптования и будущей работы с UI.

Форма верхнего уровня:

  • target
  • target_resolution
  • process
  • binary
  • bundle
  • launchd
  • trust
  • graph.nodes
  • graph.edges

Граф намеренно прост, чтобы его можно было передать:

  • будущему TUI
  • рендереру
  • режиму диффа
  • другим инструментам

Как работает --follow

--follow — это то, где machscope начинает ощущаться не просто как дампер метаданных, а как исследователь.

Он добавляет переключения резолвера, такие как:

  • цель-пакет → исполняемый файл
  • сервис Mach → объявившее задание launchd → исполняемый файл
  • метка launchd → состояние launchctl print → живой PID, если есть

Это важно, потому что самые интересные артефакты macOS часто находятся не в том, что вы буквально ввели, а в том, что за ним стоит.

Выводы доверия

machscope включает простой слой доверия/аномалий.

Примеры того, что он может выявить:

  • отсутствующие бинарники за записями персистентности
  • доступные для записи пользователем цели выполнения
  • чувствительные энтайтлменты на коде не от Apple
  • несовпадения метки launchd / идентификации пакета
  • странные суффиксы launchd, например .reloaded
  • пути, похожие на системные, но не проходящие проверку должным образом

Это не механизм вердиктов о вредоносном ПО. Это способ выявлять зацепки, уменьшать слепые зоны и облегчать допрос подозрительных цепочек.

Дизайнерские решения

Без зависимостей по замыслу

Первая версия намеренно использует:

  • стандартную библиотеку Python
  • только нативные инструменты macOS

Обёрнутые инструменты включают:

  • ps
  • lsof
  • launchctl
  • codesign
  • otool
  • file

Это упрощает клонирование, проверку и запуск инструмента на стандартной системе.

Честность в отношении видимости

Некоторые отношения являются объявленными, а не наблюдаемыми.

Например:

  • plist'ы launchd могут объявлять сервисы Mach
  • пакеты могут раскрывать встроенные сервисы XPC
  • но общедоступные инструменты не всегда чисто раскрывают живые отношения клиент/сервер XPC

machscope лучше будет явным, чем притворяться уверенным.

Требования

  • macOS
  • Python 3
  • доступ к нативным инструментам, таким как ps, lsof, launchctl, codesign, otool и file

Привилегии

Сначала запускайте как обычный пользователь.

Часто этого достаточно для полезных ответов.

Некоторые детали могут быть неполными без повышенных привилегий, особенно в отношении:

  • lsof
  • launchctl
  • сведений о подписи кода для некоторых целей

Если повышаете привилегии, делайте это осознанно.

Хорошие сценарии использования

  • «Кому именно принадлежит этот сервис Mach?»
  • «Это задание launchd нормальное, устаревшее или сломанное?»
  • «Почему этот процесс является дочерним для launchd, но не там, где я ожидал?»
  • «Какие энтайтлменты на самом деле есть у этого помощника?»
  • «Скрывает ли этот пакет приложения встроенные сервисы XPC?»
  • «Почему этот процесс кажется подозрительным?»

Не-цели

machscope не пытается быть:

  • полноценным EDR
  • системой телеметрии живого ядра
  • идеальным наблюдателем XPC
  • GUI-приложением
  • огромным фреймворком

Это острый локальный инструмент для того, чтобы сделать внутренности macOS читаемыми.

Статус

Ранняя версия, но уже полезная.

Текущие форматы вывода и модель графа намеренно спроектированы так, чтобы будущие версии могли добавить:

  • TUI-исследование
  • режим диффа
  • интеграцию экспорта/рендеринга
  • более богатые правила доверия
  • более качественное перемещение по графу между целями

--

Скачать инструмент