hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2023-09-28 20:14:46 +00:00
..
macos-ipc-inter-process-communication Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-09-19 23:09:04 +00:00
macos-library-injection Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2023-09-24 15:28:04 +00:00
macos-.net-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2023-09-28 20:14:46 +00:00
macos-electron-applications-injection.md Translated to Japanese 2023-07-07 23:42:27 +00:00
README.md Translated to Japanese 2023-07-07 23:42:27 +00:00

macOSプロセスの悪用

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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に移行します。

**PYTHONPATHPYTHONHOME**などの他の環境変数も、Pythonコマンドを実行して任意のコードを実行するのに役立つ場合があります。

なお、**pyinstaller**でコンパイルされた実行可能ファイルは、埋め込まれたPythonを使用していても、これらの環境変数を使用しません。

検出

Shield

ShieldGithub)は、プロセスインジェクションを検出およびブロックすることができるオープンソースのアプリケーションです。

  • 環境変数の使用:次の環境変数の存在を監視します:DYLD_INSERT_LIBRARIESCFNETWORK_LIBRARY_PATHRAWCAMERA_BUNDLE_PATHELECTRON_RUN_AS_NODE
  • task_for_pidの呼び出しの使用:プロセスが別のプロセスのタスクポートを取得しようとする場合に検出します。これにより、コードをプロセスにインジェクションすることができます。
  • ElectronアプリのパラメータデバッグモードでElectronアプリを起動するために**--inspect--inspect-brk--remote-debugging-port**コマンドライン引数を使用することができ、それによってコードをインジェクションすることができます。
  • シンボリックリンクまたはハードリンクの使用:一般的には、最も一般的な悪用方法は、ユーザー権限でリンクを作成し、それをより高い権限の場所に向けることです。ハードリンクとシンボリックリンクの両方に対して非常にシンプルな検出が行われます。リンクを作成するプロセスがターゲットファイルとは異なる権限レベルを持っている場合、アラートが作成されます。残念ながら、シンボリックリンクの場合、ブロックは不可能です。リンクの宛先に関する情報が作成前にはわからないためです。これはAppleのEndpointSecurityフレームワークの制約です。

他のプロセスによる呼び出し

このブログ記事では、関数**task_name_for_pid**を使用して、プロセスにコードをインジェクションする他のプロセスに関する情報を取得する方法が説明されています。

この関数を呼び出すには、呼び出し元のプロセスと同じuidであるか、rootである必要があります(この関数はプロセスに関する情報を返し、コードをインジェクションする方法ではありません)。

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