10 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 %}
Dirty NIB
NIBファイルは、アプリケーション内のユーザーインターフェース(UI)要素とその相互作用を定義します。ただし、NIBファイルは任意のコマンドを実行することができ、GatekeeperはNIBファイルが変更された場合でも、既に実行されているアプリケーションの実行を停止しません。したがって、任意のプログラムが任意のコマンドを実行するために使用される可能性があります。
{% content-ref url="macos-dirty-nib.md" %} macos-dirty-nib.md {% endcontent-ref %}
.Netアプリケーションのインジェクション
.Netアプリケーションにコードをインジェクションすることができます。これは、macOSの保護(ランタイムハードニングなど)によって保護されていない**.Netデバッグ機能を悪用**することによって行われます。
{% 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
**コマンドライン引数を使用することができ、それによってコードをインジェクションすることができます。 - シンボリックリンクまたはハードリンクの使用:一般的には、最も一般的な乱用方法は、ユーザー権限でリンクを配置し、それをより高い権限の場所に指すことです。ハードリンクとシンボリックリンクの両方に対して検出は非常に簡単です。リンクを作
他のプロセスによる呼び出し
このブログ記事では、関数**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。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。