
एक्सफिल्ट्रेशन क्षमताओं वाला DLL पासवर्ड फ़िल्टर इम्प्लांट
DLLPasswordFilterImplant एक कस्टम पासवर्ड फ़िल्टर DLL है जो उपयोगकर्ता की साख को कैप्चर करने की अनुमति देता है। डोमेन पर प्रत्येक पासवर्ड परिवर्तन घटना, सक्रिय निर्देशिका (AD) में सफलतापूर्वक बदलने से पहले उपयोगकर्ता नाम और नए पासवर्ड मान को बाहर निकालने (एक्सफ़िल्ट्रेट) के लिए पंजीकृत DLL को ट्रिगर करेगी।
पासवर्ड फ़िल्टर के बारे में अधिक जानकारी के लिए Microsoft दस्तावेज़ीकरण देखें।
लक्षित आर्किटेक्चर के लिए DLL बनाएँ। 32-बिट सिस्टम के लिए 32-बिट में और 64-बिट सिस्टम के लिए 64-बिट में संकलित करें।
DLL को Windows स्थापना निर्देशिका में कॉपी करें। (डिफ़ॉल्ट फ़ोल्डर: \Windows\System32)
निम्नलिखित रजिस्ट्री कुंजी को अपडेट करके पासवर्ड फ़िल्टर को पंजीकृत करें:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
यदि Notification Packages उपकुंजी मौजूद है, तो मौजूदा मान डेटा में DLL का नाम ("DLLPasswordFilterImplant" यदि आपने इसे नहीं बदला) जोड़ें। मौजूदा मानों को अधिलेखित न करें।
यदि उपकुंजी मौजूद नहीं है, तो इसे बनाएँ और मान डेटा में DLL का नाम ("DLLPasswordFilterImplant" यदि आपने इसे नहीं बदला) जोड़ें।
नोट: Notification Packages उपकुंजी में DLL का नाम जोड़ते समय .dll एक्सटेंशन शामिल न करें।
साख को एन्क्रिप्ट करने के लिए उपयोग किए जाने वाले सार्वजनिक कुंजी को कॉन्फ़िगर करें।
KEY=key.pem
# Generate an RSA key and dump its public key. Keep the private key around for decryption
openssl genrsa -out $KEY 2048
# Prepare the Windows registry key entry.
echo 'Windows Registry Editor Version 5.00' > addKey.reg
echo >> addKey.reg
echo '[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]' >> addKey.reg
# If python2 does not exist, use `python` instead.
echo "Key=hex:$(openssl rsa -in $KEY -pubout | sed -E '/^\-/d' | base64 -d | python2 -c 'import sys; print(",".join(["{:02x}".format(ord(b)) for b in sys.stdin.read()]))')" >> addKey.reg
फिर आप रॉ सार्वजनिक कुंजी को रजिस्ट्री में जोड़ने के लिए addKey.reg फ़ाइल चला सकते हैं।
ध्यान दें कि असममित एन्क्रिप्शन का उपयोग करने से संदेश पैडिंग के कारण एक्सफ़िल्ट्रेट किए जाने वाले डेटा का आकार काफी बढ़ जाता है। डेटा ओवरहेड को कम करने के लिए संभावित सुधार किए जा सकते हैं।
सिस्टम को पुनरारंभ करें स्रोत
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
एन्क्रिप्टेड डेटा OAEP का उपयोग करके पैड किया जाता है और इसे निम्नानुसार डिक्रिप्ट किया जा सकता है:
# Convert the stitched hex string to raw bytes.
xxd -r -p exfiltrated.hex > raw.bin
# Decrypt using the private key.
openssl rsautl -decrypt -oaep -inkey $KEY -in raw.bin -out decrypted.txt
सिस्टम से पासवर्ड फ़िल्टर को पूरी तरह से हटाने के लिए:
निम्नलिखित रजिस्ट्री कुंजी को अपडेट करके पासवर्ड फ़िल्टर को अपंजीकृत करें:
HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\Lsa
Notification Packages उपकुंजी में, मौजूदा मान डेटा से DLL का नाम हटाएँ। अन्य मौजूदा मान न हटाएँ।
सिस्टम को पुनरारंभ करें
Windows स्थापना निर्देशिका (डिफ़ॉल्ट फ़ोल्डर: \Windows\System32) में, पासवर्ड फ़िल्टर DLL ("DLLPasswordFilterImplant.DLL" यदि आपने इसे नहीं बदला) ढूँढें और फ़ाइल को हटा दें।
एक्सफ़िल्ट्रेट किए गए डेटा को प्राप्त करने के लिए एक सरल DNS सर्वर scripts/ में प्रदान किया गया है। अधिमानतः एक वर्चुअल वातावरण में pip install -r scripts/requirement.txt चलाएँ, और फिर इसे एक .PEM एन्कोडेड निजी कुंजी और वैकल्पिक आउटपुट फ़ाइल (डिफ़ॉल्ट रूप से creds.txt) प्रदान करें जहाँ साख को आउटपुट करना है।
वर्तमान में, DNS सर्वर समवर्ती पासवर्ड परिवर्तनों का समर्थन नहीं करता है और केवल एक अवधारणा प्रमाण के रूप में कार्य करता है। सर्वर में मजबूती जोड़ने वाले पुल रिक्वेस्ट का स्वागत है।
पर काम करता है:
पासवर्ड फ़िल्टर का परीक्षण केवल ऊपर सूचीबद्ध सिस्टम पर किया गया था।
यहाँ कुछ उपकरण दिए गए हैं जो DLL को डीबग करने में आपकी सहायता कर सकते हैं (यदि आवश्यक हो):