
Symantec Endpoint Protection के क्लाइंट यूज़र इंटरफ़ेस पासवर्ड के लिए बायपास
Symantec Endpoint Protection 14.3.5351 क्लाइंट यूजर इंटरफ़ेस पासवर्ड के लिए प्रमाणीकरण बायपास
Symantec Endpoint Protection अपने UI पर पासवर्ड सुरक्षा सेट करने की अनुमति देता है ताकि कॉन्फ़िगरेशन परिवर्तनों को रोका जा सके। यह पासवर्ड जांच तर्क द्वारा कार्यान्वित की जाती है जो न तो Protected Process Light (PPL) में है और न ही कर्नेल ड्राइवर में; मेमोरी में रिटर्न वैल्यू बदलने या बाइनरी को पैच करने से हमलावर पासवर्ड को बायपास कर सकता है। यह तब भी काम करता है जब टैम्पर प्रोटेक्शन सक्षम हो।
यदि हमलावर व्यवस्थापक विशेषाधिकारों के साथ कोड निष्पादित कर सकता है, तो वे केंद्रीय SEP प्रबंधन के लिए दुर्भावनापूर्ण नीति XML और/या कनेक्शन सेटिंग्स आयात कर सकते हैं। इसके साथ वे व्यावहारिक रूप से क्लाइंट पर पूर्ण नियंत्रण प्राप्त कर लेते हैं। नीति आयात का उपयोग करके, वे बहिष्करण जोड़ सकते हैं, UI विकल्प अनलॉक कर सकते हैं, व्यवस्थापक पासवर्ड अक्षम या बदल सकते हैं, सुरक्षा को स्थायी रूप से अक्षम कर सकते हैं, और/या क्लाइंट को अनइंस्टॉल कर सकते हैं।
यदि हमलावर के पास व्यवस्थापक विशेषाधिकार नहीं हैं, तो इसका उपयोग समस्या निवारण जानकारी निर्यात करने, लॉग पढ़ने और क्लाइंट सेटिंग्स देखने के लिए किया जा सकता है। 14.0 पर नीति निर्यात की जा सकती है और व्यवस्थापक अनुमतियों के बिना टैम्पर प्रोटेक्शन को अक्षम किया जा सकता है। 14.3.5413.3000 में यह संभव नहीं था।
14.3.5351 में निम्नलिखित जाँच करता है कि पासवर्ड मेल खाता है या नहीं:
.text:00438021 loc_438021: ; CODE XREF: sub_437FA0+73↑j
.text:00438021 mov ecx, offset ServiceName ; "SepMasterService"
.text:00438026 call sub_43DDF0
.text:0043802B test eax, eax
.text:0043802D jnz short loc_4380A5
.text:0043802F push ecx ; Src
.text:00438030 lea eax, [ebp+var_14]
.text:00438033 mov ecx, esp
.text:00438035 push eax
.text:00438036 call ds:??0?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@ABV01@@Z ; ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>> const &)
.text:0043803C call sub_4380F0
.text:00438041 test al, al
.text:00438043 jz short loc_43804F
.text:00438045 mov ecx, esi
.text:00438047 call ds:__imp_?OnOK@CDialog@@MAEXXZ ; CDialog::OnOK(void)
.text:0043804D jmp short loc_4380AD
जो जंप SymCorpUI.exe में सभी पासवर्ड प्रयासों की सफलता को नियंत्रित करता प्रतीत होता है, वह .text:00438043 पर दिखाया गया JZ निर्देश है। इसे JNZ (निर्देश 0x74 -> 0x75) में बदलने से जंप उलट जाता है, जिससे कोई भी मनमाना पासवर्ड स्वीकार किया जा सकता है।
Python स्क्रिप्ट SEP के लिए इंस्टॉल फ़ोल्डर ढूँढती है, SymCorpUI.exe को पढ़ती है, स्क्रिप्ट के बगल में फ़ोल्डर में एक पैच की गई कॉपी लिखती है, और मूल कार्यशील निर्देशिका में पैच किए गए संस्करण को चलाती है। इसे विशेषाधिकारों के साथ चलाएं, और यह एक SEP UI स्पॉन करेगा जो दर्ज किए गए किसी भी गलत पासवर्ड को स्वीकार करेगा।
अब एक हमलावर Help -> Troubleshooting के अंतर्गत नीति XML निर्यात कर सकता है। इसमें कॉन्फ़िगरेशन शामिल होगा जिसमें व्यवस्थापक पासवर्ड के लिए कोई भी हैश शामिल होगा। हमलावर तब XML को संपादित करके क्लाइंट में किसी भी सेटिंग को बदल सकता है, उदाहरण के लिए पासवर्ड हैश को बदलना या पासवर्ड की आवश्यकता को अक्षम करना। इस दुर्भावनापूर्ण नीति XML को Export के आगे वाले बटन का उपयोग करके फिर से आयात किया जा सकता है।
स्क्रिप्ट यह जाँचने के लिए कुछ जाँच करती है कि क्या वह एलिवेटेड है, यदि नहीं तो वह पैच की गई बाइनरी को व्यवस्थापक विशेषाधिकारों के बिना चलाने के लिए बाध्य करती है। UI को व्यवस्थापक के रूप में चलाने के लिए, Python स्क्रिप्ट को व्यवस्थापक के रूप में चलाएँ या as_admin वेरिएबल को True पर हार्डकोड करें।
प्रत्येक बिल्ड के लिए विशिष्ट ऑफ़सेट संग्रहीत करने से बचने के लिए, स्क्रिप्ट निर्देशों के एक अनुक्रम के लिए एक सामान्य खोज/प्रतिस्थापन करती है जो मैंने तीन संस्करणों में अद्वितीय पाया जिनका मैंने परीक्षण किया। यह संभव है कि किसी भिन्न संस्करण में कई मैच हों जो PoC को तोड़ सकते हैं। इस मामले में, mov ecx, offset ServiceName ; "SepMasterService" से शुरू होने वाले ब्लॉक को खोजने के लिए मैचों के माध्यम से देखें ताकि नीचे के पास प्रासंगिक JZ निर्देश को पैच किया जा सके।
पासवर्ड कार्यक्षमता के परीक्षण के लिए, सुरक्षा सक्षम करने के लिए नीति XML में निम्नलिखित जोड़ा जा सकता है (GlobalGroups के समान स्तर पर)। हैश स्ट्रिंग "test" का MD5 है।
<AdminPassword ExitNeedPassword="1" UINeedPassword="1" ImportExportNeedPassword="1" UninstallNeedPassword="1">098f6bcd4621d373cade4e832627b4f6</AdminPassword>
Symantec ने मुद्दे पर तुरंत प्रतिक्रिया दी, CVE उनके द्वारा पंजीकृत किया गया था और 14.3 RU6 के रूप में एक फिक्स प्रकाशित किया गया था।
https://support.broadcom.com/external/content/SecurityAdvisories/0/21014