SGX Malvar: खलनायक गलत उद्देश्यों के लिए इंटेल की नई तकनीक का कैसे फायदा उठाते हैं

जैसा कि आप जानते हैं, एन्क्लेव में निष्पादित कोड गंभीरता से अपनी कार्यक्षमता में सीमित है। वह सिस्टम कॉल नहीं कर सकता। यह I / O ऑपरेशन नहीं कर सकता। वह होस्ट कोड सेगमेंट का आधार पता नहीं जानता है। यह होस्ट कोड को जम्प और कॉल नहीं कर सकता है। उसे पता स्थान की संरचना के बारे में कोई पता नहीं है जो मेजबान एप्लिकेशन को निर्देशित करता है (उदाहरण के लिए, कौन से पृष्ठों को बढ़ावा दिया जाता है या इन पृष्ठों पर किस तरह का डेटा रखा गया है)। वह ऑपरेटिंग सिस्टम को होस्ट एप्लिकेशन (उदाहरण के लिए, / proc / pid / मैप्स) के लिए मेमोरी का एक टुकड़ा जोड़ने के लिए नहीं कह सकता। मेजबान आवेदन के एक अंधे मनमाने ढंग से स्मृति क्षेत्र को पढ़ने के लिए Naive प्रयास - लिखने के प्रयासों का उल्लेख नहीं करने के लिए - जल्दी या बाद में (बल्कि पहले) एन्क्लेव कार्यक्रम के जबरन पूरा करने के लिए नेतृत्व करेंगे। यह तब होता है जब एन्क्लेव द्वारा अनुरोध किया गया वर्चुअल एड्रेस स्पेस क्षेत्र होस्ट एप्लिकेशन के लिए दुर्गम होता है।


ऐसी कठोर वास्तविकताओं के साथ, एक वायरस लेखक अपने दुर्भावनापूर्ण लक्ष्यों को महसूस करने के लिए एसजीएक्स एन्क्लेव का उपयोग कर सकता है?


- उन्हें पढ़ने की संभावना के लिए पते की जांच के लिए हैक
- लेखन क्षमता के लिए पते की जांच के लिए हैक
- नियंत्रण नियंत्रण पुनर्निर्देशित करने के लिए हैक
- क्या खलनायक ऊपर सूचीबद्ध तीन हैक्स देते हैं
- खलनायक कैसे इन हैक का इस्तेमाल रंजोमवारी बनाने में करता है



उपरोक्त सभी के आधार पर, यह आम तौर पर स्वीकार किया जाता है कि एन्क्लेव केवल होस्ट एप्लिकेशन की सेवा करने में सक्षम है, और एन्क्लेव दुर्भावनापूर्ण सहित अपनी स्वयं की पहल नहीं कर सकता है। इसका मतलब यह है कि एन्क्लेव वायरस लेखकों के लिए व्यावहारिक मूल्य का प्रतिनिधित्व नहीं करते हैं। यह जल्दबाजी धारणा एक कारण है कि एसजीएक्स सुरक्षा असममित क्यों है: होस्ट एप्लिकेशन कोड एन्क्लेव मेमोरी तक नहीं पहुंच सकता है, जबकि एन्क्लेव कोड होस्ट एप्लिकेशन के किसी भी मेमोरी पते को पढ़ और लिख सकता है।


इसलिए, यदि दुर्भावनापूर्ण एन्क्लेव कोड होस्ट एप्लिकेशन की ओर से मनमानी प्रणाली कॉल करने में सफल होता है, तो उसकी ओर से मनमाना कोड निष्पादित करना, होस्ट एप्लिकेशन की मेमोरी को स्कैन करना और उसमें दुरुपयोग के लिए उपयुक्त आरओपी श्रृंखलाओं का पता लगाना, यह पूर्ण नियंत्रण लेने में सक्षम होगा। चुपके मोड में मेजबान आवेदन। यह न केवल उपयोगकर्ता फ़ाइलों को चोरी और एन्क्रिप्ट कर सकता है, बल्कि उपयोगकर्ता की ओर से भी कार्य कर सकता है। उदाहरण के लिए, उसकी ओर से फ़िशिंग ईमेल भेजें या DoS हमलों का संचालन करें। एक ही समय में, आप सबसे आधुनिक सुरक्षात्मक तंत्र से भी नहीं डरते हैं, जैसे कि स्टैक कैनरी और पते का सैनिटाइजेशन।


