
اعتراض اتصالات Windows Named Pipes باستخدام Burp أو أدوات بروكسي HTTP مشابهة
تُعد الأنابيب المسماة (Named Pipes) وسيلة شائعة جدًا للاتصال بين العمليات على ويندوز. وهي مستخدمة في تطبيقات عديدة، بما في ذلك استدعاء الإجراءات عن بُعد في ويندوز (RPC). الغرض من هذه الأداة هو تمكين الباحثين الأمنيين ومختبري الاختراق من إجراء تقييم أمني للتطبيقات التي تستخدم الأنابيب المسماة. هذا المشروع مستوحى من مشروع MITM_Intercept الرائع من مختبرات CyberArk.
تقوم الأداة بإنشاء بروكسي عميل/خادم للأنابيب مع جسر WebSocket بين خادم وعميل. يتصل عميل WebSocket بخادم WebSocket عبر بروكسي HTTP مثل Burp.
ملاحظة مهمة: تستخدم هذه الأداة واجهة برمجة تطبيقات ويندوز (win32 api) لإنشاء الأنابيب المسماة، لذا فهي تعمل فقط على ويندوز. حالياً تحتاج إلى التشغيل على نفس الجهاز الذي يعمل عليه خادم الأنبوب الهدف وبروكسي HTTP. قد أضيف خياراً لاستخدام بروكسي بعيد، وخياراً للتوصيل إلى خادم أنبوب بعيد، لكن الأداة ستظل بحاجة إلى العمل على ويندوز.
مخطط التدفق:

من المهم أن نفهم أن هذه الأداة تعمل عن طريق إنشاء مثيلات خادم أنبوب منفصلة، بعيداً عن المثيلات التي ينشئها تطبيق الخادم الهدف، مما يجعل تطبيق العميل الهدف يتصل بمثيلات البروكسي هذه. هذا يعني عدة أمور:
كما ترى من النقاط أعلاه، قد يؤدي استخدام هذه الأداة إلى تغيير سلوك التطبيق الهدف. يرجى تذكر أن هذه الأداة مخصصة في المقام الأول للاختبار الأمني، ولا تستخدمها في الأنظمة الإنتاجية.
تم اختبار الأداة مع إصدار بايثون 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 على ويندوز أنبوباً مسمىً للتواصل بين العميل وخدمة 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، ومن قشرة أخرى إنشاء حاوية ويندوز:
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:\>