macOS SIP

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

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

WhiteIntelは、ダークウェブを活用した検索エンジンで、企業やその顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料機能を提供しています。

WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。

彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:


基本情報

macOSの**System Integrity Protection(SIP)**は、最も特権のあるユーザーでもシステムの重要なフォルダに不正な変更を加えることを防ぐように設計されたメカニズムです。この機能は、保護された領域でのファイルの追加、変更、削除などのアクションを制限することで、システムの整合性を維持する上で重要な役割を果たします。SIPによって保護される主要なフォルダには次のものがあります:

  • /System

  • /bin

  • /sbin

  • /usr

SIPの動作を規定するルールは、**/System/Library/Sandbox/rootless.conf**にある構成ファイルで定義されています。このファイルでは、アスタリスク(*)で前置されたパスは、厳格なSIP制限の例外として示されています。

以下はその例です:

/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man

このスニペットは、SIPが一般的に**/usr**ディレクトリを保護する一方で、特定のサブディレクトリ(/usr/libexec/cups/usr/local、および/usr/share/man)では、そのパスの前にアスタリスク(*)が付いていることから、変更が許可されていることを示しています。

ディレクトリやファイルがSIPによって保護されているかどうかを確認するには、**ls -lOdコマンドを使用して、restrictedまたはsunlnk**フラグの存在を確認できます。例:

ls -lOd /usr/libexec/cups
drwxr-xr-x  11 root  wheel  sunlnk 352 May 13 00:29 /usr/libexec/cups

この場合、sunlnk フラグは、/usr/libexec/cups ディレクトリそのものは削除できませんが、その中のファイルは作成、変更、削除ができることを示しています。

一方:

ls -lOd /usr/libexec
drwxr-xr-x  338 root  wheel  restricted 10816 May 13 00:29 /usr/libexec

ここでは、restricted フラグは /usr/libexec ディレクトリがSIPによって保護されていることを示しています。SIPで保護されたディレクトリでは、ファイルを作成、変更、削除することはできません。

さらに、ファイルに属性 com.apple.rootless 拡張 属性 が含まれている場合、そのファイルも SIPによって保護されます

SIPは他のrootアクションも制限します:

  • 信頼されていないカーネル拡張機能の読み込み

  • Appleが署名したプロセスのタスクポートの取得

  • NVRAM変数の変更

  • カーネルデバッグの許可

オプションは nvram 変数にビットフラグとして保持されます(Intelでは csr-active-config、ARMではブートされたデバイスツリーから lp-sip0 が読み取られます)。csr.sh のXNUソースコードでフラグを見つけることができます:

SIP ステータス

次のコマンドでシステムでSIPが有効になっているかどうかを確認できます:

csrutil status

もしSIPを無効にする必要がある場合は、コンピュータをリカバリーモードで再起動する必要があります(起動時にCommand+Rを押します)、その後、次のコマンドを実行します:

csrutil disable

SIPを有効のままにしてデバッグ保護を削除したい場合は、次のようにします:

csrutil enable --without debug

その他の制限

  • 署名されていないカーネル拡張機能(kext)の読み込みを禁止し、検証済みの拡張機能のみがシステムカーネルとやり取りすることを保証します。

  • macOSシステムプロセスのデバッグを防止し、コアシステムコンポーネントを不正なアクセスや変更から保護します。

  • dtraceなどのツールがシステムプロセスを検査するのを防止し、システムの運用の整合性をさらに保護します。

このトークでSIP情報について詳しく学ぶ

SIP バイパス