हम कुछ हैक दिखाएंगे जिससे खलनायक अपने दुर्भावनापूर्ण उद्देश्यों के लिए SGX के लाभों का लाभ उठाने के प्रयास में ऊपर वर्णित सीमाओं को पार कर जाते हैं: ROP हमलों का संचालन करने के लिए। या तो एक मेजबान आरा प्रक्रिया के रूप में प्रच्छन्न मनमाने कोड को निष्पादित करने के लिए (प्रक्रिया को खोखला करने के समान है, जिसे अक्सर मैलवेयर द्वारा उपयोग किया जाता है), या पहले से तैयार किए गए मैलवेयर को मास्क करने के लिए (एंटीवायरस और अन्य सुरक्षात्मक तंत्र द्वारा उत्पीड़न से अपने मैलवेयर को बचाने के लिए)।



उन्हें पढ़ने की संभावना के लिए पते की जांच के लिए हैक करें


चूंकि एन्क्लेव को पता नहीं है कि मेजबान एप्लिकेशन के लिए वर्चुअल एड्रेस स्पेस की कौन सी रेंज उपलब्ध हैं, और क्योंकि जब आप एक दुर्गम पते को पढ़ने की कोशिश करते हैं, तो एन्क्लेव को जबरन समाप्त कर दिया जाता है, खलनायक को एड्रेस स्पेस की असफल-सुरक्षित स्कैनिंग का तरीका खोजने के कार्य के साथ सामना करना पड़ता है। उपलब्ध वर्चुअल पतों को मैप करने का तरीका खोजें। खलनायक इंटेल की TSX तकनीक का दुरुपयोग करके इस समस्या का हल करता है। यह TSX के साइड इफेक्ट्स में से एक का उपयोग करता है: यदि मेमोरी एक्सेस फ़ंक्शन को TSX लेनदेन में रखा जाता है, तो ऑपरेटिंग सिस्टम तक पहुंचने से पहले TSX द्वारा अमान्य पते तक पहुंचने से उत्पन्न अपवादों को दबा दिया जाता है। जब आप अमान्य मेमोरी पते तक पहुंचने का प्रयास करते हैं, तो केवल वर्तमान लेनदेन बाधित होता है, न कि संपूर्ण एन्क्लेव प्रोग्राम। इस प्रकार TSX एन्क्लेव को लेनदेन के भीतर से किसी भी पते पर सुरक्षित रूप से पहुंचने की अनुमति देता है - बिना पतन के जोखिम के।


यदि निर्दिष्ट पता होस्ट अनुप्रयोग के लिए उपलब्ध है , तो TSX लेनदेन सबसे अधिक बार सफल होता है। दुर्लभ मामलों में, यह बाहरी प्रभावों के कारण विफल हो सकता है, जैसे कि व्यवधान (उदाहरण के लिए, अनुसूचक रुकावट), कैश से बाहर भीड़, या एक साथ कई प्रक्रियाओं द्वारा मेमोरी सेल में परिवर्तन। इन दुर्लभ मामलों में, TSX एक त्रुटि कोड देता है जो दर्शाता है कि विफलता हुई अस्थायी है। इन मामलों में, आपको लेनदेन को पुनः आरंभ करने की आवश्यकता है।


यदि निर्दिष्ट पता होस्ट अनुप्रयोग के लिए उपलब्ध नहीं है , तो TSX अपवाद को दबा देता है (OS अधिसूचित नहीं है) और लेनदेन को रद्द कर देता है। एन्क्लेव कोड में एक त्रुटि कोड लौटाया जाता है ताकि यह इस तथ्य का जवाब दे सके कि लेनदेन रद्द कर दिया गया था। ये त्रुटि कोड इंगित करते हैं कि प्रश्न में पता होस्ट अनुप्रयोग के लिए उपलब्ध नहीं है।




एन्क्लेव के अंदर से TSX के इस तरह के हेरफेर में खलनायक के लिए एक अच्छी सुविधा है: एन्क्लेव कोड के निष्पादन के समय के बाद से अधिकांश हार्डवेयर प्रदर्शन काउंटर अपडेट नहीं किए जाते हैं, उनका उपयोग करके एन्क्लेव के अंदर किए गए TSX लेनदेन को ट्रैक करना असंभव है। इस प्रकार, TSX'om के साथ दुर्भावनापूर्ण धोखाधड़ी ऑपरेटिंग सिस्टम के लिए पूरी तरह से अदृश्य रहती है।


इसके अलावा, चूंकि ऊपर वर्णित हैक किसी भी सिस्टम कॉल पर भरोसा नहीं करता है, इसे केवल सिस्टम कॉल को अवरुद्ध करके पता नहीं लगाया जा सकता है या रोका नहीं जा सकता है; जो आमतौर पर "अंडा शिकार" के खिलाफ लड़ाई में एक सकारात्मक परिणाम देता है।


