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

13 KiB
Raw Blame History

macOS Red Teaming

ゼロからヒーローまでAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

MDMの悪用

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

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

MacOS環境でのレッドチーミングでは、MDMの動作原理について一定の理解を持つことが強く推奨されています

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

MDMをC2として使用する

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

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

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

デバイスをMDMに登録するには、ルートとして**mobileconfigファイルをインストールする必要があります。これはpkg**ファイルを介して配信できますSafariからダウンロードされると解凍されます

Mythicエージェント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デバイス乗っ取り

jamfが使用するJSSJamf Software ServerURLは**/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>
[...]

{% endcode %}

したがって、攻撃者は、TyphonエージェントからMythic C2リスナーへのURLを設定して、JAMFをC2として悪用できるようになるように、悪意のあるパッケージpkg)を上書きすることができます。

# 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を持つVMを作成し、SIPを無効にし、JAMFキーチェーンを落とし、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に接続されていることがあります。このシナリオでは、通常どおりにActive Directoryを列挙する必要があります。以下のページでヘルプを見つけることができます:

{% 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ツールの1つはdsclです:

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

また、MacOS向けにADを自動的に列挙し、kerberosを操作するためのツールがいくつか用意されています

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

ユーザー

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 に保存されています。

MacHoundは、HasSessionとAdminToエッジに加えて、Bloodhoundデータベースに3つの新しいエッジを追加します

  • 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 Red Teamingは通常のWindows Red Teamingとは異なり、MacOSは通常、複数の外部プラットフォームと直接統合されています。MacOSの一般的な構成は、OneLoginと同期した資格情報を使用してコンピュータにアクセスし、OneLoginを介して複数の外部サービスgithub、awsなどにアクセスすることです。

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

Safari

Safariでファイルをダウンロードすると、"安全"なファイルの場合、自動的に開かれます。たとえば、zipファイルをダウンロードした場合、自動的に展開されます:

参考文献