SIPをバイパスすることで、攻撃者は次のことができます:

  • ユーザーデータへのアクセス:すべてのユーザーアカウントからメール、メッセージ、Safariの履歴などの機密ユーザーデータを読み取る。

  • TCC バイパス:TCC(透明性、同意、および制御)データベースを直接操作して、ウェブカメラ、マイク、およびその他のリソースへの不正アクセスを許可します。

  • 持続性の確立:SIPで保護された場所にマルウェアを配置し、それをルート権限でも削除できないようにします。これにはマルウェア除去ツール(MRT)を改ざんする可能性も含まれます。

  • カーネル拡張機能の読み込み:追加の保護策があるものの、SIPをバイパスすると署名されていないカーネル拡張機能を読み込むプロセスが簡素化されます。

インストーラーパッケージ

Appleの証明書で署名されたインストーラーパッケージは、その保護をバイパスできます。これは、標準の開発者によって署名されたパッケージでも、SIPで保護されたディレクトリを変更しようとするとブロックされることを意味します。

存在しないSIPファイル

潜在的な抜け穴の1つは、rootless.confでファイルが指定されているが現在存在しない場合、作成できることです。マルウェアはこれを利用してシステム上に持続性を確立する可能性があります。たとえば、悪意のあるプログラムがrootless.confにリストされているが存在しない場合、/System/Library/LaunchDaemonsに.plistファイルを作成できます。

com.apple.rootless.install.heritable

権限 com.apple.rootless.install.heritable はSIPをバイパスすることを許可します

システムがコード署名を検証した後にインストーラーパッケージを入れ替え、元の代わりに悪意のあるパッケージをインストールすることが可能であることが発見されました。これらのアクションは**system_installd**によって実行されたため、SIPをバイパスすることが可能となりました。

マウントされたイメージや外部ドライブからパッケージがインストールされた場合、インストーラーそのファイルシステムからバイナリを実行しました(SIPで保護された場所からではなく)、これにより**system_installd**が任意のバイナリを実行しました。

CVE-2021-30892 - Shrootless

このブログ投稿からの研究者 は、macOSのシステムインテグリティ保護(SIP)メカニズムにおいて、'Shrootless'脆弱性と呼ばれる脆弱性を発見しました。この脆弱性は、**system_installdデーモンを中心にしており、com.apple.rootless.install.heritable**という権限を持つため、その子プロセスのいずれかがSIPのファイルシステム制限をバイパスできます。

**system_installd**デーモンは、Appleによって署名されたパッケージ(.pkgファイル)をインストールします。

研究者は、Appleによって署名されたパッケージ(.pkgファイル)のインストール中に、system_installdがパッケージに含まれるポストインストールスクリプトを実行することを発見しました。これらのスクリプトはデフォルトのシェルである**zshによって実行され、非対話モードでも存在する場合は/etc/zshenvファイルからコマンドが自動的に実行されます。この動作は攻撃者によって悪用される可能性があります:悪意のある/etc/zshenvファイルを作成し、system_installdzshを呼び出すのを待つ**ことで、デバイス上で任意の操作を実行できます。

さらに、/etc/zshenvはSIPバイパスだけでなく一般的な攻撃手法として使用できることが発見されました。各ユーザープロファイルには~/.zshenvファイルがあり、これは/etc/zshenvと同じように動作しますが、ルート権限は必要ありません。このファイルは、zshが起動するたびにトリガーされる持続性メカニズムとして使用したり、特権昇格メカニズムとして使用したりできます。管理者ユーザーがsudo -sまたはsudo <command>を使用してルートに昇格すると、~/.zshenvファイルがトリガーされ、実質的にルートに昇格します。

CVE-2022-22583 では、同じ**system_installdプロセスが/tmp内のSIPで保護されたランダムな名前のフォルダにポストインストールスクリプトを配置していたため、悪用される可能性がありました。/tmp自体はSIPで保護されていないため、仮想イメージをマウントし、インストーラーがそこにポストインストールスクリプトを配置し、仮想イメージをアンマウント**し、すべてのフォルダを再作成し、ペイロードを実行するためのポストインストールスクリプトを追加することが可能でした。

