
Powershell स्क्रिप्ट जो कमजोर DCOM अनुप्रयोगों की गणना करती है
डीकॉमरेड एक पावरशेल स्क्रिप्ट है जो संभावित कमजोर DCOM अनुप्रयोगों की गणना करने में सक्षम है जो पार्श्व गति, कोड निष्पादन, डेटा बहिर्वाह आदि की अनुमति दे सकते हैं। स्क्रिप्ट पावरशेल 2.0 के साथ काम करने के लिए बनाई गई है लेकिन इसके ऊपर के सभी संस्करणों के साथ भी काम करेगी। स्क्रिप्ट वर्तमान में निम्नलिखित विंडोज ऑपरेटिंग सिस्टम (x86 और x64 दोनों) का समर्थन करती है:
मैं वर्तमान में HackDefense में इंटर्नशिप कर रहा हूं, मौजूदा DCOM पार्श्व गति तकनीकों पर शोध कर रहा हूं और इन (और संभवतः नई तकनीकों) की गणना को स्वचालित करने का एक तरीका खोजने का प्रयास कर रहा हूं। इस शोध के परिणामस्वरूप इस स्क्रिप्ट और साथ में दिए गए शोध पत्र का निर्माण हुआ, जो नीचे लिंक किया गया है।
स्क्रिप्ट मैट नेल्सन (@enigma0x3) द्वारा किए गए शोध पर आधारित थी, विशेष रूप से round 2 ब्लॉगपोस्ट जो पेंटेस्टर्स और रेड टीमों के लिए उपयोगी हो सकने वाले DCOM अनुप्रयोगों को खोजने पर केंद्रित है।
पहले लक्ष्य प्रणाली के साथ एक दूरस्थ कनेक्शन बनाया जाता है, इस कनेक्शन का उपयोग स्क्रिप्ट में कई संचालनों के लिए किया जाता है। लक्ष्य प्रणाली पर एक पावरशेल कमांड निष्पादित किया जाता है जो सभी DCOM अनुप्रयोगों और उनके AppID को पुनर्प्राप्त करता है। AppID का उपयोग विंडोज रजिस्ट्री के माध्यम से लूप करने और किसी भी AppID की जाँच करने के लिए किया जाता है जिसकी प्रविष्टि में LaunchPermission सबकी सेट नहीं है, इन AppID को संग्रहीत किया जाता है और उनसे संबंधित CLSID प्राप्त करने के लिए उपयोग किया जाता है।
स्क्रिप्ट प्रत्येक OS के साथ एक विशिष्ट ब्लैकलिस्ट का उपयोग करती है, यही कारण है कि लक्ष्य ऑपरेटिंग सिस्टम के लिए अलग-अलग विकल्प हैं। ब्लैकलिस्ट उन CLSID प्रविष्टियों को छोड़ देती है जो DCOM अनुप्रयोगों के कारण स्क्रिप्ट को हैंग कर सकती हैं जिन्हें सक्रिय नहीं किया जा सकता, इससे लक्ष्य प्रणाली पर भार कम होता है और स्क्रिप्ट को पूरा होने में लगने वाला समय कम हो जाता है।
CLSID के साथ, उससे संबंधित DCOM अनुप्रयोग को सक्रिय किया जा सकता है। 'Shortcut' CLSID का उपयोग उससे जुड़े MemberTypes की संख्या गिनने के लिए किया जाता है, यह MemberTypes की डिफ़ॉल्ट संख्या की जाँच करने के लिए किया जाता है। इस संख्या का उपयोग उन CLSID की जाँच करने के लिए किया जाता है जिनमें इस संख्या से भिन्न कुछ भी होता है। स्क्रिप्ट ऐसा 'Shortcut' के CLSID (HKEY_CLASSES_ROOT\CLSID\{00021401-0000-0000-C000-000000000046}) के साथ करती है क्योंकि यह माइक्रोसॉफ्ट विंडोज ऑपरेटिंग सिस्टम में एक साझा CLSID है। MemberTypes की अलग संख्या वाले CLSID में एक Method या Property हो सकता है जिसका दुरुपयोग किया जा सकता है, और उन्हें एक सरणी में जोड़ा जाएगा।
सरणी में CLSID की जाँच MemberTypes में उन स्ट्रिंग्स के लिए की जा रही है जो इसके दुरुपयोग का एक तरीका संकेत कर सकती हैं, स्ट्रिंग्स की यह सूची VulnerableSubset फ़ाइल में पाई जा सकती है। कृपया ध्यान दें कि यह सूची किसी भी तरह से प्रत्येक कमजोर DCOM एप्लिकेशन को खोजने के लिए पूर्ण सूची नहीं है, लेकिन प्रक्रिया का एक गतिशील हिस्सा होने के नाते, यह सूची स्क्रिप्ट के उपयोगकर्ता को उन विशिष्ट स्ट्रिंग्स को देखने का एक तरीका प्रदान करनी चाहिए जो किसी DCOM एप्लिकेशन की किसी कार्यक्षमता का संकेत दे सकती हैं जो उनके उद्देश्य के लिए उपयोगी हो सकती है।
स्क्रिप्ट के परिणाम एक HTML रिपोर्ट में आउटपुट होते हैं और एक निवारक उपाय के रूप में सिस्टम के ऑडिटिंग के लिए उपयोगी होने चाहिए। आक्रामक पक्ष के लिए मैंने एक Empire मॉड्यूल बनाया जो इस लेखन के समय मास्टर ब्रांच में जोड़े जाने की स्वीकृति की प्रतीक्षा कर रहा है। यदि आप इसे स्वयं Empire में जोड़ना चाहते हैं तो आप यहाँ स्थित मॉड्यूल को जोड़कर ऐसा कर सकते हैं।
विचार, स्क्रिप्ट और संभावित पहचान विधियों की पूर्ण तकनीकी व्याख्या के लिए आप इससे जुड़ा शोध पत्र पढ़ सकते हैं।
जब स्क्रिप्ट का उपयोग Empire मॉड्यूल के रूप में नहीं किया जा रहा है, तो इसकी कुछ सीमाएँ हैं क्योंकि स्क्रिप्ट का काम करने का तरीका और लक्ष्य मशीन से कनेक्शन का तरीका भिन्न होता है।
Public पर सेट है, तो लक्ष्य प्रणाली पर विंडोज रिमोट मैनेजमेंट सेवाओं के उपयोग की अनुमति देने के लिए निम्नलिखित कमांड निष्पादित करने की आवश्यकता है: Enable-PSRemoting -SkipNetworkProfilecheck -Forceजब माइक्रोसॉफ्ट विंडोज डोमेन में हों:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System] -Domain [Domain name]
जब माइक्रोसॉफ्ट विंडोज डोमेन में न हों:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System]

यह स्क्रिप्ट Eva Tanaskoska द्वारा दिए गए एक DCOM पार्श्व गति कार्यशाला से प्रेरित थी, इस कार्यशाला के बिना इसे स्वचालित तरीके से गणना करने का पूरा विचार कभी भी नहीं सोचा जा सकता था।
मैट नेल्सन (उर्फ @enigma0x3) के शोध के लिए धन्यवाद, मैं स्वचालन का एक रूप तैयार करने के लिए पर्याप्त जानकारी खोजने में सक्षम था।
फिलिप सुकरमैन का लेख जो पार्श्व गति के लिए अधिकांश उपलब्ध DCOM तकनीकों का सारांश प्रस्तुत करता है और यह बताता है कि ये कैसे काम करती हैं।