# macOS红队行动
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
## 滥用MDM
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
如果你成功**获取管理员凭证**以访问管理平台,你可以通过在机器上分发恶意软件来**潜在地控制所有计算机**。
在MacOS环境中进行红队行动时,强烈建议对MDM的工作原理有一定的了解:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
{% endcontent-ref %}
### 将MDM用作C2
MDM将具有安装、查询或删除配置文件、安装应用程序、创建本地管理员帐户、设置固件密码、更改FileVault密钥的权限...
为了运行自己的MDM,你需要**使用供应商签名的CSR**,你可以尝试通过[**https://mdmcert.download/**](https://mdmcert.download/)获取。要在Apple设备上运行自己的MDM,可以使用[**MicroMDM**](https://github.com/micromdm/micromdm)。
然而,要在已注册的设备上安装应用程序,你仍然需要使用开发者帐户进行签名...然而,在MDM注册时,**设备将MDM的SSL证书添加为受信任的CA**,因此现在你可以签署任何内容。
要将设备注册到MDM中,你需要以root身份安装一个**`mobileconfig`**文件,可以通过**pkg**文件传递(你可以将其压缩为zip文件,当从safari下载时,它将被解压缩)。
**Mythic agent Orthrus**使用了这种技术。
### 滥用JAMF PRO
JAMF可以运行**自定义脚本**(由系统管理员开发的脚本)、**本地负载**(创建本地帐户、设置EFI密码、文件/进程监视...)和**MDM**(设备配置、设备证书...)。
#### JAMF自注册
访问类似于`https://.jamfcloud.com/enroll/`的页面,查看是否启用了**自注册**。如果启用了,可能会**要求提供凭据**。
你可以使用脚本[**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py)进行密码喷洒攻击。
此外,在找到适当的凭据后,你可以使用下面的表单暴力破解其他用户名:
![](<../../.gitbook/assets/image (7) (1).png>)
#### 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" %}
```bash
plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
[...]
is_virtual_machine
jss_url
https://halbornasd.jamfcloud.com/
last_management_framework_change_id
4
[...]
```
因此,攻击者可以在安装时放置一个恶意的软件包(`pkg`),该软件包会**覆盖此文件**,将URL设置为来自Typhon代理的Mythic C2监听器,从而能够滥用JAMF作为C2。
```bash
# 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**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)可以监听新添加的文件和新的进程参数。
### macOS远程访问
还有关于**MacOS**的“特殊”**网络****协议**的信息:
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %}
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
{% endcontent-ref %}
## Active Directory
在某些情况下,您会发现**MacOS计算机连接到AD**。在这种情况下,您应该尝试像往常一样**枚举**活动目录。在以下页面中找到一些**帮助**:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
{% content-ref url="../../windows-hardening/active-directory-methodology/" %}
[active-directory-methodology](../../windows-hardening/active-directory-methodology/)
{% endcontent-ref %}
{% content-ref url="../../network-services-pentesting/pentesting-kerberos-88/" %}
[pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/)
{% endcontent-ref %}
一些**本地的MacOS工具**也可能对您有所帮助,例如`dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
此外,还有一些针对MacOS的工具可用于自动枚举AD并与Kerberos进行交互:
* [**Machound**](https://github.com/XMCyber/MacHound):MacHound是Bloodhound审计工具的扩展,允许在MacOS主机上收集和摄取Active Directory关系。
* [**Bifrost**](https://github.com/its-a-feature/bifrost):Bifrost是一个Objective-C项目,旨在与macOS上的Heimdal krb5 API进行交互。该项目的目标是使用本地API在macOS设备上实现更好的Kerberos安全测试,而无需在目标上安装任何其他框架或软件包。
* [**Orchard**](https://github.com/its-a-feature/Orchard):用于执行Active Directory枚举的JavaScript for Automation (JXA)工具。
### 域信息
```bash
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脚本的实体
```bash
#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/](https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/)
## 访问钥匙串
钥匙串很可能包含敏感信息,如果在不生成提示的情况下访问,可以帮助推进红队行动:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
{% endcontent-ref %}
## 外部服务
MacOS红队行动与常规的Windows红队行动不同,通常**MacOS直接与多个外部平台集成**。MacOS的常见配置是使用**OneLogin同步凭据访问计算机,并通过OneLogin访问多个外部服务**(如github、aws...):
![](<../../.gitbook/assets/image (563).png>)
## 杂项红队技术
### Safari
在Safari中下载文件时,如果是“安全”文件,它将被**自动打开**。因此,例如,如果您**下载一个zip文件**,它将被自动解压缩:
## 参考资料
* [**https://www.youtube.com/watch?v=IiMladUbL6E**](https://www.youtube.com/watch?v=IiMladUbL6E)
* [**https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6**](https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6)
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
* [**Come to the Dark Side, We Have Apples: Turning macOS Management Evil**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**为你的公司做广告**吗?或者你想要**获取最新版本的PEASS或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**