
EDRs के अंध स्थानों में संचालन में सहायक उपकरण
Pyramid निम्नलिखित से बना है:
Pyramid एक हस्ताक्षरित बाइनरी (जैसे python.exe) से आक्रामक टूलिंग निष्पादित करके, उनकी निर्भरताओं को मेमोरी में आयात करके, पोस्ट-एक्सप्लॉइटेशन कार्यों को एक चालाकीपूर्ण तरीके से करने के लिए उपयोगी है। यह इसलिए संभव है क्योंकि:
अधिक जानकारी के लिए कृपया DEFCON30 - Adversary village वार्ता "Python vs Modern Defenses" स्लाइड डेक और मेरे ब्लॉग पर यह पोस्ट देखें।
यह उपकरण EDRs के विरुद्ध एक बाईपास रणनीति प्रदर्शित करने के लिए बनाया गया था, जो कुछ ब्लाइंड-स्पॉट धारणाओं पर आधारित है। यह पहले से मौजूद तकनीकों और उपकरणों का एक संयोजन है, जो मेरी जानकारी के अनुसार एक नए तरीके से है जो रक्षा को बायपास करने में मदद कर सकता है। उपकरण का एकमात्र उद्देश्य समुदाय को इस प्रकार के उपयोग के बारे में जागरूकता बढ़ाने और समाधान में तेजी लाने में मदद करना है। यह कोई 0day नहीं है, यह कोई पूर्ण चमकदार C2 नहीं है, Pyramid EDRs के ब्लाइंड स्पॉट का शोषण कर सकता है और उपकरण को उन पर प्रकाश डालने के लिए सार्वजनिक किया गया है। एक रक्षा पैराग्राफ शामिल किया गया है, उम्मीद है कि अनुभवी ब्लू-टीमर्स योगदान दे सकते हैं और उस मुद्दे पर बेहतर संभावित समाधान प्रदान कर सकते हैं जिसे Pyramid उजागर करना चाहता है। सभी जानकारी केवल शैक्षिक उद्देश्यों के लिए प्रदान की गई है। निर्देशों का पालन अपने जोखिम पर करें। न तो लेखक और न ही उसका नियोक्ता किसी व्यक्ति या संगठन से उत्पन्न किसी भी प्रत्यक्ष या परिणामी क्षति या हानि के लिए जिम्मेदार है।
Pyramid का इन-मेमोरी लोडिंग प्रारंभ में xorrior के Empyre - Finder Class से प्रेरित और विस्तारित किया गया था।
snovvcrash ने मॉड्यूल mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py का निर्माण किया।
Pyramid मॉड्यूल की क्षमताएँ सीधे Python इंटरप्रेटर से निष्पादित की जा सकती हैं और वर्तमान में हैं:
Pyramid HTTP सर्वर की मुख्य विशेषताएँ:
क्रैडल की मुख्य विशेषताएँ:
Pyramid का उपयोग लक्ष्य मशीन पर पहले से मौजूद Python इंटरप्रेटर के साथ किया जा सकता है, या एक आधिकारिक एम्बेडेबल Python पैकेज को अनज़िप करके और फिर Python डाउनलोड क्रैडल को निष्पादित करने के लिए python.exe चलाकर किया जा सकता है। यह असामान्य प्रक्रिया ट्री पैटर्न बनाने से बचने और सामान्य Python एप्लिकेशन उपयोग की तरह दिखने का एक सरल तरीका है।
Pyramid में डाउनलोड क्रैडल का उपयोग HTTP/S के माध्यम से एक Pyramid सर्वर तक पहुँचने और मॉड्यूल और निर्भरताएँ प्राप्त करने के लिए किया जाता है।
मॉड्यूल उस सुविधा के लिए विशिष्ट हैं जिसका आप उपयोग करना चाहते हैं और इसमें शामिल हैं:
Python निर्भरताएँ पहले से तय और संशोधित की गई हैं ताकि बिना किसी विरोध के मेमोरी में आयात किया जा सके।
वर्तमान में 8 Pyramid मॉड्यूल उपलब्ध हैं:
git clone https://github.com/naksyn/Pyramid
HTTP सर्वर के लिए SSL प्रमाणपत्र जनरेट करें:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
यदि आप अपने स्वयं के हस्ताक्षरित SSL प्रमाणपत्र का उपयोग करना चाहते हैं तो सुनिश्चित करें:
उदाहरण के लिए, यदि आप Pyramid के साथ pythonmemorymodule का उपयोग करना चाहते हैं, तो अपने पेलोड को Delivery_files फ़ोल्डर में रखें, फिर pythonmemorymodule.py खोलें और स्क्रिप्ट के शीर्ष पर आवश्यक पैरामीटर कॉन्फ़िगर करें, जैसे पेलोड फ़ाइल का नाम और वह प्रक्रिया जिसे PE लोड होने के बाद कॉल करना है।
एक बार Pyramid सर्वर चल रहा है और Base स्क्रिप्ट तैयार है, तो आप Agent/cradle.py फ़ाइल में वेरिएबल pyramid_module सेट कर सकते हैं और इसे लक्ष्य पर निष्पादित कर सकते हैं।
क्रैडल को Python मानक लाइब्रेरीज़ के साथ चलाने के लिए बनाया गया है।
SSL प्रमाणपत्र का उपयोग करके बेसिक प्रमाणीकरण प्रदान करने वाले Pyramid HTTP सर्वर को चलाने, ChaCha का उपयोग करके डिलीवरी फ़ाइलों को एन्क्रिप्ट करने, मॉड्यूल में सर्वर कॉन्फ़िगरेशन को स्वचालित रूप से जनरेट करने और pythonmemorymodule के लिए एक पेस्ट करने योग्य क्रैडल प्रिंट करने का उदाहरण:
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py
स्टार्टअप पर pyramid.py अपनी फ़ोल्डर संरचना को पार्स करके key.pem, cert.pem की तलाश करेगा और Server फ़ोल्डर से फ़ाइलें वितरित करेगा।
https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195
दृश्य python.exe प्रॉम्प्ट लाए बिना Pyramid को निष्पादित करने के लिए, आप pythonw.exe का लाभ उठा सकते हैं जो निष्पादन पर एक कंसोल विंडो नहीं खोलेगा और उसी Windows Embeddable Package में समाहित है। निम्नलिखित चित्र एक रिमोट मशीन पर pythonw.exe का उपयोग करके base-tunnel-socks5.py को निष्पादित करने का एक उदाहरण दिखाता है, बिना python.exe कंसोल विंडो खोले।

