
Windows-Named-Pipes-Kommunikation mithilfe von Burp oder ähnlichen HTTP-Proxy-Tools abfangen
Named Pipes sind für die Interprozesskommunikation unter Windows sehr verbreitet. Sie werden in vielen Anwendungen eingesetzt, einschließlich des Windows Remote Procedure Call (RPC). Der Zweck dieses Tools ist es, Sicherheitsforschern und Pentestern die Sicherheitsbewertung von Anwendungen zu ermöglichen, die Named Pipes verwenden.
Dieses Projekt ist von dem großartigen MITM_Intercept-Projekt von CyberArk Labs inspiriert.
Das Tool erstellt einen Pipe-Client/Server-Proxy mit einer WebSocket-Client/Server-Brücke. Der WebSocket-Client verbindet sich über einen HTTP-Proxy wie Burp mit dem WebSocket-Server.
Wichtiger Hinweis: Dieses Tool verwendet die win32-API, um die Named Pipes zu erstellen, funktioniert also nur unter Windows. Derzeit muss es auf demselben Rechner wie der Ziel-Pipe-Server und der HTTP-Proxy ausgeführt werden. Ich werde möglicherweise eine Option hinzufügen, um einen Remote-Proxy zu verwenden, sowie eine Option, um an einen entfernten Pipe-Server weiterzuleiten, aber das Tool muss trotzdem unter Windows ausgeführt werden.
Flussdiagramm:

Es ist wichtig zu verstehen, dass dieses Tool separate Pipe-Server-Instanzen erstellt, getrennt von den Instanzen, die von der Ziel-Serveranwendung erstellt wurden, wodurch die Ziel-Client-Anwendung eine Verbindung zu diesen Proxy-Instanzen herstellt. Das bedeutet einiges:
Wie Sie aus den obigen Punkten ersehen können, kann die Verwendung dieses Tools das Verhalten der Zielanwendung verändern. Bitte denken Sie daran, dass dieses Tool in erster Linie für Sicherheitstests gedacht ist. Verwenden Sie es nicht in Produktionssystemen.
Das Tool wurde mit Python 3.13.7 getestet. Einrichtung:
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)
Aus dem Stammverzeichnis (pipe-intercept):
pytest
Docker unter Windows verwendet eine Named Pipe für die Kommunikation zwischen dem Client und dem Docker-Dienst. Der Name der Pipe lautet "\\.\pipe\docker_engine". Sehen wir uns an, wie wir diese Kommunikation abfangen können. Wir beginnen mit dem Start des Tools:
C:\pipe-intercept>python pipe_intercept.py --pipe-name docker_engine
INFO:websockets.server:server listening on 127.0.0.1:12037
Jetzt können wir Burp starten und in einer anderen Shell einen Windows-Container erstellen:
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:\>
Nun, wenn wir den WebSocket-Tab in Burp öffnen, können wir die Kommunikation sehen:

Wir können auch die Abfangfunktion aktivieren und die Nachricht ändern:

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:\>