fsck_csがシンボリックリンクをたどる能力により、重要なファイルを破損させるように誤誘導される脆弱性が特定されました。具体的には、攻撃者が/dev/diskXからファイル/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plistへのリンクを作成しました。/dev/diskXで**fsck_cs**を実行すると、Info.plistが破損します。このファイルの整合性は、カーネル拡張機能の読み込みを制御するSIP(システムインテグリティ保護)にとって重要です。破損すると、SIPのカーネル除外の管理能力が損なわれます。

この脆弱性を悪用するためのコマンドは次のとおりです:

ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot

この脆弱性の悪用には深刻な影響があります。通常、カーネル拡張機能のアクセス許可を管理するInfo.plistファイルが無効になります。これには、AppleHWAccess.kextなど特定の拡張機能をブラックリストに登録できなくなることが含まれます。したがって、SIPの制御メカニズムが機能しなくなると、この拡張機能がロードされ、システムのRAMへの不正な読み取りおよび書き込みアクセスが許可されます。

SIP保護されたフォルダーに新しいファイルシステムをマウントして保護をバイパスすることが可能でした。

mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg

システムは、Install macOS Sierra.app内の埋め込みインストーラディスクイメージから起動するように設定されており、OSをアップグレードするためにblessユーティリティを利用しています。使用されるコマンドは次のとおりです:

/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer

このプロセスのセキュリティは、攻撃者がブート前にアップグレードイメージ(InstallESD.dmg)を変更すると危険にさらされる可能性があります。この戦略は、動的ローダー(dyld)を悪意のあるバージョン(libBaseIA.dylib)で置き換えることを含みます。この置換により、インストーラが起動されるときに攻撃者のコードが実行されます。

攻撃者のコードは、アップグレードプロセス中に制御を取得し、システムがインストーラに対する信頼を悪用します。攻撃は、InstallESD.dmgイメージを変更することによって進行し、特にextractBootBitsメソッドをターゲットとします。これにより、ディスクイメージが使用される前に悪意のあるコードの注入が可能となります。

さらに、InstallESD.dmg内には、アップグレードコードのルートファイルシステムとして機能するBaseSystem.dmgがあります。これに動的ライブラリを注入することで、悪意のあるコードがOSレベルのファイルを変更できるプロセス内で動作することが可能となり、システムの侵害の可能性が大幅に高まります。

DEF CON 31でのこのトークでは、SIPをバイパスできる systemmigrationdbashperl スクリプトを実行し、BASH_ENVPERL5OPT 経由で悪用されることが示されています。

CVE-2023-42860

このブログ投稿に詳細が記載されており、InstallAssistant.pkg パッケージからの postinstall スクリプトが実行されていました。

/usr/bin/chflags -h norestricted "${SHARED_SUPPORT_PATH}/SharedSupport.dmg"

そして${SHARED_SUPPORT_PATH}/SharedSupport.dmgにシンボリックリンクを作成することで、ユーザーがSIP保護をバイパスして任意のファイルを無制限に解除することが可能でした。

com.apple.rootless.install

権限 com.apple.rootless.install はSIPをバイパスすることを許可します

権限com.apple.rootless.installは、macOSにおけるSystem Integrity Protection(SIP)をバイパスすることができることで知られています。これは特にCVE-2022-26712に関連して言及されています。

この特定のケースでは、/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpcにあるシステムXPCサービスがこの権限を持っています。これにより、関連するプロセスがSIPの制約を回避できます。さらに、このサービスはセキュリティ対策を施さずにファイルの移動を許可するメソッドを提供しています。

封印されたシステムスナップショット

封印されたシステムスナップショットは、Appleが**macOS Big Sur(macOS 11)**で導入した機能で、**System Integrity Protection(SIP)**メカニズムの一部として追加のセキュリティとシステムの安定性を提供します。これらは基本的にシステムボリュームの読み取り専用バージョンです。

