前言

非常感谢无私的郑佬分享某站的资源,看完 mach 相关章节后记录在 m1(arm) 下折腾远程进程注入的过程。

Mach IPC

Mach 最初是由卡内基梅隆大学作为微内核开发的,现如今它是 macOS 内核 XNU 的核心。其中使用 task 的概念作为共享资源的最小单位,任务之间的通信通过基于单向通信通道的 Mach IPC 进行,这些消息在 port 之间传递,一个端口与之关联还有内核权限,任务可以通过端口权限发送或接收消息,端口权限决定任务可以执行哪些操作。

特殊权限的端口

Task Port 限制

由于任务端口非常强大,因此对它们的访问受到非常严格的控制。除了 com.apple.system-task-ports 是由 Apple 独有权限并不会授权给第三方应用之外还有如下几种情况可以使用任务端口:

  1. 目标应用程序拥有 com.apple.security.get-task-allow 授权。

  2. 如果目标应用程序不是 Apple 平台二进制文件,也没使用强化运行时(Hardened Runtime)编译的,以 root 身份运行,就可以获得它的端口。

    或者恶意程序带着com.apple.security.cs.debugger 调试工具授权,则在运行时弹出授权对话框需要用户的允许。

    Untitled

远程进程代码注入

主要步骤如下:

实践:远程进程注入shellcode

Powered by Kali-Team