تصعيد الامتياز في عميل Windows EA Origin (CVE-2019-19247 و CVE-2019-19248)

تحياتي لكل من قرر قراءة مقالتي الجديدة حول تحليل الثغرات الأمنية. آخر مرة ، في سلسلة قصيرة من ثلاث مقالات ، تحدثت عن نقاط ضعف Steam ( 1 و 2 و 3 ). سوف أتحدث في هذا المقال عن نقاط الضعف في منتج مماثل - الأصل ، والذي يعد أيضًا أداة إطلاق للألعاب. تم ترقيم مواطن الضعف المكتشفة CVE-2019-19247 و CVE-2019-19248.



هذه المرة لن تكون هناك لعبة مع الموز عنبان. مضى تاريخ الاتصال مع قسم الأمن في Electronic Arts Inc في البداية على المستوى المهني. عندما تم الاتصال بي ، أعطوني رقم تسجيل ، وتم فحص التقارير بعناية وتأكيدها. لم يتم تجاهل أي من رسائل البريد الإلكتروني الخاصة بي ، ولمناقشة بسيطة ، تم تنظيم confkall. كانت صيانة هذه التقارير بسيطة للغاية بالنسبة لي ، والتي أتوجه بالشكر الجزيل إلى Adrian Stone و Elise Murphy وغيرهم من موظفي EA الذين عملوا مع تقاريري. الأمن بلوق وظيفة والاستشارات .

الآن إلى نقاط الضعف. لقد وجدت اثنين من نقاط الضعف مثل "تصاعد الامتيازات" (lpe - تصعيد الامتياز المحلي أو eop - تصاعد الامتيازات) في عميل Windows Origin. يسمح هذا النوع من الثغرات لأي مستخدم Windows بالحصول على حقوق أكثر مما تم إصداره في الأصل من قبل المسؤول. في هذه الحالة ، نحن نتحدث عن تحسينين "نموذجيين" - من أي مستخدم إلى NT AUTHORITY \ SYSTEM (حساب له أذونات قصوى في نظام التشغيل). الثغرة الأولى مملة إلى حد ما ، لذلك في القسم التالي سأصفها بإيجاز. لكن الثاني كان مثيرا للاهتمام ، في قسمها سأخبرك بالضبط كيف بحثت عنها.

CVE-2019-19248


تتكون مشكلة عدم الحصانة هذه من جزأين:

  1. إنشاء مجلد على مسار عشوائي (مع حقوق الوصول الكامل) ؛
  2. استخدم جملة 1 للحصول على امتيازات NT AUTHORITY \ SYSTEM.

الآن عن النقطة الأولى بمزيد من التفاصيل:

إعداد البيئة


من الضروري إغلاق عميل Origin وإيقاف خدمة Origin Client (من الناحية النظرية ، ستتوقف الخدمة نفسها إذا أغلقت العميل ، لكن في حالة).

بالنسبة للمجلد "C: \ ProgramData \ Origin" ، تكون الحقوق هي "All-Full Access" ، مما يسمح لنا بحذف محتوياته بالكامل.

بناء وصلة


الآن إنشاء زوجين من الروابط. سيكون الرابط الأول من نوع نقطة إعادة توزيع NTFS (نقطة تحميل NTFS) - نوع الارتباطات التي تشير من مجلد إلى مجلد: "C: \ ProgramData \ Origin" <-> "التحكم في \ RPC". لإنشاء نقاط إعادة التوزيع لا تحتاج إلى حقوق المسؤول. من الضروري فقط أن يكون المجلد المصدر فارغًا وأن المستخدم لديه أذونات الكتابة إليه (تم محوه في الخطوة الأخيرة ، وتم التحقق من الحقوق هناك). "\ RPC Control" ليس مجلدًا في نظام الملفات ، ولكنه نوع خاص من المجلد - دليل كائن. لا يمكنك رؤيته باستخدام مستكشف عادي ، لكن يمكنك القيام بنقطة إعادة هناك ، على ما يبدو بسبب التجريدات الشائعة المستخدمة في أحشاء Windows.

