.. | ||
macos-ipc-inter-process-communication | ||
macos-library-injection | ||
macos-.net-applications-injection.md | ||
macos-dirty-nib.md | ||
macos-electron-applications-injection.md | ||
macos-perl-applications-injection.md | ||
README.md |
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 %}
Javaアプリケーションのインジェクション
特定のJavaの機能(_JAVA_OPTS
環境変数など)を悪用することで、Javaアプリケーションが任意のコード/コマンドを実行することができます。
{% content-ref url="macos-java-apps-injection.md" %} macos-java-apps-injection.md {% endcontent-ref %}
.Netアプリケーションのインジェクション
.Netアプリケーションにコードをインジェクションすることができます。これは、macOSの保護(ランタイムハードニングなど)によって保護されていない**.Netデバッグ機能を悪用**することで実現できます。
{% content-ref url="macos-.net-applications-injection.md" %} macos-.net-applications-injection.md {% endcontent-ref %}
Perlインジェクション
Perlスクリプトが任意のコードを実行するためのさまざまなオプションを確認してください。
{% content-ref url="macos-perl-applications-injection.md" %} macos-perl-applications-injection.md {% endcontent-ref %}
Pythonインジェクション
環境変数**PYTHONINSPECT
が設定されている場合、Pythonプロセスは終了後にPython CLIに移行します。また、PYTHONSTARTUP
を使用して、対話セッションの開始時に実行するPythonスクリプトを指定することも可能です。
ただし、PYTHONINSPECT
が対話セッションを作成する場合、PYTHONSTARTUP
**スクリプトは実行されません。
**PYTHONPATH
やPYTHONHOME
**などの他の環境変数も、Pythonコマンドが任意のコードを実行するのに役立つ場合があります。
**pyinstaller
**でコンパイルされた実行可能ファイルは、埋め込まれたPythonを使用していても、これらの環境変数を使用しません。
{% hint style="danger" %}
全体的に、環境変数を悪用してPythonが任意のコードを実行する方法は見つかりませんでした。
ただし、ほとんどの人々はHombrewを使用してPythonをインストールするため、デフォルトの管理者ユーザーの書き込み可能な場所にPythonがインストールされます。これを乗っ取ることができます。
mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
cat > /opt/homebrew/bin/python3 <<EOF
#!/bin/bash
# Extra hijack code
/opt/homebrew/bin/python3.old "$@"
EOF
chmod +x /opt/homebrew/bin/python3
検出
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のEndpointSecuriyフレームワークの制約です。
他のプロセスによる呼び出し
このブログ記事では、関数**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グループまたはテレグラムグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo および hacktricks-cloud repo にPRを提出してください。