macOS Kernel Extensions

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

基本情報

カーネル拡張機能(Kexts)は、.kext拡張子を持つパッケージであり、macOSカーネルスペースに直接ロードされ、メインオペレーティングシステムに追加機能を提供します。

要件

明らかに、これは非常に強力なため、カーネル拡張機能をロードするのは複雑です。カーネル拡張機能をロードするために満たす必要がある要件は次のとおりです:

  • リカバリモードに入るとき、カーネル拡張機能をロードすることが許可されている必要があります:

  • カーネル拡張機能は、Appleによってのみ付与されるカーネルコード署名証明書署名されている必要があります。Appleは、会社やその必要性を詳細に検討します。

  • カーネル拡張機能はまた、ノータライズされている必要があり、Appleはマルウェアをチェックできます。

  • その後、rootユーザーがカーネル拡張機能をロードできるユーザーであり、パッケージ内のファイルはrootに属している必要があります。

  • アップロードプロセス中、パッケージは保護された非rootの場所に準備されなければなりません:/Library/StagedExtensionscom.apple.rootless.storage.KernelExtensionManagement権限が必要)。

  • 最後に、ユーザーはそれをロードしようとすると、確認リクエストを受け取ります そして、承認された場合、コンピュータを再起動してそれをロードする必要があります。

ロードプロセス

Catalinaでは、次のようになりました:検証プロセスがユーザーランドで発生することに注目することが興味深いです。ただし、com.apple.private.security.kext-management権限を持つアプリケーションのみがカーネルに拡張機能のロードを要求できます:kextcachekextloadkextutilkextdsyspolicyd

  1. kextutil cliは、拡張機能のロードの検証プロセスを開始します

  • Machサービスを使用して**kextd**に送信して話します。

  1. **kextd**は、署名など、いくつかのことをチェックします

  • 拡張機能をロードできるかどうかをチェックするために**syspolicyd**に話します。

  1. **syspolicyd**は、拡張機能が以前にロードされていない場合、ユーザーにプロンプトを表示します。

  • **syspolicydは結果をkextd**に報告します

  1. kextdは最終的にカーネルに拡張機能をロードするよう指示できます

**kextdが利用できない場合、kextutil**は同じチェックを実行できます。

参考文献

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

Last updated