hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/README.md
2023-08-03 19:12:22 +00:00

7.4 KiB
Raw Blame History

macOS进程滥用

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

macOS进程滥用

与任何其他操作系统一样macOS提供了各种方法和机制用于进程之间的交互、通信和共享数据。虽然这些技术对于系统的高效运行至关重要,但黑客也可以滥用这些技术来执行恶意活动

库注入

库注入是一种技术,攻击者通过它强制一个进程加载恶意库。一旦注入,该库在目标进程的上下文中运行,为攻击者提供与进程相同的权限和访问权限。

{% content-ref url="macos-library-injection/" %} macos-library-injection {% endcontent-ref %}

函数挂钩

函数挂钩涉及拦截软件代码中的函数调用或消息。通过挂钩函数,攻击者可以修改进程的行为,观察敏感数据,甚至控制执行流程。

{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %} macos-function-hooking.md {% endcontent-ref %}

进程间通信

进程间通信IPC是指不同进程之间共享和交换数据的不同方法。虽然IPC对于许多合法应用程序至关重要但它也可以被滥用以破坏进程隔离、泄露敏感信息或执行未经授权的操作。

{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %} macos-ipc-inter-process-communication {% endcontent-ref %}

Electron应用程序注入

使用特定的环境变量执行的Electron应用程序可能容易受到进程注入的攻击

{% content-ref url="macos-electron-applications-injection.md" %} macos-electron-applications-injection.md {% endcontent-ref %}

.Net应用程序注入

可以通过滥用.NET调试功能不受macOS运行时加固等保护措施保护将代码注入到.NET应用程序中。

{% content-ref url="macos-.net-applications-injection.md" %} macos-.net-applications-injection.md {% endcontent-ref %}

Python注入

如果环境变量**PYTHONINSPECT**被设置Python进程将在完成后进入Python命令行界面。

其他环境变量,如**PYTHONPATHPYTHONHOME**也可以用于执行任意代码的Python命令。

请注意,使用**pyinstaller**编译的可执行文件即使使用嵌入的Python运行也不会使用这些环境变量。

检测

Shield

ShieldGithub)是一个开源应用程序,可以检测和阻止进程注入操作:

  • 使用环境变量:它将监视以下任何环境变量的存在:DYLD_INSERT_LIBRARIESCFNETWORK_LIBRARY_PATHRAWCAMERA_BUNDLE_PATHELECTRON_RUN_AS_NODE
  • 使用**task_for_pid调用:查找一个进程是否想要获取另一个进程的任务端口**,从而允许在该进程中注入代码。
  • Electron应用程序参数:某人可以使用**--inspect--inspect-brk--remote-debugging-port**命令行参数以调试模式启动Electron应用程序从而向其注入代码。
  • 使用符号链接硬链接:通常最常见的滥用是使用我们的用户权限放置一个链接,并将其指向更高权限的位置。对于硬链接和符号链接,检测非常简单。如果创建链接的进程具有不同的权限级别,我们会创建一个警报。不幸的是在符号链接的情况下无法阻止因为在创建之前我们没有关于链接目标的信息。这是Apple的EndpointSecuriy框架的一个限制。

其他进程发起的调用

这篇博文中,你可以找到如何使用函数**task_name_for_pid来获取关于其他在进程中注入代码的进程**的信息。

请注意要调用该函数您需要具有与运行该进程的用户ID相同的UID或者是root(它返回有关进程的信息,而不是注入代码的方法)。

参考资料

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