
SHAREM एक शेलकोड विश्लेषण ढांचा है, जो 45,000 से अधिक WinAPIs और लगभग सभी Windows syscalls का अनुकरण करने में सक्षम है। इसमें अपना स्वयं का कस्टम डिसअसेंबलर भी शामिल है, जिसमें कई नवीन विशेषताएं हैं, जैसे कि एन्कोडेड शेलकोड का डीओबफस्केटेड डिसअसेंबली दिखाने में सक्षम होना, या डिसअसेंबली को बढ़ाने के लिए अनुकरण डेटा को एकीकृत करना।
SHAREM में आपका स्वागत है!
SHAREM को DEFCON 31 में "Game-Changing Advances in Windows Shellcode Analysis" और Black Hat USA Arsenal में प्रस्तुत किया गया था। एक साथी Ghidra प्लगइन Trellix की ओर से (अलग से) उपलब्ध कराया गया था, जो Max Kersten की कृपा से है। इस प्रकार, यदि आप चाहें तो SHAREM की शक्ति को Ghidra तक विस्तारित कर सकते हैं।
SHAREM का उद्देश्य अंतिम Windows शेलकोड उपकरण होना है, जो 45,000 से अधिक WinAPI का अनुकरण करने, लगभग सभी उपयोगकर्ता-मोड Windows सिस्कॉल को समर्थन देने की क्षमता रखता है, और SHAREM अनेक नई सुविधाएँ प्रदान करता है। SHAREM में एक एमुलेटर, एक डिसअसेंबलर, कालातीत डिबगिंग, ब्रूट-फोर्स डीऑबफस्केशन, और कई अन्य सुविधाएँ शामिल हैं। SHAREM का एमुलेटर पूर्ण संरचनाएँ (या यहाँ तक कि संरचनाओं के भीतर संरचनाएँ) प्रदर्शित कर सकता है और यह एन्कोडेड शेलकोड को स्वयं डीऑबफस्केट करने की अनुमति दे सकता है। SHAREM सभी विश्लेषित WinAPI और Windows सिस्कॉल से आउटपुट लॉग करता है, और उन्हें कई श्रेणियों और उपश्रेणियों में विभाजित करता है। SHAREM की पूर्ण कोड कवरेज इसे अप्राप्य कार्यक्षमता खोजने में भी सक्षम बनाती है।
SHAREM का डिसअसेंबलर खोजे गए फ़ंक्शन को डिसअसेंबली में एकीकृत करने में सक्षम है, प्रत्येक को डिसअसेंबलर में लेबल करता है। SHAREM डिसअसेंबलर में एन्कोडेड शेलकोड के डिक्रिप्टेड रूप को भी प्रदर्शित करेगा, इसलिए शेलकोड को डीबग करना आवश्यक नहीं है।
हमने एक SHAREM विकी बनाया है जो SHAREM उपयोग पर कुछ निर्देशात्मक जानकारी प्रदान करता है, हालाँकि इसके महत्वपूर्ण भाग और सुविधाएँ वर्तमान में प्रलेखित नहीं हैं। SHAREM को दो वर्षों की अवधि में कई लोगों द्वारा विकसित किया गया है। SHAREM का डिसअसेंबलर प्रमुख डिसअसेंबलरों की तुलना में काफी अधिक सटीक है। इसके अतिरिक्त, SHAREM एमुलेशन डेटा को डिसअसेंबलर में एकीकृत कर सकता है, जिससे लगभग दोषरहित डिसअसेंबली प्राप्त की जा सकती है।
कृपया ध्यान दें कि चूँकि SHAREM अभी-अभी जारी किया गया है, यहाँ दस्तावेज़ीकरण थोड़ा कम है। हम आने वाले हफ्तों में GitHub पर अधिक जानकारी के साथ अपडेट करेंगे।
यदि आप SHAREM में नए हैं, तो बेझिझक एक संक्षिप्त डेमो वीडियो देखें, जो इसकी कुछ क्षमताओं को प्रदर्शित करता है। डेमो देखने के लिए छवि पर क्लिक करें:

मार्च 2026: SHAREM प्रारंभ करते समय 61 DLL तक लोड करेगा, लेकिन नवीनतम अपडेट के साथ, यह अब 369 DLL और 45538 अद्वितीय WinAPI का समर्थन कर सकता है। इसके अतिरिक्त, DLL आवश्यकतानुसार मांग पर लोड किए जाते हैं। Windows की आंतरिक सुविधाएँ (जैसे मॉड्यूल सूची, फ्लिंक, ब्लिंक, आदि) स्वचालित रूप से अपडेट हो जाएँगी यदि किसी अतिरिक्त DLL को लोड करने की आवश्यकता हो, उदा. LoadLibraryA के माध्यम से। कार्यक्षमता में सुधार के लिए कई अन्य अपडेट किए गए हैं। स्थापना चुनौतियों के संबंध में मुझे बताई गई कुछ समस्याओं को सुव्यवस्थित करने के लिए परिवर्तन किए गए हैं।
22 मार्च, 2026: लूप से बाहर निकलने के तर्क को अधिक बारीकी से परिष्कृत किया गया है। इसका अधिकांश भाग पुनः लिखा और पुनः परीक्षण किया गया है। यदि आप इस सुविधा का उपयोग करने का निर्णय लेते हैं, तो हम सामान्यतः config.cfg में डिफ़ॉल्ट बदलने की अनुशंसा नहीं करते हैं।
2024/2025: SHAREM वैकल्पिक रूप से OpenAI कुंजी (उपयोगकर्ता द्वारा प्रदत्त) के साथ परिणामों का विश्लेषण करने के लिए AI का लाभ उठा सकता है। ध्यान दें कि SHAREM AI में हाल की प्रगति से पहले बनाया गया था, और AI का इसका उपयोग केवल SHAREM के प्रारंभिक विश्लेषण के पूरा होने के बाद होता है। यह वैकल्पिक सुविधा इसे पाए गए चीज़ों की जाँच करने और उन्हें MITRE ATT&CK फ्रेमवर्क और बहुत कुछ पर लागू करने की अनुमति दे सकती है।
SHAREM एक स्थानीय Python पैकेज के रूप में स्थापित किया जाता है, ताकि हमारी अन्य परियोजनाओं में इसकी पहुँच हो। यह SHAREM के भागों को आयात करने की अनुमति देता है। इस प्रकार, इसे एक पैकेज के रूप में स्थापित किया जाना चाहिए। नोट: मैंने कुछ स्थापना समस्याओं की रिपोर्ट सुनी है। हाल के परिवर्तनों से इस समस्या को ठीक करने की उम्मीद है।
SHAREM की स्थापना के लिए Git आवश्यक है। इसे https://git-scm.com/download/win से स्थापित किया जा सकता है। स्थापना के बाद कंप्यूटर को पुनरारंभ करें और SHAREM स्थापना के साथ जारी रखें। Git Windows SSDeep की स्थापना को स्वचालित करने के लिए है। आप इसे मैन्युअल रूप से भी कर सकते हैं और .bat को संशोधित कर सकते हैं ताकि SSDeep को शामिल न करें, यदि आप स्वयं करते हैं। इसे मैन्युअल रूप से स्थापित करने से Git का उपयोग करने की आवश्यकता समाप्त हो जाती है। नोट: Windows के लिए, हम Bw3ll खाते पर SSDeep के एक फोर्क की ओर बढ़ रहे हैं जो पिछले संस्करण के साथ कुछ स्थापना समस्याओं को ठीक करता है। यह संस्करण और पिछला SSDeep के लिए रैपर थे।
.bat फ़ाइल चलाएँ। यह setup.py फ़ाइल को कॉल करेगा। आप Python को कैसे कॉल करते हैं, इस पर निर्भर करते हुए, आपको वैकल्पिक .bat फ़ाइल को कॉल करने या यदि कुछ गैर-मानक उपयोग कर रहे हैं तो इसे थोड़ा संशोधित करने की आवश्यकता हो सकती है।
ऐसा करें
py -m pip list या python3 -m pip list यह सत्यापित करने के लिए कि SHAREM स्थानीय रूप से एक पैकेज के रूप में स्थापित है। इसे काम करने के लिए एक पैकेज के रूप में स्थापित होना चाहिए। यदि आप इसे नहीं देखते हैं तो क्या होगा? तब यह एक पैकेज के रूप में स्थापित नहीं है, और SHAREM काम नहीं करेगा। सुनिश्चित करें कि आप .bat फ़ाइल(फ़ाइलों) का उपयोग कर रहे हैं, और इसे इंस्टॉलर्स निर्देशिका से Windows कमांड प्रॉम्प्ट में कर रहे हैं। यदि यह काम नहीं करता है, तो किसी भी त्रुटि संदेश की तलाश करें। यदि कोई मौजूद हैं, तो उन्हें ठीक करने का प्रयास करें। आप इसे कुछ बार आज़मा सकते हैं। यदि फिर भी काम नहीं करता है, तो एक इश्यू खोलें और इस सारी जानकारी को शामिल करने का प्रयास करें, ताकि हम यह पता लगाने का प्रयास कर सकें कि क्या गलत है। आमतौर पर, इसकी आवश्यकता नहीं होगी, लेकिन कभी-कभी हो सकती है। यदि आपने एक बार इसे अनइंस्टॉल कर दिया है और इसे फिर से स्थापित करने का निर्णय लिया है, तो संभव है कि आपको इंस्टॉल स्क्रिप्ट को फिर से चलाने की आवश्यकता हो सकती है। एक बार जब आप py -m pip list करते समय sharem को दिखाई देते हुए देखते हैं, तो आप जान जाते हैं कि यह स्थानीय पैकेज के रूप में सही ढंग से स्थापित है।
SHAREM स्थापित होने के बाद, जब आप पहली बार शेलकोड चलाते हैं, तो आप sharem_cli फ़ोल्डर के अंदर होना चाहते हैं। उदाहरण के लिए, जब उस निर्देशिका में हों, तो आप py main.py -r32 shellcode.bin चला सकते हैं। कोई शेलकोड नहीं? यह ठीक है, आप शेलकोड नमूना भंडार में कुछ नमूने पा सकते हैं जो मैं एक अलग भंडार में होस्ट करता हूँ।
नोट: Windows पर पहली बार जब आप एक शेलकोड का अनुकरण करने का प्रयास करते हैं, तो यह Windows DLL की कटाई और विस्तार करने का प्रयास करेगा। यह प्रक्रिया स्वचालित रूप से शुरू होती है जब पहली बार शेलकोड का अनुकरण करने का प्रयास किया जाता है। यह उन्हें कॉपी करेगा, कॉपी की गई (और बाद में विस्तारित) DLL को SHAREM निर्देशिका में ले जाएगा। अतिरिक्त चरण हैं, लेकिन यह पूरी प्रारंभिक प्रक्रिया में कई मिनट लग सकते हैं, या यदि बहुत पुराना CPU है तो 10-15 मिनट भी लग सकते हैं। पूरा होने के बाद, आपको फिर से ऐसा नहीं करना होगा। यह 32- और 64-बिट शेलकोड दोनों के लिए अलग-अलग किया जाना चाहिए। आप sharem/sharem/sharem/sharem/DLLs/x86 में नेविगेट कर सकते हैं - और आपको धीरे-धीरे DLL दिखाई देनी चाहिए। ये OS से ली जा रही हैं, OS द्वारा उनके साथ किए जाने वाले कार्यों का अनुकरण करने के लिए संशोधित की जा रही हैं, और इस निर्देशिका में सहेजी जा रही हैं। लगभग 60 से अधिक होंगी। यदि आप DLL की उस संख्या के आसपास देखते हैं, और कोई अतिरिक्त DLL सहेजी नहीं जा रही हैं, तो इसका मतलब है कि यह शायद बस अटक गया है। बस फिर से एंटर दबाएँ। यदि वह विफल रहता है, तो बस पुनरारंभ करें और फिर से अनुकरण करने का प्रयास करें। एक बार DLL सहेजे जाने के बाद, आपको फिर से ऐसा करने की आवश्यकता नहीं होनी चाहिए; केवल पहली बार CPU गति के आधार पर प्रतीक्षा करने में समय लग सकता है। जब हो जाए तो आपको अनुकरण परिणाम दिखाई देने चाहिए, जैसे विभिन्न WinAPI या Windows सिस्कॉल की गणना।
यदि फ़ाइल .txt में समाप्त होती है, तो यह मान लेगा कि शेलकोड HEX का ASCII प्रतिनिधित्व है (शुद्ध हेक्साडेसिमल के बजाय), और यह इसकी व्याख्या इस प्रकार करेगा। यह ऑनलाइन पाई जाने वाली किसी चीज़ के साथ काम करता है। यदि हेक्साडेसिमल के ASCII प्रतिनिधित्व का उपयोग कर रहे हैं, तो फ़ाइल नाम का .txt में समाप्त होना एक आवश्यकता है।
chmod +x linux_installer.sh इंस्टॉलर के निष्पादन को सक्षम करेंsudo ./linux_installer.sh इंस्टॉलर को निष्पादित करेंआपको Windows DLL फ़ाइलें जोड़ने की आवश्यकता होगी। हम वर्तमान में Linux उपयोगकर्ताओं के लिए इन्हें अलग डाउनलोड के रूप में उपलब्ध नहीं कराते हैं। इस समय, उपयोगकर्ताओं को Windows के माध्यम से स्थापित करके उन्हें काटने की आवश्यकता होगी। (नोट: इन DLL को SHAREM द्वारा विस्तारित किया जाना चाहिए। यदि विस्तारित नहीं किया गया तो DLL का उपयोग नहीं किया जा सकता है। अधिकांश, हालाँकि शायद सभी नहीं, यदि उचित मात्रा में विस्तारित नहीं किए गए तो विफल हो जाएँगे।) बाद में, हम आने वाले हफ्तों में इन्हें अलग डाउनलोड के रूप में प्रदान कर सकते हैं। लेकिन इस बीच, उपयोगकर्ता इन्हें उत्पन्न करने और Linux पर ले जाने के लिए Windows चरणों का पालन कर सकता है, उन्हें sharem\sharem\sharem\DLLs\x64 और sharem\sharem\sharem\DLLs\x86 में रख सकता है। आपको foundDLLAddresses32.json और FoundDLLAddresses64.json की भी आवश्यकता होगी, जो sharem\sharem\sharem में जानी चाहिए।
SHAREM ने 2024 में OpenAI के लिए समर्थन जोड़ा है, ताकि हम कुछ विश्लेषण कार्यों को स्वचालित करने के लिए AI का लाभ उठा सकें। इसे मुख्य मेनू से A के माध्यम से सक्रिय किया जा सकता है - "leverage AI।" ऐसा करने के लिए, आपके पास एक OpenAI कुंजी होनी चाहिए, और आप इसे config.cfg फ़ाइल में डालना चाहते हैं, जो sharem/sharem/sharem/sharem/config.cfg में है। इसके अतिरिक्त, आपको AI का लाभ उठाने की अनुमति देने से पहले एक शेलकोड का अनुकरण करना होगा। वर्तमान में AI का उपयोग करने का यही एकमात्र तरीका है - यह हेडलेस तरीके से काम नहीं करता है - लेकिन यदि किसी को इसकी आवश्यकता है, तो कृपया एक इश्यू खोलें, और मैं इसके लिए समर्थन जोड़ दूंगा, एक अन्य विकल्प के रूप में जिसे कॉन्फ़िगर के माध्यम से चुना जा सकता है। यदि आपने पहले ही SHAREM स्थापित कर लिया है और अद्यतन संस्करण प्राप्त कर लिया है, तो आप केवल OpenAI को मैन्युअल रूप से स्थापित करना चाह सकते हैं, जैसे pip install openai। मैंने इसे आवश्यकताओं में भी जोड़ा है setup.py फ़ाइल के लिए जो प्रारंभिक स्थापना स्क्रिप्ट चलाने पर सक्रिय होती है।
Max Kersten का उत्कृष्ट Ghidra स्क्रिप्ट जैसा कि इस अगस्त 2023 में Black Hat और DEFCON में दिखाया गया था, यहाँ पाया जा सकता है: https://github.com/advanced-threat-research/GhidraScripts/blob/main/Sharem.java Max के कुछ निर्देश यहाँ हैं: https://github.com/advanced-threat-research/GhidraScripts/ यह Ghidra प्लगइन Trellix की ओर से है! आपको अभी भी SHAREM का उपयोग करना आवश्यक है। यह SHAREM द्वारा उत्पादित JSON आउटपुट को लेता है और इसे Ghidra के लिए उपयोगी प्रारूप में परिवर्तित करता है। Max के बारे में अधिक जानकारी https://maxkersten.nl/ पर पाई जा सकती है।
दस्तावेज़ीकरण SHAREM विकी पर पाया जा सकता है, जो SHAREM उपयोग पर कुछ निर्देशात्मक जानकारी प्रदान करता है, हालाँकि इसके महत्वपूर्ण भाग और सुविधाएँ वर्तमान में प्रलेखित नहीं हैं।
SHAREM एक बहुत शक्तिशाली ढाँचा है जिसमें कई क्षमताएँ हैं, कुछ अच्छी तरह से प्रलेखित हैं, और कुछ जो नहीं हैं। यह खंड उन क्षमताओं की एक छोटी संख्या को प्रदर्शित करेगा।
SHAREM एक एन्कोडेड शेलकोड ले सकता है और इसे अनुकरण के माध्यम से डीऑबफस्केट कर सकता है। यह न केवल सभी WinAPI या सिस्कॉल जानकारी को कैप्चर करता है, बल्कि यदि आप इसे डिसअसेंबलर में देखना चुनते हैं, तो यह आपको शेलकोड का डिकोड किया हुआ रूप दिखाता है:

SHAREM न केवल 12,000+ WinAPI फ़ंक्शन की गणना कर सकता है, बल्कि लगभग सभी उपयोगकर्ता-मोड Windows सिस्कॉल के साथ भी ऐसा कर सकता है। इसके अतिरिक्त, कुछ के लिए यह संरचना जानकारी प्रदर्शित करता है। रजिस्ट्री से निपटने वालों के लिए, यह रजिस्ट्री जानकारी निकालेगा और इसे हमारे रजिस्ट्री प्रबंधक में जोड़ेगा:

SHAREM के पास UrldownloadToFileA के माध्यम से फ़ाइलों को डाउनलोड करने की क्षमता भी है, यदि वे मौजूद हैं। ये एमुलेटर की मेमोरी में डाउनलोड की जाती हैं - डिस्क पर सहेजी नहीं जाती हैं। यदि सफल होता है, तो यह हैश कैप्चर करेगा। एक सीमित छद्म फ़ाइल सिस्टम भी है, और इसलिए आप सहसंबंध देख सकते हैं, जैसे कि एक फ़ाइल को एक चीज़ के रूप में डाउनलोड किया जा रहा है और दूसरे में नाम बदल दिया गया है। यदि आवश्यक डाउनलोड उपलब्ध नहीं है, तो इसे केवल एक सफल डाउनलोड के रूप में अनुकरण किया जाएगा। लाइव डाउनलोडिंग एक विकल्प है जिसे कॉन्फ़िगर में सक्षम या अक्षम किया जा सकता है

Dr. Bramwell Brizendine, Austin Babcock, Jake Hince, Shelby VandenHoek, Sascha Walker, Evan Read, Dylan Park, Kade Brost, James Tate Forcella, William Lochte, Hunter Murphy, और Tarek Abdelmotaleb.
इस शोध और कुछ सह-लेखकों को NSA अनुदान H98230-20-1-0326 द्वारा समर्थित किया गया है।