
CVE-2023-38831 - WinRAR
इस रिपॉजिटरी में CVE-2023-38831 (WinRAR ZIP फ़ाइल स्पूफिंग / डबल-एक्सटेंशन एक्सप्लॉइट) के लिए डिटेक्शन लॉजिक है, जिसमें रॉ क्वेरी / कोड ब्लॉक और ETW-विशिष्ट प्रोवाइडर नाम + इवेंट ID शामिल हैं। लक्ष्य सिस्टम पर WinRAR का एक कमजोर संस्करण (< 6.23)
CVE-2023-38831 तब एक्सप्लॉइट होता है जब:
उपयोगकर्ता WinRAR में एक दुर्भावनापूर्ण ZIP खोलता है
आर्काइव में शामिल होता है:
● एक डिकॉय फ़ाइल (जैसे, invoice.pdf )
● उसी नाम वाली एक डायरेक्ट्री (जैसे, invoice.pdf )
● डायरेक्ट्री के अंदर एक ही नाम वाली "दो" फ़ाइलें लेकिन थोड़े अलग नामों के साथ (एक फ़ाइल के लिए स्पेस और उसके अंत में कोई भी एक्सटेंशन, जैसे अगर पहली फ़ाइल "invoice.pdf " है तो दूसरी कोई स्क्रिप्ट या एक्ज़ीक्यूटेबल हो सकती है जैसे "invoice.pdf .cmd")
WinRAR दस्तावेज़ ("PDF" इस मामले में) खोलने के बजाय स्क्रिप्ट या एक्ज़ीक्यूटेबल चलाता है
यह निष्पादन फ़ाइल को चलाने के लिए ShellExecuteExW फ़ंक्शन को कॉल करके ट्रिगर होता है, जिसमें shExecInfo पास किया जाता है (Explorer के माध्यम से ShellExecute)
WinRAR एक चाइल्ड प्रोसेस स्पॉन करता है (cmd, powershell, mshta, wscript, exe — फ़ोल्डर के अंदर जो भी मौजूद हो)
निष्पादन अक्सर Temp / AppData / निकाले गए पथ से होता है
फ्लो सारांश उपयोगकर्ता आर्काइव खोलता है
↓
WinRAR डिकॉय फ़ाइल दिखाता है
↓
उपयोगकर्ता दस्तावेज़ पर डबल-क्लिक करता है
↓
WinRAR उसी नाम वाली डायरेक्ट्री निकालता है
↓
एक्ज़ीक्यूटेबल *.pdf\*.pdf .exe पर लिखी जाती है
↓
Explorer के माध्यम से ShellExecute
↓
एक्ज़ीक्यूटेबल का ImageLoad
↓
पेलोड निष्पादन
यह फ्लो डिटेक्शन के लिए क्यों महत्वपूर्ण है
● कोई मैक्रो उपयोग नहीं
● कोई प्रोसेस क्रिएशन निर्भरता नहीं
● एक्सप्लॉइट फाइलसिस्टम मास्करेडिंग पर टिका होता है
● उच्च-विश्वसनीयता, कम-शोर सिग्नल
महत्वपूर्ण तकनीकी विवरण
फ़ाइलें एक विशेष संरचना में लिखी जाती हैं
जैसे एक ही नाम वाली दो वस्तुएं (फ़ाइल/डायरेक्ट्री) होना और जब आर्काइव फ़ाइल में एक ही नाम वाली फ़ाइल और डायरेक्ट्री हो और आप खुली आर्काइव फ़ाइल में उस पर (लक्ष्य फ़ाइल) डबल-क्लिक करके फ़ाइल को अस्थायी रूप से खोलना चाहते हैं, तो WinRAR आपके लिए यह फ़ाइल निकालता है, साथ ही उन सभी फ़ाइलों को भी निकालता है जिनका नाम लक्ष्य फ़ाइल के समान है। उन सभी को %tmp% पथ में एक अस्थायी डायरेक्ट्री में लिखा जाता है।
| फ़ाइल/डायरेक्ट्री का नाम | निष्कर्षण पथ |
| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
| CLASSIFIED_DOCUMENTS.txt <–लक्ष्य फ़ाइल जिस पर क्लिक किया गया | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
| CLASSIFIED_DOCUMENTS.txt .cmd <– डायरेक्ट्री में मौजूद फ़ाइल | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
यदि किसी अस्थायी (डीकंप्रेशन) डायरेक्ट्री में एक ही नाम वाली दो फ़ाइलें हों लेकिन अलग-अलग आकार की हों (उदाहरण के लिए, 20k और 12k) और आप आर्काइव खोलें और पहली फ़ाइल, 1.txt खोलें, जो 20k बाइट्स आकार की है, तो WinRAR आपको दूसरी फ़ाइल, 1.txt, जो 10K आकार की है, से फ़ाइल को बदलने के लिए संकेत देगा। यदि आप "हाँ" पर क्लिक करते हैं, तो केवल दूसरी फ़ाइल, 1.txt खुलेगी। इस स्थिति को बहिष्करण के लिए जोड़ा जा सकता है।
डिटेक्शन लॉजिक के लिए महत्वपूर्ण बिंदु
किसी ZIP निष्कर्षण पथ या अस्थायी डायरेक्ट्री से प्रोसेस निष्पादन ट्रिगर होना, जिसमें भ्रामक एक्सटेंशन या फ़ाइल के रूप में मास्करेड करने वाला फ़ोल्डर हो
जब WinRAR अस्थायी डायरेक्ट्री में डीकंप्रेशन के लिए एक फ़ाइल छोड़ता है, तो उसमें एक ही नाम वाली दो फ़ाइलें होनी चाहिए लेकिन थोड़े अलग नामों के साथ (स्पेस और उसके अंत में कोई भी एक्सटेंशन), जैसे मुख्य फ़ाइल के नाम के अंत में एक " " (CLASSIFIED_DOCUMENTS.pdf ) और फिर एक ".cmd" (CLASSIFIED_DOCUMENTS.pdf .cmd)।
जब WinRar एक DLL लोड करता है और ShellExecuteExA फ़ंक्शन को कॉल करता है, तो पैरामीटर "pExecInfo" में एक स्पेस वाला पथ होता है जो किसी भी एक्सटेंशन के साथ समाप्त होता है, जैसे "CLASSIFIED_DOCUMENTS.pdf .cmd."
ETW प्रोवाइडर और डिटेक्शन फिलॉसफी (केवल ETW) ETW प्रोवाइडर
| उद्देश्य | ETW प्रोवाइडर |
| -------------------------- | ------------------------------------- |
| प्रोसेस क्रिएशन | `Microsoft-Windows-Kernel-Process` |
| कमांड लाइन विज़िबिलिटी | `Microsoft-Windows-Security-Auditing` |
| फ़ाइल ऑपरेशन (वैकल्पिक) | `Microsoft-Windows-Kernel-File` |
डिटेक्शन इस पर निर्भर करेगा (यदि कोई ProcessStart, CreateProcess, या EDR-शैली पैरेंट/चाइल्ड लॉजिक नहीं है):
● फाइल सिस्टम ETW
● शेल / Explorer ETW
● इमेज लोड ETW (वैकल्पिक, नॉन-क्रिएट)
● कमांड लाइन ETW (वैकल्पिक)
कोर ETW प्रोवाइडर
| उद्देश्य | ETW प्रोवाइडर |
| -------------------------- | ------------------------------------- |
| डायरेक्ट्री क्रिएशन | `Microsoft-Windows-Kernel-File` |
| EXE क्रिएशन | `Microsoft-Windows-Kernel-File` |
| शेल निष्पादन | `Microsoft.Windows.ShellExecute` |
| इमेज लोड | `Microsoft-Windows-Kernel-Image` |
| Explorer | `Microsoft-Windows-Explorer` |
| शेल | `Microsoft-Windows-Shell-Core` |
रॉ डिटेक्शन लॉजिक
उच्च स्तर पर, यह लॉजिक निम्न का पता लगाता है:
● WinRAR.exe द्वारा फ़ाइल राइट्स शुरू करना
● एक ही बेसनेम वाली डायरेक्ट्री और फ़ाइल दोनों का निर्माण
● रीनाम या ओवरराइट के बाद एक्ज़ीक्यूटेबल एक्सटेंशन का प्रकट होना
● तंग समय-सीमा (<2s) के भीतर होने वाला अनुक्रम
यह पैटर्न सामान्य वर्कफ़्लो में अत्यंत दुर्लभ है लेकिन एक्सप्लॉइट के निष्पादन पथ का मूल है।
● यह नियम जानबूझकर इनसे बचता है:
● कमांड-लाइन निरीक्षण
● चाइल्ड प्रोसेस ट्रैकिंग
● पूर्ण फ़ाइल हैशिंग
कोर लॉजिक डिटेक्शन नीचे दिया गया है, साथ ही एक कॉन्फिडेंस लेवल और संक्षिप्त औचित्य भी।