Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
machscope — macOS IPC、launchd、Mach-O 和 trust relationship explorer — 零依赖的终端原生取证工具 | Kitploit
工具/GitHubGitHub/m10ust/machscope
侦察漏洞分析逆向工程取证分析信息收集恶意软件分析数字取证二进制分析威胁情报事件响应
GitHubm10ust/machscope

machscope

macOS IPC、launchd、Mach-O 和 trust relationship explorer — 零依赖的终端原生取证工具

14020天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

machscope

machscope 是一个终端原生的 macOS 浏览器,能将进程、launchd 任务、Mach 服务、程序包、签名、授权以及 Mach-O 链接关系转化为一个可交互的图谱。

它存在的目的是为了残忍地准确回答一个简单问题:

这个进程、服务、二进制文件或程序包究竟与什么相关联?

它将 进程、可执行文件、launchd 任务、Mach 服务、程序包、嵌入式 XPC 服务、代码签名、授权、Mach-O 链接关系 以及 信任/异常发现 关联到一个视图中。

如果 活动监视器、ps、lsof、launchctl、codesign 和 otool 有一个偏执且对操作人员友好的孩子,那非它莫属。

为什么会有这个工具

macOS 的内部机制很优雅,但真相是分散的。

要了解一个可疑的进程,你往往需要在以下工具间来回切换:

  • ps
  • lsof
  • launchctl
  • codesign
  • otool
  • bundle Info.plist
  • launchd plists
  • 你自己的笔记和猜测

machscope 将这一工作流程压缩成一个单一的终端工具。

它专为以下场景而构建:

  • 安全研判
  • 恶意软件狩猎
  • 持久化调查
  • launchd 和 Mach 服务探勘
  • 调试奇怪的 macOS 行为
  • 理解一个应用到底是如何构成的

它的功能

给定一个 PID、路径、launchd label 或 Mach 服务名称,machscope 可以关联:

  • 来自 ps 的进程元数据
  • 来自 lsof 的可执行文件路径和打开文件上下文
  • 来自 launchctl 的 launchd 状态和 label 提示
  • launchd plist 元数据和声明的 MachServices
  • 程序包标识和嵌入的 .xpc 服务
  • 来自 codesign 的代码签名标识符、团队 ID、证书链和运行时提示
  • 来自 codesign 的授权数据
  • 来自 otool 的 Mach-O 头部、链接的动态库、加载命令和 rpath
  • 用于下游导出的图谱节点/边
  • 带有证据的信任发现

它 不 假装能观察到每一个实时的 XPC 关系。有些关系是 声明的,而非 观察到的。这种诚实是有意为之。

为什么选择 machscope 而非原始 macOS 工具?

  • ps 显示的是进程,而不是所有权链
  • launchctl 显示的是任务,而不是完整的二进制/程序包/信任上下文
  • codesign 显示的是身份,而不是运行时关系
  • otool 显示的是链接关系,而不是 launchd 或 Mach 服务暴露情况
  • machscope 一次性关联所有信息

特性

  • 无依赖 Python
    • 只使用 Python 标准库
  • 终端原生
    • 首先输出可读的人类输出,需要时输出 JSON
  • 灵活的目标解析
    • 检查 PID、可执行文件、应用包、launchd label 或 Mach 服务
  • --follow 解析器跳转
    • 程序包目标解析为其可执行文件
    • Mach 服务解析为声明它的 launchd 任务及其可执行文件
    • launchd labels 在有对应进程时跳转到实时 PID
  • 信任/异常评分
    • 揭示异常而不假装每个异常都是恶意软件
  • 简单的图模型
    • graph.nodes 和 graph.edges 旨在支持未来的 TUI、渲染器或 diff 工作流

命令

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
  • 渲染器
  • diff 模式
  • 其他工具

--follow 的工作原理

--follow 让 machscope 开始感觉不再像是一个元数据转储器,而更像一个浏览器。

它添加了解析器跳转,例如:

  • 程序包目标 → 可执行文件
  • Mach 服务 → 声明它的 launchd 任务 → 可执行文件
  • launchd label → launchctl print 状态 → 如果有的话,实时 PID

这很重要,因为 macOS 中最有趣的工件往往不是你字面上输入的东西,而是它背后的东西。

信任发现

machscope 包含一个简单的信任/异常层。

它能够揭示的例子包括:

  • 持久化条目背后的二进制文件缺失
  • 用户可写的执行目标
  • 非 Apple 代码上的敏感授权
  • launchd label / 程序包标识不匹配
  • 奇怪的 launchd 后缀,如 .reloaded
  • 看起来像系统路径但验证结果不符合预期的文件

这 不是 一个恶意软件判定引擎。 它是一种发现线索、减少盲点、让可疑链条更容易审查的方式。

设计选择

无依赖设计

第一个版本有意使用:

  • Python 标准库
  • 仅原生 macOS 工具

包装的工具包括:

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

这使得该工具易于克隆、审查并在一个比较标准的系统上运行。

关于可见性的诚实

有些关系是声明的,而非观察到的。

例如:

  • launchd plists 可以声明 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 浏览
  • diff 模式
  • 导出/渲染集成
  • 更丰富的信任规则
  • 更好的跨目标图谱遍历

--

下载工具