.. | ||
macos-mdm | ||
macos-keychain.md | ||
README.md |
macOS红队行动
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组 或 Telegram群组 或 关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
滥用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
将使用的JSS(Jamf软件服务器)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。
{% code overflow="wrap" %}
# 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之间的通信,您需要:
- 设备的UUID:
ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
- JAMF密钥链:
/Library/Application\ Support/Jamf/JAMF.keychain
,其中包含设备证书
有了这些信息,使用窃取的硬件UUID和禁用SIP创建一个虚拟机,然后获取JAMF密钥链,hook Jamf 代理并窃取其信息。
秘密窃取
您还可以监视位置/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进行交互:
- Machound:MacHound是Bloodhound审计工具的扩展,允许在MacOS主机上收集和摄取Active Directory关系。
- Bifrost:Bifrost是一个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文件,它将被自动解压缩:
参考资料
- https://www.youtube.com/watch?v=IiMladUbL6E
- https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6
- https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0
- Come to the Dark Side, We Have Apples: Turning macOS Management Evil
- OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?想要在HackTricks中为你的公司做广告吗?或者你想要获取最新版本的PEASS或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFT收藏品——The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。