
Перехват взаимодействия Windows Named Pipes с помощью Burp или аналогичных HTTP-прокси-инструментов.
Именованные каналы (Named Pipes) очень популярны для межпроцессного взаимодействия в Windows. Они используются во многих приложениях, включая Windows Remote Procedure Call (RPC). Цель этого инструмента — позволить исследователям безопасности и пентестерам проводить оценку безопасности приложений, использующих именованные каналы. Этот проект вдохновлён замечательным проектом MITM_Intercept от CyberArk Labs.
Инструмент создаёт прокси клиент/сервер канала с мостом WebSocket клиент/сервер. WebSocket-клиент подключается к WebSocket-серверу через HTTP-прокси, например Burp.
Важное примечание: Этот инструмент использует 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
Docker в Windows использует именованный канал для взаимодействия между клиентом и службой 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:\>
Теперь, если мы откроем вкладку WebSocket в Burp, мы увидим взаимодействие:

Мы также можем включить перехват и изменить сообщение:

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