hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2023-12-26 02:11:12 +00:00
..
macos-ipc-inter-process-communication Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-12-26 02:11:12 +00:00
macos-library-injection Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-11-06 00:58:39 +00:00
macos-.net-applications-injection.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-12-26 02:11:12 +00:00
macos-dirty-nib.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-11-06 15:57:22 +00:00
macos-electron-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:32:12 +00:00
macos-perl-applications-injection.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2023-12-26 02:11:12 +00:00
README.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:32:12 +00:00

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 %}

Dirty NIB

NIB文件定义应用程序中的用户界面UI元素及其交互。然而,它们可以执行任意命令并且如果修改了NIB文件Gatekeeper不会阻止已经执行的应用程序再次执行。因此它们可以用来使任意程序执行任意命令

{% content-ref url="macos-dirty-nib.md" %} macos-dirty-nib.md {% endcontent-ref %}

Java应用程序注入

可以滥用某些Java功能如**_JAVA_OPTS环境变量来使Java应用程序执行任意代码/命令**。

{% content-ref url="macos-java-apps-injection.md" %} macos-java-apps-injection.md {% endcontent-ref %}

.Net应用程序注入

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

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

Perl注入

检查不同的选项以使Perl脚本执行任意代码

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

Python注入

如果设置了环境变量**PYTHONINSPECTPython进程在完成后将进入Python命令行界面。还可以使用PYTHONSTARTUP指定在交互会话开始时要执行的Python脚本。
但是,请注意,当
PYTHONINSPECT创建交互会话时,PYTHONSTARTUP**脚本不会被执行。

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

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

{% hint style="danger" %} 总的来说我找不到一种滥用环境变量使Python执行任意代码的方法。
然而,大多数人使用Hombrew安装Python它会将Python安装在默认管理员用户的可写位置。你可以使用类似以下的方法劫持它:

mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
cat > /opt/homebrew/bin/python3 <<EOF
#!/bin/bash
# Extra hijack code
/opt/homebrew/bin/python3.old "$@"
EOF
chmod +x /opt/homebrew/bin/python3

即使以root身份运行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获取有关其他在进程中注入代码的进程**的信息,然后获取有关该其他进程的信息。

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

参考资料

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