hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
2023-12-16 14:46:09 +00:00
..
macos-ipc-inter-process-communication Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:46:09 +00:00
macos-library-injection Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-11-06 00:59:58 +00:00
macos-.net-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:46:09 +00:00
macos-dirty-nib.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-11-06 16:03:07 +00:00
macos-electron-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:46:09 +00:00
macos-perl-applications-injection.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:46:09 +00:00
README.md Translated ['README.md', 'backdoors/salseo.md', 'forensics/basic-forensi 2023-12-16 14:46:09 +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 %}

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**スクリプトは実行されません。

**PYTHONPATHPYTHONHOME**などの他の環境変数も、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_LIBRARIESCFNETWORK_LIBRARY_PATHRAWCAMERA_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である必要があります(コードをインジェクションする方法ではありません)。

参考文献

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