खलनायक होस्ट एप्लिकेशन कोड में गैजेट की खोज के लिए ऊपर वर्णित हैक का उपयोग करता है जो आरओपी श्रृंखला बनाने के लिए उपयुक्त हैं। हालांकि, उसे प्रत्येक पते की जांच करने की आवश्यकता नहीं है। यह वर्चुअल एड्रेस स्पेस के प्रत्येक पेज से एक पते की जांच करने के लिए पर्याप्त है। मेमोरी के सभी 16 गीगाबाइट्स की जांच में लगभग 45 मिनट लगते हैं (इंटेल i7-6700K पर)। नतीजतन, खलनायक को निष्पादन योग्य पृष्ठों की एक सूची मिलती है जो आरओपी श्रृंखला के निर्माण के लिए उपयुक्त हैं।



लिखितता के लिए पते की जांच के लिए हैक


आरओपी हमले के एक एन्क्लेव संस्करण को लागू करने के लिए, खलनायक को मेजबान एप्लिकेशन की मेमोरी के बेकार अप्रयुक्त भागों की खोज करने की क्षमता की आवश्यकता होती है। खलनायक एक नकली स्टैक फ्रेम को इंजेक्ट करने और पेलोड (शेलकोड) को इंजेक्ट करने के लिए मेमोरी के इन वर्गों का उपयोग करता है। लब्बोलुआब यह है कि एक दुर्भावनापूर्ण एन्क्लेव को होस्ट एप्लिकेशन को स्वयं के लिए मेमोरी आवंटित करने की आवश्यकता नहीं है, लेकिन इसके बजाय यह अन्य प्रयोजनों के लिए उपयोग कर सकता है होस्ट मेमोरी द्वारा आवंटित मेमोरी। जब तक कि वह एन्क्लेव को ढहाए बिना ऐसी साइटों को खोजने का प्रबंधन नहीं करता।


खलनायक TSX के एक और दुष्प्रभाव का फायदा उठाकर इस खोज को अंजाम देता है। पहले, वह, जैसा कि पिछले मामले में है, अपने अस्तित्व के लिए पते की जांच करता है, और फिर जाँचता है कि क्या इस पते के अनुरूप पृष्ठ लिखने के लिए सुलभ है। ऐसा करने के लिए, खलनायक निम्नलिखित हैक का उपयोग करता है: TSX लेनदेन में लिखने का कार्य करता है, और इसके पूरा होने के बाद, लेकिन इससे पहले कि यह पूरा हो जाए, यह जबरन लेनदेन (स्पष्ट गर्भपात) को तोड़ देता है।


TSX लेन-देन से वापसी कोड को देखते हुए, खलनायक को पता चलता है कि क्या यह उपयुक्त है। यदि यह "स्पष्ट गर्भपात" है, तो खलनायक को पता चलता है कि रिकॉर्डिंग सफल होगी यदि वह इसे अंत तक लाया। यदि पृष्ठ केवल पढ़ने के लिए है, तो लेनदेन "स्पष्ट गर्भपात" के अलावा एक त्रुटि के साथ विफल हो जाता है।



TSX के इस तरह के हेरफेर में एक और विशेषता है जो खलनायक के लिए सुखद है (हार्डवेयर प्रदर्शन काउंटरों के माध्यम से ट्रैक करने में असमर्थता के अलावा): चूंकि सभी मेमोरी कमांड केवल रिकॉर्ड किए जाते हैं यदि लेनदेन सफल रहा था, तो लेनदेन को पूरा करने के लिए मजबूर करना सुनिश्चित करता है कि प्रोबेड मेमोरी सेल अपरिवर्तित रहता है।



नियंत्रण प्रवाह पुनर्निर्देशित हैक


एन्कोलेव से एक आरओपी हमले को अंजाम देते समय - पारंपरिक आरओपी हमलों के विपरीत - खलनायक हमले कार्यक्रम में किसी भी कीड़े का शोषण किए बिना आरआईपी रजिस्टर का नियंत्रण हासिल कर सकता है (बफर अतिप्रवाह या ऐसा कुछ)। खलनायक स्टैक पर संग्रहीत आरआईपी रजिस्टर के मूल्य को सीधे अधिलेखित कर सकता है। विशेष रूप से, यह इस रजिस्टर के मूल्य को अपनी ROP श्रृंखला के साथ बदल सकता है।