الآن سنقوم بإنشاء الرابط الرمزي المعتاد "\ RPC Control \ CatalogCache" <-> "C: \ Path \ To \ Target \ Folder". في نظام الملفات ، يُحظر إنشاء روابط رمزية بدون حقوق المسؤول ، لكن هذه القاعدة لا تنطبق على أدلة الكائنات. لذلك ، سيتم إنشاء رابطنا بنجاح. نتيجة لمجموعة من هذين الارتباطين ، سيتم إعادة توجيه المكالمات إلى "C: \ ProgramData \ Origin \ CatalogCache" إلى "C: \ Path \ To \ Target \ Folder".

اقرأ المزيد عن هذه الروابط هنا . في نفس المستودع ، يمكنك تنزيل أدوات مساعدة للعمل مع الروابط.

إطلاق


في الخطوة الأخيرة ، قم بتشغيل العميل. في بداية عمله ، سيطلق "Origin Client Service" ، ويجد أنه لا يوجد مجلد "C: \ ProgramData \ Origin \ CatalogCache" ، سيحاول إنشاؤه. نتيجة للتنقل بين الروابط ، ستنشئ "C: \ Path \ To \ Target \ Folder" وتمنح هذا المجلد حقوق "All-Full Access".

ما هو المطلوب الحصول عليه في نقطة التشغيل الأولى. دعنا ننتقل إلى الثانية.

عملية إنشاء مجلد على مسار تعسفي


هنا يمكنك العمل بعدة طرق.

بسيطة وموثوقة إلى حد ما لإنشاء مجلد "C: \ ويندوز \ SYSTEM32 \ LogonUI.exe.local". "LogonUI.exe" (تطبيق يعمل من NT AUTHORITY \ SYSTEM ، مسؤول عن تشغيل شاشة اختيار المستخدم وشاشة القفل) بفضل آلية .local-redirection ("إعادة توجيه dotlocal") ، فإنه سيتم تحميل المكتبة منه على طول المسار "C: \ Windows \ system32 \ LogonUI.exe.local \ amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.648_none_fb45a0e93062a6d2 \ comctl32.dll. " بشكل عام ، الآلية نفسها شائعة جدًا ، لذلك يمكن أن يكون لها العديد من الأهداف.

هناك طريق طويل ولكنه مثير للاهتمام وهو طرح رمز كلمة مرور المسؤول من خلال عمليات الاحتيال الخاصة. مزيد من التفاصيل هنا .

في المجموع


يتم استغلال الثغرة الأمنية بسهولة تامة ، ما عليك سوى العمل قليلاً على النقطة الثانية - العثور على الهدف وكتابة دلل مناسب. بالإضافة إلى ذلك ، أبلغ مات نيلسون أيضًا عن هذه الثغرة الأمنية ، ويمكن العثور على كتاباته هنا .

CVE-2019-19247


هذه هي واحدة من نقاط الضعف المفضلة لدي. إنه يوضح مدى الدقة التي تحتاجها للاتصال بالتشفير المستخدم.

بدأ كل شيء بحقيقة أنني قمت بتثبيت اللعبة من خلال Origin. كل شيء سار بسلاسة كبيرة - بضع نقرات وبعد بضع دقائق من تنزيل اللعبة يمكن إطلاقها. ليس على الفور ، لكنني فهمت الأمر: تم تثبيت اللعبة على طول المسار "C: \ Program Files \ GameName" ، لكن لم أطرح سؤالًا واحدًا من خلال UAC. لقد راجعت الحقوق بسرعة ، كل شيء كان قياسيًا - لم يتمكن المستخدم العادي من الكتابة إلى "C: \ Program Files". اكتشفت المزيد من الأبحاث ووجدت أن اللعبة ليست "موصوفة" من قبل عميل Origin نفسه ، ولكن من خلال خدمة عملاء Origin.

