9.7 KiB
macOSプロセスの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
MacOSプロセスの悪用
MacOSは、他のオペレーティングシステムと同様に、プロセスが相互作用し、通信し、データを共有するためのさまざまな方法とメカニズムを提供しています。これらの技術はシステムの効率的な動作に不可欠ですが、脅威行為者によっても悪用されることがあります。
ライブラリインジェクション
ライブラリインジェクションは、攻撃者がプロセスに悪意のあるライブラリを読み込ませる技術です。インジェクションされると、ライブラリはターゲットプロセスのコンテキストで実行され、攻撃者にプロセスと同じ権限とアクセス権を提供します。
{% content-ref url="macos-library-injection/" %} macos-library-injection {% endcontent-ref %}
関数フック
関数フックは、ソフトウェアコード内の関数呼び出しまたはメッセージを傍受することを意味します。関数をフックすることで、攻撃者はプロセスの動作を変更したり、機密データを観察したり、実行フローを制御したりすることができます。
{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %} macos-function-hooking.md {% endcontent-ref %}
プロセス間通信
プロセス間通信(IPC)は、別々のプロセスがデータを共有し交換するさまざまな方法を指します。IPCは多くの正当なアプリケーションにとって基本的ですが、プロセスの分離を逸脱させ、機密情報を漏洩させたり、不正な操作を行ったりするために悪用されることもあります。
{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %} macos-ipc-inter-process-communication {% endcontent-ref %}
Electronアプリケーションのインジェクション
特定の環境変数で実行されるElectronアプリケーションは、プロセスのインジェクションの脆弱性がある場合があります。
{% content-ref url="macos-electron-applications-injection.md" %} macos-electron-applications-injection.md {% endcontent-ref %}
.Netアプリケーションのインジェクション
.Netデバッグ機能を悪用することで、.Netアプリケーションにコードをインジェクションすることができます(ランタイムの強化などのmacOSの保護機能では保護されていません)。
{% content-ref url="macos-.net-applications-injection.md" %} macos-.net-applications-injection.md {% endcontent-ref %}
Pythonのインジェクション
環境変数**PYTHONINSPECT
**が設定されている場合、Pythonプロセスは終了後にPython CLIに移行します。
**PYTHONPATH
やPYTHONHOME
**などの他の環境変数も、Pythonコマンドを実行して任意のコードを実行するのに役立つ場合があります。
なお、**pyinstaller
**でコンパイルされた実行可能ファイルは、埋め込まれたPythonを使用していても、これらの環境変数を使用しません。
検出
Shield
Shield(Github)は、プロセスインジェクションを検出およびブロックすることができるオープンソースのアプリケーションです。
- 環境変数の使用:次の環境変数の存在を監視します:
DYLD_INSERT_LIBRARIES
、CFNETWORK_LIBRARY_PATH
、RAWCAMERA_BUNDLE_PATH
、ELECTRON_RUN_AS_NODE
task_for_pid
の呼び出しの使用:プロセスが別のプロセスのタスクポートを取得しようとする場合に検出します。これにより、コードをプロセスにインジェクションすることができます。- Electronアプリのパラメータ:デバッグモードでElectronアプリを起動するために**
--inspect
、--inspect-brk
、--remote-debugging-port
**コマンドライン引数を使用することができ、それによってコードをインジェクションすることができます。 - シンボリックリンクまたはハードリンクの使用:一般的には、最も一般的な悪用方法は、ユーザー権限でリンクを作成し、それをより高い権限の場所に向けることです。ハードリンクとシンボリックリンクの両方に対して非常にシンプルな検出が行われます。リンクを作成するプロセスがターゲットファイルとは異なる権限レベルを持っている場合、アラートが作成されます。残念ながら、シンボリックリンクの場合、ブロックは不可能です。リンクの宛先に関する情報が作成前にはわからないためです。これはAppleのEndpointSecurityフレームワークの制約です。
他のプロセスによる呼び出し
このブログ記事では、関数**task_name_for_pid
**を使用して、プロセスにコードをインジェクションする他のプロセスに関する情報を取得する方法が説明されています。
この関数を呼び出すには、呼び出し元のプロセスと同じuidであるか、rootである必要があります(この関数はプロセスに関する情報を返し、コードをインジェクションする方法ではありません)。
参考文献
- https://theevilbit.github.io/shield/
- https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo および hacktricks-cloud repo にPRを提出してください。