यह रिपोर्ट कालिम बैकडोर मैलवेयर की कार्यक्षमता के बारे में बात करेगी।
विषय सूची:
- बैकडोर क्या है?
- तकनीकी विश्लेषण।
- सारांश।
- रणनीति और तकनीक (MITRE ATT&CK)।
- IOCs।
- यारा नियम।
बैकडोर का क्या अर्थ है?
बैकडोर एक छिपी हुई विधि है जो सामान्य प्रमाणीकरण और सुरक्षा नियंत्रणों को दरकिनार कर सिस्टम तक पहुँचने की अनुमति देती है।
तकनीकी विश्लेषण:
बुनियादी स्थैतिक विश्लेषण:
पहले इसे प्रारंभिक विश्लेषण के लिए VirusTotal पर अपलोड करें। परिणाम बताते हैं कि फ़ाइल एक 64-बिट DLL है, जिसे कालिम मैलवेयर परिवार के अंतर्गत पहचाना गया है। इसके अतिरिक्त, कई डिटेक्शन MuddyWater खतरा समूह के साथ संभावित जुड़ाव का सुझाव देते हैं।
मैलवेयर डोमेन moodleuni[.]com के साथ नेटवर्क संचार भी स्थापित करता है।
यह कुछ फ़ाइलें गिराता है:
अब इसे Die (Detect it easy) में खोलें:
यह सैंपल बड़ी संख्या में Windows APIs को आयात करता है, जो दर्शाता है कि यह पैक नहीं है। कुल मिलाकर, यह छह DLLs से फंक्शन आयात करता है: KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll, और WININET.dll।
हालाँकि प्रत्येक DLL से कई APIs आयात किए जाते हैं, कई फंक्शन विशेष रूप से उल्लेखनीय हैं क्योंकि वे मैलवेयर के व्यवहार में भूमिका निभाते हैं।
विशेष रूप से, सैंपल कमांड-एंड-कंट्रोल (C2) सर्वर के साथ संचार स्थापित करने के लिए WININET.dll से नेटवर्किंग-संबंधित APIs आयात करता है। यह ole32.dll से COM-संबंधित फंक्शन का उपयोग करके Component Object Model (COM) ऑब्जेक्ट बनाने और उनसे बातचीत करने का काम करता है। इसके अलावा, मैलवेयर CSIDL मानों द्वारा पहचाने गए सिस्टम निर्देशिका पथ प्राप्त करने के लिए SHELL32.dll से SHGetFolderPathW का उपयोग करता है।
उन्नत स्थैतिक विश्लेषण:
DllMain में, केवल एक नया थ्रेड बनाने की क्रिया की जाती है। इस थ्रेड के अंदर, दो फंक्शन निष्पादित होते हैं: sub_1800063A0 और StartAddress।
sub_1800063A0 फंक्शन का विश्लेषण करते हुए, मैंने पाया कि इसमें दो अलग-अलग चरण हैं। पहले चरण में, मैलवेयर AppData\Roaming निर्देशिका में अपनी एक प्रति गिराता है। ऐसा करने के लिए यह Updates नामक एक नई उपनिर्देशिका बनाता है, उसके बाद update.exe नामक एक निष्पादन योग्य फ़ाइल बनाता है। इस फ़ाइल में लिखा गया बाइनरी पेलोड सीधे unk_18002AA10 पर स्थित एम्बेडेड डेटा से लिया गया है। परिणामस्वरूप, अंतिम फ़ाइल निम्न पथ पर लिखी जाती है: “C:\Users\AppData\Roaming\Update\update.exe”।
दूसरे चरण में, मैलवेयर RCLSID: {00021401-0000-0000-C000-000000000046} का उपयोग करके एक Component Object Model (COM) ऑब्जेक्ट आरंभ करता है, जो Shell Link Object (CLSID_ShellLink) से मेल खाता है और RIID: {000214F9-0000-0000-C000-000000000046}, जो IShellLinkW इंटरफ़ेस से मैप होता है। shell32.dll द्वारा कार्यान्वित पूर्ण Shell COM इंटरफ़ेस तालिका को देखकर, लागू किए गए तरीकों की सटीक पहचान की जा सकती है। मैलवेयर चार मुख्य COM विधियों को कॉल करता है: SetPath, SetDescription, Save, और Release। इन फंक्शनों का उपयोग करके, यह विंडोज स्टार्टअप निर्देशिका में MicrosoftUpdateSerice.lnk नामक एक दुर्भावनापूर्ण स्टार्टअप शॉर्टकट बनाता है, जिससे संक्रमित सिस्टम पर स्थायित्व स्थापित होता है।
StartAddress फ़ंक्शन का विश्लेषण
मैलवेयर अपने नेटवर्क संचार तर्क को तीन अलग-अलग फंक्शनों के माध्यम से कार्यान्वित करता है और दो अलग-अलग थ्रेड्स को जन्म देता है। एक थ्रेड कमांड शेल को जन्म देने और प्रबंधित करने के लिए जिम्मेदार है, जबकि दूसरा थ्रेड मैलवेयर के निष्पादन पूरा होने के बाद एकत्रित डेटा को अपलोड करने का कार्य संभालता है।
ये तीन फंक्शन सामूहिक रूप से संक्रमित होस्ट और कमांड-एंड-कंट्रोल (C2) सर्वर के बीच संचार का प्रबंधन करते हैं और तीन तार्किक परतों में व्यवस्थित हैं।
पहली परत समझौता किए गए सिस्टम से होस्ट-आधारित फिंगरप्रिंटिंग जानकारी एकत्र करने के लिए जिम्मेदार है। दूसरी परत एन्क्रिप्शन और अतिरिक्त हेरफेर करके इस डेटा को प्रसारण के लिए तैयार करने के लिए प्रसंस्करण करती है। तीसरी परत C2 डोमेन moodleuni[.]com के साथ नेटवर्क संचार स्थापित करती है और प्रसंस्कृत डेटा प्रसारित करती है।
पहले दो नेटवर्क-संबंधित फंक्शन विशेष रूप से प्रमाणीकरण और HTTP POST अनुरोध निर्माण के लिए जिम्मेदार हैं, जो रिमोट सर्वर पर प्रमाणित डेटा प्रसारण को सक्षम करते हैं।
तीसरा फंक्शन C2 सर्वर से कमांड प्राप्त करने के लिए जिम्मेदार है। सर्वर की प्रतिक्रिया के आधार पर, मैलवेयर अपनी अगली कार्रवाई तय करता है—या तो एक छिपा हुआ कमांड शेल जन्म देता है या C2 से प्राप्त कमांड के आधार पर एकत्रित डेटा अपलोड करता है।
पूरी तरह से समझने के लिए दो थ्रेड्स का विश्लेषण करना।
पहले थ्रेड में, मैलवेयर एक जॉब ऑब्जेक्ट के साथ दो और पाइप बनाता है, फिर उनमें एक निश्चित गुण सेट करता है।
फिर यह कुछ गुणों के साथ एक CMD बनाता है:
चौथे तर्क में मान 1 का अर्थ है कि CMD पाइप हैंडल से इनहेरिट कर सकता है
पाँचवें तर्क में मान 0x1000200u का अर्थ है कि CMD में निम्नलिखित हैं:
CREATE_NO_WINDOW = 0x0000000u
CREATE_NEW_PROCESS_GROUP = 0x0000200u
CREATE_UNICODE_ENVIRONMENT = 0x0000400u
और कुछ स्टार्टअप जानकारी: {स्ट्रक्चर का आकार = 104 बाइट्स, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}
और PROCESS_INFORMATION का एक पॉइंटर
और शेल बनाने के बाद यह इसे जॉब ऑब्जेक्ट को असाइन करता है और C2 से कमांड की प्रतीक्षा में पेंडिंग स्थिति में रखता है।
शेल साझा मेमोरी के माध्यम से भेजे गए नियंत्रण कमांड की जाँच करता है:
Pending: सामान्य निष्पादन।
Terminate: शेल को मारें और साफ़ करें। शेल पूरी तरह से नष्ट और रीसेट हो गया
Ctrlc: किसी भी शेष चाइल्ड को बलपूर्वक मारता है।
सामान्य संचालन में, यदि कोई कमांड मौजूद है, तो यह कमांड को CMD में लिखता है और फिर PeekNamedPipe का उपयोग करके आउटपुट की जाँच करता है और फिर इसे बफर में संग्रहीत करता है।