हालांकि, यदि आरओपी श्रृंखला लंबी है, तो मेजबान एप्लिकेशन स्टैक के एक बड़े टुकड़े को अधिलेखित करने से डेटा भ्रष्टाचार और अप्रत्याशित प्रोग्राम व्यवहार हो सकता है। एक खलनायक जो चुपके से अपने हमले का संचालन करना चाहता है, यह राज्य की स्थिति के अनुरूप नहीं है। इसलिए, वह अपने लिए एक नकली अस्थायी स्टैक फ्रेम बनाता है और उसमें अपनी आरओपी श्रृंखला संग्रहीत करता है। एक नकली स्टैक फ्रेम एक अनियंत्रित मेमोरी लोकेशन में रखा जाता है जो कि लिखने योग्य है - ताकि सही स्टैक अछूता रहे।




क्या खलनायक ऊपर सूचीबद्ध तीन हैक्स देते हैं


(1) सबसे पहले, एक दुर्भावनापूर्ण एन्क्लेव, एक हैक के माध्यम से उन्हें पढ़ने की संभावना के लिए पतों की जांच करने के लिए, आरओपी गैजेट के लिए होस्ट एप्लिकेशन की खोज करता है जिसे दुरुपयोग किया जा सकता है।



(2) फिर, हैकिंग का उपयोग करके लेखन के लिए पतों की जांच के लिए , दुर्भावनापूर्ण एन्क्लेव होस्ट एप्लिकेशन मेमोरी क्षेत्रों में पहचान करता है जो पेलोड को इंजेक्ट करने के लिए उपयुक्त है।



(3) अगला, एन्क्लेव स्टेप (1) में पाए गए गैजेट्स से एक ROP चेन बनाता है और उस चेन को होस्ट एप्लिकेशन स्टैक में इंजेक्ट करता है।



(4) अंत में, जब होस्ट एप्लिकेशन पिछले चरण में बनाई गई आरओपी श्रृंखला का सामना करता है, तो दुर्भावनापूर्ण पेलोड निष्पादित करना शुरू कर देता है, मेजबान एप्लिकेशन के विशेषाधिकारों और सिस्टम कॉल करने की क्षमता के साथ।



रैनज़ोमवारी बनाने के लिए खलनायक इन हैक का उपयोग कैसे करता है


होस्ट एप्लिकेशन के बाद किसी भी ECALLs के माध्यम से एन्क्लेव पर नियंत्रण स्थानांतरित कर देता है (इस संदेह के बिना कि यह एन्क्लेव दुर्भावनापूर्ण है), दुर्भावनापूर्ण एन्क्लेव कोड इंजेक्शन के लिए होस्ट एप्लिकेशन की मेमोरी में मुक्त स्थान की तलाश करता है (उन स्थानों के लिए जो कोशिकाओं के उन अनुक्रमों को लेता है जो शून्य से भरा)। फिर, उन्हें पढ़ने की संभावना के लिए पतों की जांच के लिए एक हैक का उपयोग करते हुए , एन्क्लेव होस्ट एप्लिकेशन में निष्पादन योग्य पृष्ठों की खोज करता है और एक आरओपी श्रृंखला बनाता है जो वर्तमान निर्देशिका में "RANSOM" नाम के साथ एक नई फ़ाइल बनाता है (एक वास्तविक हमले में, एन्क्लेव मौजूदा उपयोगकर्ता फ़ाइलों को एन्क्रिप्ट करता है) और एक फिरौती अनुरोध संदेश प्रदर्शित करता है। उसी समय, मेजबान एप्लिकेशन भोलेपन से मानता है कि एन्क्लेव बस दो नंबर जोड़ता है। यह कोड में कैसे दिखता है?


धारणा में आसानी के लिए, हम परिभाषित के माध्यम से कुछ mnemonics परिचय:



हम आरएसपी और आरबीपी रजिस्टरों के प्रारंभिक मूल्यों को संरक्षित करते हैं ताकि पेलोड प्रदर्शन करने के बाद मेजबान एप्लिकेशन के सामान्य संचालन को बहाल किया जा सके:



हम एक उपयुक्त स्टैक फ्रेम की तलाश कर रहे हैं (कोड को "रीडायरेक्टिंग कंट्रोल फ़्लो के लिए हैक करें" सेक्शन में देखें)।


उपयुक्त ROP गैजेट ढूंढें:



पेलोड इंजेक्ट करने के लिए एक जगह खोजें:



ROP श्रृंखला बनाना:



यह कैसे इंटेल की SGX तकनीक है, जिसे दुर्भावनापूर्ण कार्यक्रमों का सामना करने के लिए डिज़ाइन किया गया है, विपक्षी लक्ष्यों को पूरा करने के लिए खलनायक द्वारा शोषण किया जाता है।

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


All Articles