macOS Red Teaming
MDMの悪用
JAMF Pro:
jamf checkJSSConnection
Kandji
管理プラットフォームにアクセスするために管理者資格情報を侵害することができれば、マシンにマルウェアを配布することですべてのコンピュータを侵害する可能性があります。
MacOS環境でのレッドチーミングには、MDMの動作についての理解があることが強く推奨されます:
macOS MDMMDMを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.plist
にLaunchDaemonとして持続**します。
JAMFデバイスタ takeover
JSS(Jamf Software Server)URLは、**jamf
が使用するもので、/Library/Preferences/com.jamfsoftware.jamf.plist
**にあります。
このファイルには基本的にURLが含まれています:
攻撃者は、インストール時にこのファイルを上書きする悪意のあるパッケージ(pkg
)をドロップし、TyphonエージェントからのMythic C2リスナーへのURLを設定することで、JAMFを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エージェントをフックしてその情報を盗みます。
秘密の盗難
管理者がJamfを介して実行したいカスタムスクリプトを監視するために、/Library/Application Support/Jamf/tmp/
の場所を監視することもできます。これらのスクリプトはここに配置され、実行され、削除されます。これらのスクリプトには資格情報が含まれている可能性があります。
ただし、資格情報はこれらのスクリプトにパラメータとして渡される可能性があるため、ps aux | grep -i jamf
を監視する必要があります(ルートでなくても可能です)。
スクリプトJamfExplorer.pyは、新しいファイルが追加されるのをリッスンし、新しいプロセス引数を監視できます。
macOSリモートアクセス
また、MacOSの「特別な」ネットワーク****プロトコルについても:
macOS Network Services & ProtocolsActive Directory
場合によっては、MacOSコンピュータがADに接続されていることがあります。このシナリオでは、慣れているようにアクティブディレクトリを列挙しようとするべきです。以下のページでヘルプを見つけてください:
389, 636, 3268, 3269 - Pentesting LDAPActive Directory Methodology88tcp/udp - Pentesting Kerberos役立つローカルMacOSツールの一つはdscl
です:
また、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)ツールです。
ドメイン情報
ユーザー
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スクリプトを実行することを許可されたエンティティ
More info in https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/
Computer$ パスワード
次の方法でパスワードを取得します:
Computer$
パスワードにシステムキーチェーン内でアクセスすることが可能です。
Over-Pass-The-Hash
特定のユーザーとサービスのためにTGTを取得します:
TGTが収集されると、次のコマンドで現在のセッションに注入することが可能です:
Kerberoasting
取得したサービスチケットを使用して、他のコンピュータの共有にアクセスを試みることができます:
キーチェーンへのアクセス
キーチェーンには、プロンプトを生成せずにアクセスされた場合、レッドチーム演習を進めるのに役立つ可能性のある機密情報が含まれている可能性が高いです:
macOS Keychain外部サービス
MacOSのレッドチーミングは、通常MacOSがいくつかの外部プラットフォームと直接統合されているため、通常のWindowsレッドチーミングとは異なります。MacOSの一般的な構成は、OneLoginで同期された資格情報を使用してコンピュータにアクセスし、OneLoginを介していくつかの外部サービス(github、awsなど)にアクセスすることです。
その他のレッドチーム技術
Safari
Safariでファイルがダウンロードされると、それが「安全な」ファイルであれば、自動的に開かれます。例えば、zipファイルをダウンロードすると、自動的に解凍されます:
参考文献
Last updated