المقدمة
على خلفية وباء فيروس كورونا ، زادت شعبية الخدمات السحابية ، مما يتيح لك ممارسة ألعاب الفيديو. توفر هذه الخدمات قوة الحوسبة اللازمة لتشغيل الألعاب وبث اللعب إلى أجهزة المستخدمين في الوقت الفعلي. الميزة الأكثر وضوحًا لمثل هذا النظام هي أن اللاعبين لا يحتاجون إلى أجهزة قوية. لبدء عميل الخدمة وتمضية الوقت للعزل الذاتي ، ستكون آلة الميزانية كافية: تتم جميع الحسابات على خادم بعيد.
واحدة من هذه المنصات السحابية هي GeForce NOW من NVIDIA. وفقًا لـ Google Trends ، بلغت عمليات البحث في جميع أنحاء العالم عن هذه الخدمة ذروتها في فبراير. يرتبط هذا ببداية القيود في العديد من البلدان في آسيا وأوروبا وأمريكا الشمالية والجنوبية ومناطق أخرى. في الوقت نفسه ، بالنسبة لروسيا ، حيث بدأ نظام العزلة الذاتية لاحقًا ، في مارس ، نرى صورة مماثلة ، ولكن مع تأخير مماثل.
نظرًا للاهتمام الكبير بـ GeForce NOW ، قررنا النظر في هذه المنصة من منظور أمني.
استكشاف المنصة
في وقت بحثنا ، كان GeForce NOW متاحًا في نسختين - مجانًا وباشتراك. الفرق بينهما هو أنه عند استخدام الخدمة مجانًا ، عليك الانتظار حتى تتوفر بيئة افتراضية مجانية. في حالة الخيار المدفوع ، يبدأ الجهاز الظاهري بأولوية أعلى ، ولا يحتاج اللاعب عادةً إلى الانتظار. من حيث الأمان ، كلا الإصدارين من الخدمة متماثلان. في حالة حدوث أي انتهاك لقواعد استخدام النظام الأساسي ، يتم إيقاف تشغيل وقت التشغيل السحابي على الفور ، وقد يتم حظر حساب اللاعب المخالف.
تحتوي القائمة على قائمة الألعاب التي تدعمها الخدمة. للعب ، تحتاج إلى حساب من أحد متاجر المحتوى الرقمي التي ترتبط بها هذه اللعبة أو تلك بالفعل (إذا تم دفعها ، فأنت بحاجة إلى شرائها مقدمًا). في هذه الدراسة ، نبحث في حزمة GeForce NOW ومتجر Steam.
عند النقر فوق الزر "تشغيل" في نافذة التطبيق الرئيسية ، يتم تشغيل بيئة افتراضية عن بُعد وتدفق في الوقت الفعلي من جانب الخادم إلى جهاز المستخدم.
إذا تم بالفعل شراء اللعبة المحددة ، فسيتم تشغيلها في وضع ملء الشاشة ويجب ألا تكون الميزات الأخرى للبيئة الافتراضية متاحة للمستخدم. ومع ذلك ، إذا سمحت لك إعدادات اللعبة بتحديد وضع التشغيل في الإطارات ، فحينئذٍ لدينا فرصة للوصول إلى مكتبة Steam. هناك طريقة أخرى للدخول إليها وهي اختيار لعبة ليست موجودة في المكتبة بعد.
من الواضح بالفعل أنه يمكننا تنفيذ تعليمات برمجية عشوائية إذا استغلنا ثغرة أمنية في لعبة تدعمها الخدمة. القيد الوحيد هو أن الاستغلال يجب أن يتم تسليمه عبر الشبكة. سيناريوهات مختلفة ممكنة هنا. على سبيل المثال ، إذا قام أحد الثغرات بإنشاء ملف تنفيذي على القرص ، يمكن للخدمة نظريًا منع تنفيذ الحمولة من خلال تتبع إنشاء الملف القابل للتنفيذ كمستخدم kiosk (هذا مستخدم قياسي في الأجهزة الافتراضية لخدمة GeForce NOW). من ناحية أخرى ، إذا تم تنفيذ كود القشرة نتيجة استغلال ثغرة أمنية ، فلن تتمكن الخدمة من الدفاع عن نفسها.
لإجراء استكشاف كامل لبيئة بيئة الجهاز الظاهري ، لا نحتاج إلى الوصول إلى cmd.exe أو powershell.exe. لكن كيف تحصل عليه؟ بعد التجول قليلاً في قائمة مكتبة Steam ، نجد طريقة تسمح لك بتشغيل ملف exe قابل للتنفيذ تعسفي متاح بالفعل في النظام. للقيام بذلك ، سوف نستخدم وظيفة "إضافة لعبة طرف ثالث ...".
عادةً ، لن تكون إضافة cmd.exe إلى المكتبة كلعبة تابعة لجهة خارجية مشكلة. ومع ذلك ، يتم تعطيل هذه الميزة في GeForce NOW ، والنقر فوق الزر تصفح في لقطة الشاشة أدناه لا يفعل شيئًا. ومع ذلك ، يمكنك اختيار أحد التطبيقات الموجودة (وفي نفس الوقت معرفة البرامج المثبتة في أحشاء الجهاز الظاهري). على سبيل المثال ، دعنا نختار أرشيفي 7-Zip (البرامج الأخرى رائعة أيضًا).
بعد إضافة 7-Zip إلى مكتبة Steam ، يمكن تغيير معلمات البرنامج. هنا نصلح المسار إلى ملف cmd.exe الذي نحتاجه. منجز! أطلقنا "لعبتنا" الخاصة بطرف ثالث
وحصلنا على إطار عمل: الآن يمكننا أن ننظر حولنا ونكتشف أين نحن على الإطلاق. Launch winver:
كما اتضح فيما بعد ، يتم تشغيل الجهاز الظاهري للخدمة على Windows Server 2019.
ونتيجة لذلك ، يمكننا بالفعل القيام بما لم يتم توفيره افتراضيًا لأجهزة GeForce NOW الافتراضية. لكن ماذا يمكننا أن نفعل أيضًا ، وما مدى خطورة ذلك؟
وفقًا للأسئلة الشائعة في صفحة NVIDIA Vulnerability Reporting ، فإن الوصول إلى cmd.exe في GeForce NOW Service VM ليس ثغرة أمنية. هذا يرجع إلى حقيقة أن المستخدم في البيئة الافتراضية لديه الحد الأدنى من الحقوق ، وهناك أيضًا تصفية للتطبيقات التي تم إطلاقها. لذلك ، على سبيل المثال ، بعد بدء powerhell.exe ، سيتوقف وقت التشغيل على الفور.
وبالتالي ، لكي يتم أخذ بحثنا على محمل الجد ، نحتاج إلى حل مشكلتين:
1) تسليم الحمولة إلى الجهاز الظاهري ، و
2) إطلاقه من خلال تجاوز القائمة البيضاء للتطبيق.
في عملية حل المشكلة الأولى ، جربنا LOLBINs الشائعة للتنزيل ، مثل regsvr32 و bitsadmin وما إلى ذلك. في جميع الحالات ، تعطل الجهاز الظاهري:
لكن القرار جاء من تلقاء نفسه. GeForce NOW هي خدمة للألعاب (بما في ذلك اللاعبين المتعددين) حيث يمكن لعميل اللعبة الاتصال بخادم اللعبة وتنزيل الأصوات والنماذج والخرائط والملفات الأخرى من هناك. لذلك ، نحتاج إلى اختيار لعبة ستسلم ملفًا عشوائيًا إلى العميل. في الوقت نفسه ، لا داعي للقلق بشأن امتداد الملف ، حيث يمكننا الوصول إلى shell ، ويمكننا نقل الملف الذي تم تنزيله إلى حيث يمكننا استخدامه.
ولكن ماذا عن القائمة البيضاء للتطبيق؟ بعد كل شيء ، حتى لو تمكنا من وضع تطبيق تابع لجهة خارجية في جهاز افتراضي ، فسوف يتعطل عند بدء تشغيله. أحد الحلول لهذه المشكلة هو العثور على تطبيق من القائمة الموثوقة ، حيث يمكننا تنفيذ اختطاف dll. الهدف الأكثر وضوحًا هو طريقة اللعب.
لذلك ، دعنا نحاول تنفيذ هذه الفكرة باستخدام مثال Counter-Strike: Source (فيما يلي سنختصرها كـ CS: S). أول شيء نقوم به هو إنشاء خادم CS: S الخاص بنا ، والذي سيقدم ملف dll تحت ستار ، على سبيل المثال ، نموذج (d.mdl). بعد ذلك ، نقوم بتشغيل GeForce NOW لتشغيل CS: S والانتقال إلى الخادم الخاص بنا ، والذي يتم من خلاله تحميل ملف "نموذج" مُعد مسبقًا على الجهاز الظاهري. الآن نقوم بتصغير اللعبة وتشغيل cmd.exe. انقل ملف d.mdl إلى "Counter-Strike Source / bin / user32.dll" وأعد تشغيل اللعبة باستخدام أمر وحدة التحكم. النجاح: قمنا بتشغيل تعليمات برمجية عشوائية في سياق عملية موثوقة.
وحتى أنهم سجلوا مقطع فيديو:
خاتمة
على الرغم من حقيقة أن الهجمات على مستخدمي الخدمة محتملة ، إلا أنها لا تزال غير مرجحة. بالإضافة إلى ذلك ، ستكون المخاطر التي يتعرض لها المستخدمون الآخرون للخدمة ضئيلة. الحقيقة هي أنه لكل جلسة لعب جديدة ، يتم إطلاق بيئة افتراضية نظيفة في GeForce NOW. بعد انتهاء اللاعب من الجلسة ، يتم إيقاف تشغيل الجهاز الظاهري و "إعادة تعيينه". لذلك ، حتى إذا تم استغلال الثغرة الأمنية بنجاح ، فلن تتمكن الشفرة الخبيثة من العمل إلا طالما أن الجهاز الظاهري المخترق قيد التشغيل. ومن أجل مهاجمة المستخدمين الآخرين ، سيحتاج المهاجمون إلى الخروج من البيئة الافتراضية باستخدام ثغرة مثل الهروب من الجهاز الظاهري. هذه الثغرات نادرة ويصعب تنفيذها. ولكن إذا نجحت ، فلن يكون المستخدمون الأفراد فقط هم المعرضون للخطر ، ولكن الجميعالذي أطلق جلسة ألعاب بعد التسوية الأولية للخدمة من خلال أحد أجهزة GeForce NOW الافتراضية.
ومع ذلك ، فإن سيناريو الهجوم الأبسط والأكثر واقعية هو استخدام آلة افتراضية مخترقة لتعدين العملات المشفرة ، وتنفيذ هجمات DDoS ، وتنفيذ أنشطة غير قانونية أخرى تتطلب قوة حاسوبية.
بعد اتصالنا ، أكدت NVIDIA المشكلة وأصدرت إصلاحًا لخدمتهم.
التسلسل الزمني للأحداث:
18.04.2020 — NVIDIA
20.04.2020 — NVIDIA PSIRT
13.05.2020 — NVIDIA PSIRT ,
21.08.2020 — NVIDIA PSIRT , 30.08
02.09.2020 —
03.09.2020 — NVIDIA
04.09.2020 — NVIDIA
07.09.2020 — .