एक्टिव डायरेक्टरी डोमेन में उपयोगकर्ता पासवर्ड की जटिलता, उपयोगकर्ता डेटा और संपूर्ण डोमेन इंफ्रास्ट्रक्चर दोनों के लिए प्रमुख सुरक्षा तत्वों में से एक है। सिफारिशों के बावजूद कि व्यक्तिगत जानकारी, डिक्शनरी शब्दों और सरल संयोजनों को पासवर्ड के रूप में उपयोग नहीं किया जाना चाहिए, कई उपयोगकर्ता सरल और याद रखने में आसान पासवर्ड पसंद करते हैं। इस लेख में, हम आपको दिखाएंगे कि एक्टिव डायरेक्टरी उपयोगकर्ता पासवर्ड की ऑडिट कैसे करें, PowerShell का उपयोग करके कमजोर और सरल पासवर्ड कैसे ढूंढें।
DSInternals (डायरेक्टरी सर्विसेज इंटर्नल्स) PowerShell मॉड्यूल कैसे इंस्टॉल करें?
एक्टिव डायरेक्टरी डेटाबेस (ntds.dit फ़ाइल) में संग्रहीत उपयोगकर्ता पासवर्ड के हैश की तुलना सरल और सामान्य पासवर्ड के डिक्शनरी से करने के लिए, आप एक थर्ड-पार्टी PowerShell मॉड्यूल - DSInternals का उपयोग कर सकते हैं। इस मॉड्यूल में कई cmdlets हैं जो AD डेटाबेस के साथ ऑनलाइन या ऑफलाइन मोड (सीधे ntds.dit के साथ) में विभिन्न कार्य करने की अनुमति देते हैं। विशेष रूप से, हम Test-PasswordQuality cmdlet में रुचि रखते हैं जो कमजोर, समान, मानक, खाली पासवर्ड (पासवर्ड नॉट रिक्वायर्ड), या जिनके पासवर्ड कभी समाप्त नहीं होते, वाले उपयोगकर्ताओं का पता लगाने की अनुमति देता है।
नोट: स्वाभाविक रूप से, AD डेटाबेस से उपयोगकर्ता पासवर्ड को प्लेन टेक्स्ट के रूप में प्राप्त नहीं किया जा सकता। एक्टिव डायरेक्टरी में संग्रहीत पासवर्ड हैश्ड होते हैं। हालांकि, आप AD उपयोगकर्ताओं के पासवर्ड हैश की तुलना डिक्शनरी फ़ाइल के शब्दों के हैश से कर सकते हैं और कमजोर पासवर्ड ढूंढ सकते हैं।PowerShell संस्करण 5 (और नए) में, आप DSInternals मॉड्यूल को आधिकारिक PowerShell स्क्रिप्ट गैलरी से ऑनलाइन इंस्टॉल कर सकते हैं:
Install-Module DSInternals
पुराने PowerShell संस्करणों या डिस्कनेक्टेड वातावरण में, आपको GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases) से नवीनतम मॉड्यूल संस्करण के साथ .zip आर्काइव डाउनलोड करना होगा। इस लेख के लिखे जाने तक, नवीनतम रिलीज़ DSInternals v4.4.1 थी। इस आर्काइव को PowerShell मॉड्यूल वाले किसी एक निर्देशिका में निकालें:
- C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
- C:\Users\%username%\Documents\WindowsPowerShell\Modules\DSInternals
या निम्न कमांड का उपयोग करके DSInternals मॉड्यूल को अपने वर्तमान PowerShell सत्र में इम्पोर्ट करें:
Import-Module C:\distr\PS\DSInternals\DSInternals.psd1
यदि मॉड्यूल इम्पोर्ट करते समय त्रुटि "cannot be loaded because running scripts is disabled on this system" दिखाई देती है, तो आपको वर्तमान PowerShell एक्जीक्यूशन पॉलिसी बदलनी होगी और कम से कम वर्तमान सत्र के लिए बाहरी PS स्क्रिप्ट चलाने की अनुमति देनी होगी:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force
उपलब्ध मॉड्यूल cmdlets की सूची निम्न प्रकार से प्राप्त की जा सकती है:
Get-Command -Module DSInternals
Test-PasswordQuality Cmdlet से कमजोर एक्टिव डायरेक्टरी पासवर्ड ढूंढें
इसके बाद, आपको एक पासवर्ड डिक्शनरी बनाने की आवश्यकता है। यह सामान्यतः उपयोग किए जाने वाले, कमजोर और अन्य खराब पासवर्ड की सूची के साथ एक साधारण टेक्स्ट फ़ाइल होगी। आप इंटरनेट से पासवर्ड डिक्शनरी फ़ाइल डाउनलोड कर सकते हैं या स्वयं बना सकते हैं। DSInternal मॉड्यूल आपको एक्टिव डायरेक्टरी में अपने उपयोगकर्ताओं के पासवर्ड के हैश की तुलना इस फ़ाइल के शब्दों के हैश से करने की अनुमति देता है। पासवर्ड को टेक्स्ट फ़ाइल PasswordDict.txt में सहेजें।
अब एक छोटी PowerShell स्क्रिप्ट बनाएं। निम्न चरों में, पासवर्ड फ़ाइल का पथ, डोमेन नाम और डोमेन कंट्रोलर नाम निर्दिष्ट करें:
$DictFile = "C:\distr\PS\DSInternals\PasswordDict.txt"
$DC = "lon-dc01"
$Domain = "DC=woshub,DC=loc"
फिर Get-ADReplAccount cmdlet का उपयोग करके, AD में उपयोगकर्ताओं की सूची प्राप्त करें (Get-ADUser की तरह)। इसके अतिरिक्त, यह cmdlet उनके NT और LM हैश, साथ ही हैश इतिहास भी लौटाता है। फिर, प्रत्येक उपयोगकर्ता के लिए, पासवर्ड के हैश की तुलना डिक्शनरी फ़ाइल के हैश से करें (जांच अक्षम उपयोगकर्ता खातों के लिए भी की जाती है):
Get-ADReplAccount -All -Server $DC -NamingContext $Domain | Test-PasswordQuality -WeakPasswordsFile $DictFile -IncludeDisabledAccounts
स्क्रिप्ट चलाने का परिणाम इस तरह दिख सकता है:
Active Directory Password Quality Report ---------------------------------------- इन खातों के पासवर्ड प्रतिवर्ती एन्क्रिप्शन का उपयोग करके संग्रहीत हैं: इन खातों के पासवर्ड के LM हैश मौजूद हैं: इन खातों में कोई पासवर्ड सेट नहीं है: TEST\DefaultAccount TEST\Guest इन खातों के पासवर्ड डिक्शनरी में पाए गए हैं: TEST\a.adams TEST\jbrion TEST\jsanti इन खातों के समूहों में समान पासवर्ड हैं: समूह 1: TEST\a.novak TEST\Administrator TEST\amuller TEST\k.brown समूह 2: TEST\a.adams TEST\jbrion TEST\jsanti इन कंप्यूटर खातों में डिफ़ॉल्ट पासवर्ड हैं: इन खातों से Kerberos AES कुंजियाँ गायब हैं: इन खातों के लिए Kerberos प्री-ऑथेंटिकेशन आवश्यक नहीं है: इन खातों के साथ केवल DES एन्क्रिप्शन की अनुमति है: ये प्रशासनिक खाते किसी सेवा को सौंपे जाने की अनुमति है: TEST\a.adams TEST\a.novak TEST\Administrator TEST\jbrion TEST\jsanti TEST\k.brown TEST\krbtgt इन खातों के पासवर्ड कभी समाप्त नहीं होंगे: TEST\a.adams TEST\Administrator TEST\DefaultAccount TEST\Guest TEST\k.brown TEST\krbtgt TEST\web इन खातों को पासवर्ड की आवश्यकता नहीं है: TEST\ADFS1$ TEST\DefaultAccount TEST\Guest ये खाते जिन्हें स्मार्ट कार्ड प्रमाणीकरण की आवश्यकता है, उनके पास पासवर्ड है:
DSInternal मॉड्यूल के पिछले संस्करणों में, यदि डिक्शनरी में इसका हैश मिला तो उपयोगकर्ता का पासवर्ड क्लियर टेक्स्ट में प्रदर्शित करने के लिए ShowPlainText पैरामीटर उपलब्ध था। यह Test-PasswordQuality के वर्तमान रिलीज़ में गायब है। यदि आप DSInternals मॉड्यूल के पुराने संस्करण का उपयोग करना चाहते हैं, तो इसे निम्न कमांड से इंस्टॉल करें:
Install-Module -Name DSInternals -RequiredVersion 2.23
हैश खोज AD में संग्रहीत उपयोगकर्ता पासवर्ड इतिहास सहित की जाती है। जैसा कि आप देख सकते हैं, सरल पासवर्ड वाले AD उपयोगकर्ताओं को सफलतापूर्वक ढूंढा गया (पासवर्ड डिक्शनरी से मेल खाते हैं)। समान पासवर्ड वाले कई उपयोगकर्ता भी मिले। यह स्क्रिप्ट आपको कस्टम फाइन-ग्रेन्ड पासवर्ड पॉलिसी के अधीन सरल पासवर्ड वाले खातों को खोजने में मदद करेगी।
कमजोर पासवर्ड वाले उपयोगकर्ताओं के लिए, आप मजबूत रैंडम पासवर्ड जनरेट कर सकते हैं और PowerShell के माध्यम से AD में उन्हें बदलने के लिए बाध्य कर सकते हैं।
आप एक्टिव डायरेक्टरी डेटाबेस फ़ाइल (ntds.dit) का ऑफलाइन स्कैन भी कर सकते हैं। आप ntds.dit फ़ाइल की एक प्रति शैडो कॉपी या डोमेन कंट्रोलर बैकअप से प्राप्त कर सकते हैं।
ntds.dit फ़ाइल में उपयोगकर्ता हैश की ऑफलाइन जांच के लिए, निम्न कमांड का उपयोग करें:
$keyboot= Get-BootKey -SystemHiveFilePath 'C:\ADBackup\registry\SYSTEM'
Get-ADDBAccount -All -DatabasePath 'C:\ADBackup\ntds.dit -BootKey $keyboot | Test-PasswordQuality -WeakPasswordsFile $DictFile
आप सभी हैश की सूची को टेक्स्ट फ़ाइल में एक्सपोर्ट भी कर सकते हैं:
Get-ADDBAccount -All -DBPath 'C:\ADBackup\ntds.dit' -Bootkey $keyboot | Format-Custom -View HashcatNT | Out-File c:\ps\ad_hashes.txt -Encoding ASCII
एक्टिव डायरेक्टरी डोमेन सेवाओं के लिए खराब पासवर्ड की सूची सेट करने के लिए कोई अंतर्निहित उपकरण नहीं हैं। हालांकि, Azure AD पासवर्ड सुरक्षा के साथ, आप अपने ऑन-प्रिमाइसेस एक्टिव डायरेक्टरी में भी कुछ पासवर्ड (ब्लैकलिस्ट) को ब्लॉक कर सकते हैं।
इसलिए, इस परिदृश्य का उपयोग करके आप AD उपयोगकर्ता पासवर्ड की गुणवत्ता, ब्रूट फोर्स हमलों के खिलाफ उनका प्रतिरोध, वर्तमान डोमेन पासवर्ड पॉलिसी की जटिलता का विश्लेषण आसानी से कर सकते हैं और आवश्यक निष्कर्ष निकाल सकते हैं। एक्टिव डायरेक्टरी प्रशासक इस ऑडिट को नियमित रूप से कर सकते हैं (और करना चाहिए)।