以下は詳細です:

  1. 不変のシステム:封印されたシステムスナップショットはmacOSシステムボリュームを「不変」にし、変更できないようにします。これにより、セキュリティやシステムの安定性が危険にさらされる可能性のある不正または偶発的な変更が防止されます。

  2. システムソフトウェアの更新:macOSのアップデートやアップグレードをインストールすると、macOSは新しいシステムスナップショットを作成します。macOSの起動ボリュームは、**APFS(Apple File System)**を使用してこの新しいスナップショットに切り替えます。更新を適用するプロセス全体が安全かつ信頼性が高くなり、更新中に何か問題が発生した場合でもシステムは常に前のスナップショットに戻ることができます。

  3. データの分離:macOS Catalinaで導入されたデータとシステムボリュームの分離の概念と組み合わせて、封印されたシステムスナップショット機能は、すべてのデータと設定が別々の「Data」ボリュームに保存されるようにします。この分離により、データがシステムから独立しており、システムの更新プロセスが簡素化され、システムのセキュリティが向上します。

これらのスナップショットはmacOSによって自動的に管理され、APFSのスペース共有機能のおかげでディスク上の追加のスペースを取らずに済みます。また、これらのスナップショットは、システム全体のユーザーアクセス可能なバックアップであるTime Machineスナップショットとは異なります。

スナップショットの確認

コマンド diskutil apfs listAPFSボリュームの詳細とそのレイアウトをリストします:

+-- Container disk3 966B902E-EDBA-4775-B743-CF97A0556A13
|   ====================================================
|   APFS Container Reference:     disk3
|   Size (Capacity Ceiling):      494384795648 B (494.4 GB)
|   Capacity In Use By Volumes:   219214536704 B (219.2 GB) (44.3% used)
|   Capacity Not Allocated:       275170258944 B (275.2 GB) (55.7% free)
|   |
|   +-< Physical Store disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
|   |   -----------------------------------------------------------
|   |   APFS Physical Store Disk:   disk0s2
|   |   Size:                       494384795648 B (494.4 GB)
|   |
|   +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
|   |   ---------------------------------------------------
|   |   APFS Volume Disk (Role):   disk3s1 (System)
|   |   Name:                      Macintosh HD (Case-insensitive)
|   |   Mount Point:               /System/Volumes/Update/mnt1
|   |   Capacity Consumed:         12819210240 B (12.8 GB)
|   |   Sealed:                    Broken
|   |   FileVault:                 Yes (Unlocked)
|   |   Encrypted:                 No
|   |   |
|   |   Snapshot:                  FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
|   |   Snapshot Disk:             disk3s1s1
|   |   Snapshot Mount Point:      /
|   |   Snapshot Sealed:           Yes
[...]
+-> Volume disk3s5 281959B7-07A1-4940-BDDF-6419360F3327
|   ---------------------------------------------------
|   APFS Volume Disk (Role):   disk3s5 (Data)
|   Name:                      Macintosh HD - Data (Case-insensitive)
    |   Mount Point:               /System/Volumes/Data
    |   Capacity Consumed:         412071784448 B (412.1 GB)
    |   Sealed:                    No
|   FileVault:                 Yes (Unlocked)

前述の出力では、ユーザーアクセス可能な場所/System/Volumes/Dataの下にマウントされていることがわかります。

さらに、macOSシステムボリュームのスナップショット/にマウントされており、封印されています(OSによって暗号化されています)。したがって、SIPがバイパスされて変更された場合、OSは起動しなくなります

また、シールが有効になっていることを確認するには、次のコマンドを実行することができます:

csrutil authenticated-root status
Authenticated Root status: enabled

さらに、スナップショットディスクは読み取り専用としてマウントされています:

mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)

WhiteIntelは、ダークウェブを活用した検索エンジンで、企業や顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料の機能を提供しています。

WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。

彼らのウェブサイトをチェックし、無料でエンジンを試すことができます:

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

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

Last updated