بدأت في وضع افتراضات حول كيفية قيام العميل بنقل المعلومات إلى الخدمة للتحقق من إمكانية استغلال شيء ما.

تحولت طريقة نقل المعلومات إلى أن تكون بسيطة - أنبوب مسمى. لقد تعلمت ذلك من سجلات التثبيت - في النص العادي ، تمت الإشارة إلى أن أنبوب OriginClientService كان يقبل أوامر العمل مع الملفات والمجلدات.

افتتح المؤسسة الدولية للتنمية ، وتحميلها العميل هناك.

* العمل المنجز في المؤسسة الدولية للتنمية: 1 *

بسرعة كبيرة ، وجدت أنه تم إرسال الأوامر إلى توجيه الإخراج بشكل عام في شكل نص. في الجوار ، وجدت قائمة من الأوامر ، وبدون مزيد من اللغط ، قمت بإرسال أمر من النوع "نسخة" C: \ test \ payload.dll "" C: \ Windows \ pwn.dll "إلى الأنبوب. تحسباً لنتيجة سريعة ، أتحقق من المجلد "C: \ Windows" وأجد شيئًا جديدًا فيه. ولكن هناك شيء جديد في سجلات - بعض الكلمات حول حقيقة أن العميل في توجيه الإخراج لم يجتز التحقق من التوقيع الرقمي.

افتتح المؤسسة الدولية للتنمية ، وتحميل الخدمة هناك.

* العمل المنجز في المؤسسة الدولية للتنمية: 2 *

اكتشفت أن الفرق غير متوقعة من أي شخص. عند الاتصال بالأنبوب ، تتحقق الخدمة من المتصل به. يتم استخراج معرف العملية من الاتصال ، ويتم استخراج المسار إلى الملف القابل للتنفيذ من معرف المنتج ، ويتم التحقق من صحة التوقيع وأنه تم إصداره بواسطة EA.
يبدو الصوت الصوت ، ولكن ليس بما فيه الكفاية. يمكنك أن تأخذ "Origin.exe" القانونية (ملف قابل للتنفيذ من قبل العميل) ، وانسخه في مكان ما في مجلدك. ضع بعض dll من قائمة الاستيراد "Origin.exe" في هذا المجلد. على سبيل المثال ، جاء الإصدار.dll. دعوت هذا النهج "حقن dll العكسي": في حقن dll العادي ، قمنا بنسخ ملف dll إلى ملف exe ، لكن الآن قمنا بالعكس. أنا أكتب بسرعة وكيل دلل ل version.dll ، إضافة رمز مع إرسال الأمر إلى توجيه الإخراج. لم يتم نسخ الحمولة. نقرأ السجلات - "ماذا يعني ذلك ، الأمر لا يمكن فك تشفيره؟". لقد تخطيت التشفير.

افتتح المؤسسة الدولية للتنمية ، وتحميلها العميل هناك.

* الأعمال المنجزة في المؤسسة الدولية للتنمية: 3 ، تجاوز التوقيع: 1 *

بما أن العميل يرسل أوامر مشفرة في عمله المعتاد ، فعندئذ يمكنني ذلك. نظرت هناك ، ثم نظرت ، والنتيجة هي: تشفير AES ، تهيئة متجه ثابت ، قراءة المفتاح من الملف. نحن عمليا نسخ هذه القطعة و IDA في التعليمات البرمجية ، وتجميع ، والتحقق. مرة أخرى لا شيء. لكن السجلات توفر مرة أخرى معلومات مفيدة - لا يمكنك تحديد Program Files كمسار مستهدف.

افتتح المؤسسة الدولية للتنمية ، وتحميل الخدمة هناك.

* العمل المنجز في المؤسسة الدولية للتنمية: 4 ، وتجاوز التوقيع: 1 ، وتجاوز التشفير: 1 *

