macOS PID Reuse
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
macOSのXPCサービスがPIDに基づいて呼び出されたプロセスを確認し、監査トークンではない場合、PID再利用攻撃に対して脆弱です。この攻撃はレースコンディションに基づいており、エクスプロイトがXPCサービスにメッセージを送信し、その後に**posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
を許可された**バイナリで実行します。
この関数は許可されたバイナリがPIDを所有するようにしますが、悪意のあるXPCメッセージはその直前に送信されていることになります。したがって、XPCサービスがPIDを使用して送信者を認証し、posix_spawn
の実行後にそれを確認すると、それが認可されたプロセスからのものであると考えます。
もし**shouldAcceptNewConnection
という関数や、それを呼び出す関数がauditToken
を呼び出さずにprocessIdentifier
を呼び出しているのを見つけた場合、それはプロセスPIDを確認している**可能性が高いです。
例えば、以下の画像のように(参照から取得):
このエクスプロイトの例を確認してください(再度、参照から取得)して、エクスプロイトの2つの部分を見てください:
複数のフォークを生成するもの
各フォークはメッセージを送信した後にXPCサービスにペイロードを送信しながら**posix_spawn
**を実行します。
エクスプロイトが機能するためには、export`` ``
**OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
**を設定するか、エクスプロイト内に入れることが重要です:
最初のオプションは、NSTasks
を使用し、子プロセスを起動するための引数を利用してRCを悪用します。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)