
# Cobalt Strike बीकन ऑब्जेक्ट फ़ाइल जो CVE-2020-0796 SMBGhost स्थानीय विशेषाधिकार वृद्धि को लागू करती है, जिसमें टोकन चोरी और सत्र उन्नयन के लिए दोहरे शस्त्रीकरण पथ शामिल हैं।
यह SMBGhost LPE के साथ Raphael द्वारा किया गया प्रयोग है।
मैंने Metasploit Framework के स्रोत कोड से शुरुआत की:
cve-2020-0796: SMBv3 Compression Buffer Overflow (SMBGhost) (CVE 2020-0796) https://github.com/rapid7/metasploit-framework/tree/master/external/source/exploits/CVE-2020-0796 [BSD Licensed]
और, मैंने यह किया:
इसके लिए Dynamic Function Resolution MODULE$Function प्रारूप में कई Win32 APIs घोषित करने की आवश्यकता थी। अच्छी बात यह है कि इससे NTDLL में चीज़ों को कॉल करने वाले कुछ कोड कम हो गए, क्योंकि DFR उसे संभाल रहा है हमारे लिए। :)
मैंने get_handle_addr से अप्रयुक्त 1,000-आइटम ptr ऐरे को हटा दिया। इसके कारण cl.exe एक __chkstk फ़ंक्शन सम्मिलित कर रहा था, क्योंकि स्थानीय चर 8KB सीमा से अधिक थे। BOFs के पास यह फ़ंक्शन उपलब्ध नहीं होता।
फिर मैंने कुछ Beacon-विशिष्ट APIs (जैसे, BeaconPrintf, BeaconInjectProcess, आदि) शामिल किए ताकि चीज़ों को Beacon-नेटिव तरीके से किया जा सके।
मुझे libc की उन चीज़ों की भरपाई के लिए कुछ फ़ंक्शन लिखने पड़े जो मेरे पास नहीं हैं (क्योंकि... BOFs)।
Beacon में बिना किसी तर्क के 'smbghost' alias का उपयोग करें, इस exploit को चलाने और केवल Beacon प्रक्रिया टोकन को प्रभावित करने के लिए। यदि exploit सफल होता है, तो आपके वर्तमान प्रक्रिया टोकन में वे असाधारण शक्तियाँ होंगी जो पहले नहीं थीं। उदाहरण के लिए, अब आप अन्य प्रक्रियाओं में inject कर सकते हैं (यहाँ तक कि अन्य डेस्कटॉप सत्रों में भी) या winlogon.exe के अंतर्गत एक चाइल्ड प्रक्रिया स्पॉन कर सकते हैं। आपको smbghost को कई बार चलाने की आवश्यकता हो सकती है क्योंकि exploit हमेशा पहली बार में सफल नहीं होता।
वैकल्पिक रूप से, Cobalt Strike के Aggressor Script में उपलब्ध privilege escalation API का उपयोग करके एक नया Beacon सत्र प्राप्त करने के लिए 'elevate smbghost' का उपयोग करें। यह त्वरित डेमो के लिए ठीक है, यह उत्पाद के वर्कफ़्लोज़ में फिट बैठता है, आदि, लेकिन... यह winlogon.exe में inject करता है। winlogon.exe में inject करना इस विशेष elevation का कोई अनिवार्य गुण नहीं है। मुझे संदेह है कि सभी सार्वजनिक POCs ऐसा इसलिए करते हैं क्योंकि CreateRemoteThread प्रक्रिया सीमाओं के पार काम नहीं करता, और कौन parent process spoofing के लिए अतिरिक्त boilerplate लिखना चाहता है? winlogon.exe उन्नत अधिकारों को प्रदर्शित करने के लिए आसान लक्ष्य है।
इसे Visual Studio के साथ संकलित करने के लिए:
x64 Cross Tools Command Prompt से make.bat का उपयोग करें।
यह expoit.x64.o को dist/ में आउटपुट करेगा।
मैंने Visual Studio 2013 का उपयोग किया। अन्य कंपाइलर/संस्करणों का परीक्षण नहीं किया गया। मैंने x86 आज़माया/परीक्षण नहीं किया।