
SecureWorks के हालिया Azure Active Directory पासवर्ड ब्रूट-फोर्सिंग भेद्यता का POC
SecureWorks के हालिया Azure Active Directory पासवर्ड ब्रूट-फोर्सिंग भेद्यता का POC
यह कोड हाल ही में उजागर हुई Azure Active Directory पासवर्ड ब्रूट-फोर्सिंग भेद्यता का एक प्रूफ-ऑफ-कॉन्सेप्ट है, जिसे Secureworks द्वारा घोषित किया गया है (यहाँ Ars Technica लेख है जो आधिकारिक प्रकाशन से लगभग एक दिन पहले प्रकाशित हुआ था, लेकिन लगभग समान है)।
सिद्धांत रूप में, यह दृष्टिकोण किसी को एक या अधिक AAD खातों के विरुद्ध ब्रूट फोर्स या पासवर्ड स्प्रेइंग हमले करने की अनुमति देगा, बिना खाता लॉकआउट पैदा किए या लॉग डेटा उत्पन्न किए, जिससे हमला अदृश्य हो जाता है।
मूल उपयोग सरल है:
.\aad-sso-enum-brute-spray.ps1 USERNAME PASSWORD
इस तरह से कोड को कॉल करने से आपको निर्दिष्ट उपयोगकर्ता नाम और पासवर्ड के लिए परिणाम मिलेगा।
foreach का लाभ उठाकर, आप इसे पासवर्ड स्प्रेइंग के लिए आसानी से उपयोग कर सकते हैं:
foreach($line in Get-Content .\all-m365-users.txt) {.\aad-sso-enum-brute-spray.ps1 $line Passw0rd! |Out-File -FilePath .\spray-results.txt -Append }
ध्यान दें कि यदि आप Linux में इसके साथ काम करना चाहते हैं, तो इस विधि का उपयोग करने पर आपको परिणामी फ़ाइल को UTF-16 से UTF-8 में बदलना होगा:
iconv -f UTF16 -t UTF-8 spray-results.txt >new-spray-results.txt
यदि आप केवल enumeration में रुचि रखते हैं, तो पासवर्ड स्प्रेइंग के लिए ऊपर बताए अनुसार ही चलाएँ। "bad password" का कोई भी रिटर्न मान, या "no user" के अलावा कोई भी मान, इसका मतलब होगा कि आपको एक वैध उपयोगकर्ता नाम मिल गया है।
किसी उपयोगकर्ता नाम के लिए "True" का रिटर्न मतलब है कि दिया गया पासवर्ड मान्य है।
"locked" का रिटर्न मतलब हो सकता है कि खाता लॉक है, या Smart Lockout अस्थायी रूप से आपको खाते के साथ इंटरैक्ट करने से रोक रहा है।
ब्रूट फोर्सिंग के लिए कोड का लाभ उठाने हेतु, उपयोगकर्ता नाम फ़ील्ड के बजाय पासवर्ड फ़ील्ड पर पुनरावृति करें:
foreach($line in Get-Content .\passwords.txt) {.\aad-sso-enum-brute-spray.ps1 [email protected] $line |Out-File -FilePath .\brute-results.txt -Append }
यदि आपको एक या अधिक वैध उपयोगकर्ता नाम/पासवर्ड जोड़े मिलते हैं, तो आप लौटाए गए DesktopSSOToken को प्राप्त करने के लिए इस कोड को संशोधित कर सकते हैं। फिर DesktopSSOToken को इस विधि का उपयोग करके OAuth2 Access Token के लिए विनिमय किया जा सकता है।
उसके बाद OAuth2 Access Token का उपयोग विभिन्न Azure, M365 और O365 API endpoints के साथ किया जा सकता है।
हालाँकि, इस बिंदु पर आप MFA से बाधित हो सकते हैं। यहाँ आपका सबसे अच्छा विकल्प गैर-MFA पहुँच का लाभ उठाना होगा, जैसे Outlook Web Access या ActiveSync। Dafthack's MFASweep यहाँ सहायक है।
Microsoft की Smart Lockout सुविधा यदि आप समान IP पते से API endpoint को बहुत तेज़ी से हिट करते हैं तो गलत दावा करना शुरू कर देगी कि खाते लॉक हैं। इससे बचने के लिए, मैं दृढ़ता से ustayready's fireprox का उपयोग करने की अनुशंसा करता हूँ। बस $url चर को इस प्रकार बदलें:
$url="https://xxxxxxx.execute-api.us-east-1.amazonaws.com/fireprox/"+$requestid
हालाँकि, यदि आप किसी विशिष्ट खाते के लिए पासवर्ड ब्रूट-फोर्स करने का प्रयास कर रहे हैं तो यह Smart Lockout से नहीं बचेगा।
इसका लगभग सारा कोड Dr. Nestori Syynimaa के उत्कृष्ट AADInternals project से उधार लिया गया था।