web-dev-qa-db-ja.com

ウィンドウで名前付きパイプを保護するにはどうすればよいですか?

Windowsで名前付きパイプの通信をセキュリティで保護する方法についていくつかの誤解があります

たとえば、パイプを介して他のプロセスと通信するWindowsサービスがありますが、適切なプロセスと通信していることをどのように確認できますか?接続を認証する方法はありますか?私はChromeがコードにいくつかのセキュリティ対策を実装したことを知っていますが、実装に従うのに問題がありました。

また、パイプに対して使用できるパイプのなりすまし攻撃についても読み、この攻撃がどのように機能するか、またはどのようにブロックするかを理解するのに問題がありました。

6
FigureItOut

倫理的ハッカーのハンドブック、第4版をハッキングするグレイハットから:

名前付きパイプの列挙

名前付きパイプは、開発者が誤って、名前付きパイプを作成したプログラムと同じ特権レベルで実行されているユーザーまたはプログラムからの信頼できる整形式のデータのみを受け入れると考えるという点で、共有セクションに似ています。名前付きパイプによる(少なくとも)3つの特権の昇格の脅威があります。まず、弱いACLの名前付きパイプが低い特権の攻撃者によって書き込まれる可能性があり、より高い特権レベルで実行されているプログラムで解析またはロジックの欠陥を引き起こす可能性があります。次に、攻撃者がより高い特権のユーザーまたはプロセスをだまして名前付きパイプに接続できる場合、攻撃者は発信者を impersonate にできる可能性があります。この偽装機能は、名前付きパイプインフラストラクチャに組み込まれています。最後に、攻撃者はパイプから開示された情報を見つけて、他の方法ではアクセスできない可能性もあります。 AccessChkは名前付きパイプをネイティブでサポートしていないようですが、SysinternalsのMark Russinovichは名前付きパイプを列挙するためのツールを作成しました。これが PipeList.exe の出力です。

PipeList v1.1
by Mark Russinovich
http://www.sysinternals.com
Pipe Name                      Instances      Max Instances
---------                      ---------      -------------
TerminalServer\AutoReconnect        1             1
InitShutdown                        2            -1
lsass                               3            -1
protected_storage                   2            -1
SfApi                               2            -1
ntsvcs                              6            -1
scerpc                              2            -1
net\NtControlPipe1                  1             1
net\NtControlPipe2                  1             1
net\NtControlPipe3                  1             1

Process Explorer GUIは、名前付きパイプのセキュリティ記述子を表示します。 「 スクワット 」または「潜伏」攻撃(前述の2番目の権限昇格の脅威)では、SeImpersonatePrivilegeを持つ攻撃者がより高い特権レベルで実行されているプロセスの動作に影響を与える必要があります。 Cesar Cerrudoによって発見されたそのような例の1つは、攻撃者がサービスのログファイルパスのレジストリ内のファイルパスを任意の値に設定できることを含みました。攻撃には、ログファイルのパスを\ ??\Pipe\AttackerPipeに設定し、その名前付きパイプを作成し、イベントを記録させ、\ ??\Pipe\AttackerPipeに接続するLocalSystem呼び出し元を偽装しました。

2
atdre