Python मॉड्यूल को गतिशील रूप से लोड करना मूल रूप से *.pyd फ़ाइलों को आयात करने का समर्थन नहीं करता है जो मूलतः dlls हैं। मेरी जानकारी के अनुसार इस समस्या को हल करने वाला एकमात्र सार्वजनिक समाधान Scythe (इन-मेमोरी-एक्ज़ीक्यूशन) द्वारा CPython इंटरप्रेटर को पुनः इंजीनियर करके प्रदान किया गया है। डिजिटल हस्ताक्षर न खोने के लिए, एक समाधान जो मूल Python embeddable पैकेज का उपयोग करने की अनुमति देगा, उसमें आवश्यक pyd फ़ाइलों या व्हील्स को डिस्क पर ड्रॉप करना शामिल है। अधिकांश मामलों में इसके महत्वपूर्ण OPSEC निहितार्थ नहीं होने चाहिए, हालांकि ध्यान रखें कि डायनामिक लोडिंग को पूरा करने के लिए निम्नलिखित व्हील्स जिनमें pyd फ़ाइलें हैं, को डिस्क पर ड्रॉप किया जाता है: *. Cryptodome - Bloodhound-Python, Impacket, DonPAPI और LaZagne के लिए आवश्यक *. bcrypt, cryptography, nacl, cffi - paramiko के लिए आवश्यक
Python.exe एक हस्ताक्षरित बाइनरी है जिसकी अच्छी प्रतिष्ठा है और Python गतिशील कोड पर दृश्यता प्रदान नहीं करती है। Pyramid इन चोरी गुणों का शोषण करके उसी python.exe प्रक्रिया के भीतर आक्रामक कार्य करता है।
इस कारण से, सबसे कुशल समाधानों में से एक Python Foundation द्वारा हस्ताक्षरित बाइनरी और dlls को डिफ़ॉल्ट रूप से ब्लॉक करना होगा, केवल उन उपयोगकर्ताओं के लिए अपवाद बनाएँ जिन्हें वास्तव में python बाइनरी का उपयोग करने की आवश्यकता है।
एम्बेडेबल पैकेज के डाउनलोड पर अलर्ट भी उठाए जा सकते हैं।
PEP-578 को तैनात करना भी संभव है, हालांकि जटिल है, यह एक नमूना कार्यान्वयन है। हालाँकि, स्टॉक python बाइनरी के उपयोग को अवरुद्ध किए बिना PEP-578 को तैनात करना इस प्रतिउपाय को बेकार कर सकता है।