
Burp または類似の HTTP プロキシツールを使用して Windows 名前付きパイプ通信を傍受する
名前付きパイプは、Windows 上でのプロセス間通信において非常に広く使われています。Windows リモートプロシージャ コール (RPC) を含む多くのアプリケーションで使用されています。このツールの目的は、セキュリティ研究者やペネトレーションテスターが、名前付きパイプを使用するアプリケーションに対してセキュリティ評価を行えるようにすることです。 このプロジェクトは、CyberArk Labs による素晴らしい MITM_Intercept プロジェクトに触発されています。
このツールは、WebSocket クライアント/サーバーブリッジを備えたパイプクライアント/サーバープロキシを作成します。WebSocket クライアントは、Burp などの HTTP プロキシを介して WebSocket サーバーに接続します。
重要な注意: このツールは名前付きパイプを作成するために win32 api を使用するため、Windows でのみ動作します。現時点では、対象のパイプサーバーと HTTP プロキシと同じマシン上で実行する必要があります。リモートプロキシを使用するオプションや、リモートパイプサーバーにリレーするオプションを追加するかもしれませんが、ツールは引き続き Windows 上で実行する必要があります。
フロー図:

このツールは、対象のサーバーアプリケーションによって作成されたインスタンスとは別に、独立したパイプサーバーインスタンスを作成し、対象のクライアントアプリケーションをこれらのプロキシインスタンスに接続させることで機能することを理解することが重要です。つまり、次のようないくつかの点が発生します。
上記の項目からわかるように、このツールを使用すると対象アプリケーションの動作が変わる可能性があります。このツールは主にセキュリティテスト用ですので、本番システムでは使用しないでください。
このツールは Python バージョン 3.13.7 でテストされています。セットアップ:
python -m venv .venv
.venv\Scripts\activate.bat
pip install -r requirements.txt
usage: pipe_intercept.py [-h] --pipe-name PIPE_NAME [--ws-port WS_PORT] [--http-proxy-port HTTP_PROXY_PORT] [--log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}]
options:
-h, --help show this help message and exit
--pipe-name PIPE_NAME
The name of the pipe to be intercepted
--ws-port WS_PORT An available port number for the internal WebSocket server (if not specified, a random port will be used)
--http-proxy-port HTTP_PROXY_PORT
The port number of the HTTP proxy (if not specified, the default is 8080)
--log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}
Log level (if not specified, the default is INFO)
ルートフォルダー (pipe-intercept) から:
pytest
Windows 上の Docker は、クライアントと Docker サービスの間の通信に名前付きパイプを使用します。パイプ名は "\\.\pipe\docker_engine" です。この通信をどのように傍受できるかを見てみましょう。まず、ツールを実行します:
C:\pipe-intercept>python pipe_intercept.py --pipe-name docker_engine
INFO:websockets.server:server listening on 127.0.0.1:12037
次に、Burp を起動し、別のシェルから Windows コンテナを作成します:
C:\pipe-intercept>docker run -it --name win mcr.microsoft.com/windows:1809-amd64 cmd
Microsoft Windows [Version 10.0.17763.2803]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>dir
Volume in drive C has no label.
Volume Serial Number is 5C09-8FFA
Directory of C:\
05/07/2020 06:16 AM 5,510 License.txt
04/04/2022 02:57 PM <DIR> PerfLogs
04/04/2022 04:13 PM <DIR> Program Files
04/04/2022 02:57 PM <DIR> Program Files (x86)
04/04/2022 04:17 PM <DIR> Users
04/04/2022 04:13 PM <DIR> Windows
1 File(s) 5,510 bytes
5 Dir(s) 21,188,812,800 bytes free
C:\>
次に、Burp で WebSocket タブを開くと、通信を確認できます:

また、インターセプトを有効にしてメッセージを変更することもできます:

Microsoft Windows [Version 10.0.17763.2803]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>dir
Volume in drive C has no label.
Volume Serial Number is 5C09-8FFA
Directory of C:\
05/07/2020 06:16 AM 5,510 License.txt
04/04/2022 02:57 PM <DIR> PerfLogs
04/04/2022 04:13 PM <DIR> Modified Name
04/04/2022 02:57 PM <DIR> Program Files (x86)
04/04/2022 04:17 PM <DIR> Users
04/04/2022 04:13 PM <DIR> Windows
1 File(s) 5,510 bytes
5 Dir(s) 21,188,288,512 bytes free
C:\>