
PIC-आधारित Lsass मेमोरी डंपर जो डिटेक्शन से बचने के लिए क्लोन किए गए हैंडल का उपयोग करता है, और रेड टीम ऑपरेशन के लिए न्यूनतम मेमोरी फुटप्रिंट के साथ ऑब्स्क्योर डंप तैयार करता है।
यह टूल हमारे Brucon2021 सम्मेलन वार्ता के भाग के रूप में कार्यान्वित किया गया था और इसमें Lsass के क्लोन किए गए हैंडल का उपयोग करके इसका एक अस्पष्ट मेमोरी डंप बनाने का प्रदर्शन किया गया है।
यह एक एक्जीक्यूटेबल में संकलित होता है जो पूरी तरह से अपने टेक्स्ट सेगमेंट में रहता है। इस प्रकार, PE फ़ाइल का निकाला गया .text सेगमेंट पूरी तरह से पोजीशन इंडिपेंडेंट कोड (=PIC) है, जिसका अर्थ है कि इसे किसी भी शेलकोड की तरह माना जा सकता है।
मेमोरी में HandleKatz के निष्पादन का बहुत छोटा पदचिह्न है, क्योंकि यह स्वयं कोई अतिरिक्त एक्जीक्यूटेबल मेमोरी आवंटित नहीं करता है और इसलिए इसे @_ForrestOrr द्वारा वर्णित (Phantom)DLL-Hollowing जैसी अवधारणाओं के साथ कुशलतापूर्वक जोड़ा जा सकता है। यह PIC PE लोडर्स जैसे Donut, SRDI या Reflective Loaders के विपरीत है, जो PE लोडिंग के दौरान अतिरिक्त एक्जीक्यूटेबल मेमोरी आवंटित करते हैं।
इसके अतिरिक्त, यह ReactOS MiniDumpWriteDump के एक संशोधित संस्करण का उपयोग करता है और RecycledGate का उपयोग करके यूज़रलैंड हुक्स को बायपास करता है।
विस्तृत जानकारी के लिए कृपया इस रिपॉजिटरी में PDF फ़ाइल PICYourMalware.pdf देखें।
कृपया ध्यान दें कि विभिन्न कंपाइलर (संस्करण) अलग-अलग परिणाम देते हैं। इससे रिलोकेशन वाली PE फ़ाइल बन सकती है।
सभी परीक्षण x86_64-w64-mingw32-gcc mingw-gcc version 11.2.0 (GCC) का उपयोग करके किए गए। उत्पादित PIC का सफलतापूर्वक परीक्षण किया गया: Windows 10 Pro 10.0.17763 पर। Windows के अन्य संस्करणों पर, API हैश भिन्न हो सकते हैं।
PIC का उपयोग करने के लिए, शेलकोड के लिए एक पॉइंटर को एक्जीक्यूटेबल मेमोरी में डालें और इसे निम्नलिखित परिभाषा के अनुसार कॉल करें:
DWORD handleKatz(BOOL b_only_recon, char* ptr_output_path, uint32_t pid, char* ptr_buf_output);
डंप फ़ाइल के डीओबफस्केशन के लिए, स्क्रिप्ट Decoder.py का उपयोग किया जा सकता है।
Loader HandleKatz के लिए एक नमूना लोडर लागू करता है:
loader.exe --pid:7331 --outfile:C:\Temp\dump.obfuscated

चूंकि क्लोन किए गए हैंडल के साथ संशोधित ReactOS कोड का उपयोग किया जाता है, Lsass पर कोई ProcessAccess घटनाएँ नहीं देखी जा सकती हैं। हालांकि, उन प्रोग्रामों पर ProcessAccess घटनाएँ देखी जा सकती हैं जिनके पास Lsass का हैंडल है।
रक्षक इस टूल के उपयोग की पहचान करने के लिए सेट PROCESS_DUP_HANDLE (0x0040) के साथ ProcessAccess मास्क की निगरानी कर सकते हैं।