لذلك ، صحيح أن هناك اختبارات للتحقق من أمر اتضح أنه لا يمكن نسخ الملفات في كل مكان. والمسارات مع "\ .. \" لا يمكن كتابتها. نحن ننظر إلى ما الفرق الأخرى.
العمل مع السجل - هناك مرة أخرى الكثير من القيود. لكن تشغيل الملفات يبدو مثيرا للاهتمام. على الأقل الشيكات غير مرئية بشكل خاص. قم بتحرير الكود ، أرسل الأمر "ExecuteProcess" "C: \ test \ payload.exe". حسنا ، أنت تفهم ... لا شيء.

سجلات نتحدث مرة أخرى عن التوقيع. أوه ، لقد فزنا بالفعل. نشير في الكود إلى أننا أطلقنا على Origin.exe المنسوخة لتحميل dll الوكيل الخاص بنا مرة أخرى ، ولكن مع حقوق النظام. إضافة الشيكات وإطلاق وحدة التحكم. نبدأ ويظهر وحدة التحكم مع حقوق NT AUTHORITY \ SYSTEM - في نهاية المطاف كل شيء يعمل.

* العمل المنجز في المؤسسة الدولية للتنمية: 4 ، وتوقيع الالتفافية: 2 ، وتجاوز التشفير: 1 *

لذا ، فأنت بحاجة إلى إعادة تشغيل الكمبيوتر وإجراء التشغيل النهائي ولا يزال معجبًا بوحدة التحكم بأقصى حقوق. إعادة التشغيل ، تحقق و ... لا شيء. كيف ذلك؟ انها عملت فقط.

تُظهر التشخيصات أن خدمة Client Origin لم تبدأ ، لذلك أنا أبدأها. لكنها لا تبدأ. بتعبير أدق ، يبدأ ، لكنه يغلق على الفور. أبدأ عميل Origin وتبدأ الخدمة بشكل طبيعي. بعد ذلك ، استغلال يعمل بشكل صحيح مرة أخرى. قد يكون من الممكن التوقف عند هذا الحد ، لكن هذا ليس هو طريقي - أريد أن أجعل الاستغلال ينجح تمامًا.

افتتح المؤسسة الدولية للتنمية ، وتحميل الخدمة هناك.

* العمل المنجز في المؤسسة الدولية للتنمية: 5 ، توقيع الالتفافية: 2 ، تشفير الالتفافية: 1 *

اتضح أنه عند بدء التشغيل يتحقق من المعلمات التي بدأت الخدمة بها. لا يوجد شيء مثير للاهتمام مباشرة هناك. Base64 من معرف المنتج المشفر للعملية التي يتم التحقق من ملفها بواسطة التوقيع. يبدو الأمر معقدًا ، لكننا تجاوزنا التشفير بالفعل وتوقيعنا أيضًا. نكتب بعض الرموز والاستغلال الكامل جاهز.

في المجموع


استغلال يعمل. تم تنفيذ العمل في المؤسسة الدولية للتنمية: 5 مرات ، توقيع الالتفافية: 3 مرات ، تجاوز التشفير: 2 مرات.

استنتاج


نقاط الضعف الثابتة: قدم مطورو شركة EA طريقة تشغيل مقيدة خاصة للعميل ، والتي تضع قيودًا شديدة على العمل مع مجلدات وأنابيب Origin.

نقاط الضعف في الخط الزمني:

1 أبريل 2019 : الإبلاغ عن تقرير الضعف باستخدام توجيه الإخراج ؛

7 أبريل 2019 : إرسال تقرير الضعف مع مجلد التعسفي ؛

... رسائل كثيرة جدًا (أحصيت 40) ...

10 ديسمبر 2019 : الكشف المتفق عليه.

شكرا لكم جميعا على اهتمامكم ، أتمنى لكم نفس وكلاء الأمن.

هذا المقال باللغة الإنجليزية.

Source: https://habr.com/ru/post/ar479704/


All Articles