hacktricks/macos-hardening/macos-red-teaming/README.md

13 KiB
Raw Blame History

macOS红队行动

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

滥用MDM

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

如果你成功获取管理员凭证以访问管理平台,你可以通过在机器上分发恶意软件来潜在地控制所有计算机

在MacOS环境中进行红队行动时强烈建议对MDM的工作原理有一定的了解

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

将MDM用作C2

MDM将具有安装、查询或删除配置文件、安装应用程序、创建本地管理员帐户、设置固件密码、更改FileVault密钥的权限...

为了运行自己的MDM你需要使用供应商签名的CSR,你可以尝试通过https://mdmcert.download/获取。要在Apple设备上运行自己的MDM可以使用MicroMDM

然而,要在已注册的设备上安装应用程序,你仍然需要使用开发者帐户进行签名...然而在MDM注册时设备将MDM的SSL证书添加为受信任的CA,因此现在你可以签署任何内容。

要将设备注册到MDM中你需要以root身份安装一个**mobileconfig文件,可以通过pkg**文件传递你可以将其压缩为zip文件当从safari下载时它将被解压缩

Mythic agent Orthrus使用了这种技术。

滥用JAMF PRO

JAMF可以运行自定义脚本(由系统管理员开发的脚本)、本地负载创建本地帐户、设置EFI密码、文件/进程监视...)和MDM(设备配置、设备证书...)。

JAMF自注册

访问https://<company-name>.jamfcloud.com/enroll/等页面,查看是否启用了自注册。如果启用了,可能会要求提供凭据

你可以使用脚本JamfSniper.py进行密码喷洒攻击。

此外,在找到适当的凭证后,你可以使用下面的表单暴力破解其他用户名:

JAMF设备认证

jamf二进制文件包含了打开钥匙串的秘密,当时这个秘密是共享的,它是:jk23ucnq91jfu9aj
此外jamf作为一个LaunchDaemon在**/Library/LaunchAgents/com.jamf.management.agent.plist**中持久存在。

JAMF设备接管

jamf将使用的JSSJamf软件服务器URL位于**/Library/Preferences/com.jamfsoftware.jamf.plist**中。
这个文件基本上包含了URL

{% code overflow="wrap" %}

plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist

[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://halbornasd.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]

所以,攻击者可以放置一个恶意的软件包(pkg当安装时覆盖这个文件将URL设置为来自Typhon代理的Mythic C2监听器从而能够滥用JAMF作为C2。

# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0

# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2

{% endcode %}

JAMF冒充

为了冒充设备与JMF之间的通信您需要

  • 设备的UUIDioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • JAMF密钥链/Library/Application\ Support/Jamf/JAMF.keychain,其中包含设备证书

有了这些信息,使用窃取的硬件UUID禁用SIP创建一个虚拟机,然后获取JAMF密钥链hook Jamf代理并窃取其信息。

秘密窃取

a

您还可以监视位置/Library/Application Support/Jamf/tmp/以便管理员可能希望通过Jamf执行的自定义脚本,因为它们会放置在这里,执行并删除。这些脚本可能包含凭据

但是,凭据可能作为参数传递给这些脚本,因此您需要监视ps aux | grep -i jamf甚至不需要root权限

脚本JamfExplorer.py可以监听新添加的文件和新的进程参数。

macOS远程访问

还有关于MacOS的“特殊”网络****协议的信息:

{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} macos-protocols.md {% endcontent-ref %}

Active Directory

在某些情况下,您会发现MacOS计算机连接到AD。在这种情况下,您应该尝试像往常一样枚举活动目录。在以下页面中找到一些帮助:

{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}

{% content-ref url="../../windows-hardening/active-directory-methodology/" %} active-directory-methodology {% endcontent-ref %}

{% content-ref url="../../network-services-pentesting/pentesting-kerberos-88/" %} pentesting-kerberos-88 {% endcontent-ref %}

一些本地的MacOS工具也可能对您有所帮助,例如dscl

dscl "/Active Directory/[Domain]/All Domains" ls /

此外还有一些针对MacOS的工具可用于自动枚举AD并与Kerberos进行交互

  • MachoundMacHound是Bloodhound审计工具的扩展允许在MacOS主机上收集和摄取Active Directory关系。
  • BifrostBifrost是一个Objective-C项目旨在与macOS上的Heimdal krb5 API进行交互。该项目的目标是使用本地API在macOS设备上实现更好的Kerberos安全测试而无需在目标上安装任何其他框架或软件包。
  • Orchard用于执行Active Directory枚举的JavaScript for Automation (JXA)工具。

域信息

echo show com.apple.opendirectoryd.ActiveDirectory | scutil

用户

MacOS有三种类型的用户

  • 本地用户 - 由本地OpenDirectory服务管理与Active Directory没有任何连接。
  • 网络用户 - 需要连接到DC服务器进行身份验证的易失性Active Directory用户。
  • 移动用户 - 具有用于凭据和文件的本地备份的Active Directory用户。

关于用户和组的本地信息存储在文件夹_/var/db/dslocal/nodes/Default_中。
例如名为_mark_的用户的信息存储在_/var/db/dslocal/nodes/Default/users/mark.plist_中名为_admin_的组的信息存储在_/var/db/dslocal/nodes/Default/groups/admin.plist_中。

除了使用HasSession和AdminTo边缘外MacHound向Bloodhound数据库添加了三个新的边缘

  • CanSSH - 允许SSH连接到主机的实体
  • CanVNC - 允许VNC连接到主机的实体
  • CanAE - 允许在主机上执行AppleEvent脚本的实体
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user

#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"

#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"

#Domain Information
dsconfigad -show

更多信息请参见https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

访问钥匙串

钥匙串很可能包含敏感信息,如果在不生成提示的情况下访问,可以帮助推进红队行动:

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

外部服务

MacOS红队行动与常规的Windows红队行动不同通常MacOS直接与多个外部平台集成。MacOS的常见配置是使用OneLogin同步凭据访问计算机并通过OneLogin访问多个外部服务如github、aws...

杂项红队技术

Safari

在Safari中下载文件时如果是“安全”文件它将被自动打开。因此,例如,如果您下载一个zip文件,它将被自动解压缩:

参考资料

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