"أسرار" DPAPI. انظروا الى الحمار

بالإضافة إلى مقالتنا الأخيرة حول فك تشفير النقط DPAPI ، سنتحدث عن حالتين أخريين كان علينا مواجهتهما. سيكون حول كلمات المرور المحفوظة في متصفحات MS IE11 و Edge.

تبقى الاستراتيجية كما هي - سنقوم بفك تشفير كل شيء في وضع عدم الاتصال. للقيام بذلك ، تحتاج إلى التقاط الملفات الضرورية.

وفقًا لنظام التشغيل (Windows 7 أو أعلى) ، يجب البحث عن كلمات المرور المحفوظة في مكانين:

في حالة نظام التشغيل Windows 7 ، يعد هذا فرع التسجيل

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 

لنظام التشغيل Windows 8 وما فوق ، تخزين Windows Vault.

تجدر الإشارة أيضًا إلى أنه في نظام التشغيل Windows 7 ، يتم أيضًا تخزين كلمات مرور التخويل الأساسية http في Windows Vault ، لذا فإن التقاطها لا يضر بأي حال.

حسنًا ، وفقًا للتقاليد القديمة الجيدة - كل هذا ، بالطبع ، يتم تشفيره من خلال آليات DPAPI.

الآن النظر في خوارزمية فك التشفير بمزيد من التفاصيل.

ويندوز 7 + IE11 (الحافة)


كما ذكر أعلاه ، يتم تخزين كلمات المرور في سجل المستخدم الحالي وتكون نقاط DPAPI مشفرة باستخدام المفتاح الرئيسي للمستخدم.

ولكن هناك فرق مهم - يتم استخدام إنتروبيا عند تشفير كلمة المرور. Entropy هو عنوان URL الذي تُدخل به كلمة المرور بالتنسيق ("https://url"+"\x00").lower().encode("utf-16-le") .

لفك تشفير كلمة المرور ، تحتاج إلى معرفة عنوان URL الكامل! لا شيء خلاف ذلك.

ولكن حتى يعرف IE نفسه كيفية فك تشفير كلمة المرور ، يتم تجزئة عنوان URL هذا وتخزينه في السجل كاسم مفتاح مع DPAPI-blob.

النظر في مثال صغير. بالنسبة إلى الموقع https://rdot.org/forum/ ستبدو كلمة المرور المحفوظة كما يلي:

 A88E21329B5372B856CE238B79D1F28D8EA1FD359D REG_BINARY 01000000D08C9DDF0115D1118C7A00C......BC310C51EE0F9B05D 

اين
A88 ... هو عنوان URL مجزأ https://rdot.org/forum/
01000000D08C ... - نقطة DPAPI تحتوي على اسم المستخدم وكلمة المرور

خوارزمية تجزئة عنوان URL واضحة ومباشرة. يمكن العثور على مزيد من المعلومات عنه في التطورات التي تستند إلى CIA في Vault7 .

في الثعبان ، يبدو مثل هذا:

 import hashlib url = "https://rdot.org/Forum/".lower() + "\x00" url_utf_16_le = url.encode("utf-16-le") sha1obj = hashlib.sha1(url_utf_16_le) urldigest = sha1obj.digest() checksum = 0 len(urldigest) for abyte in urldigest: checksum = (checksum + (ord(abyte))) & 0xFF hash = sha1obj.hexdigest().upper() cksum = "%02X" % checksum reg_value_name = "%s%s" % (hash, cksum) print reg_value_name 

يمكن أيضًا العثور على قائمة بأحدث 50 عنوان URL تم إدخالها في السجل:

  HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\typedurls 

دعنا نعود إلى المثال. افترض أننا بحاجة إلى العثور على كلمة المرور المحفوظة من https://rdot.org/forum/ في السجل.

استبدال قيمة عنوان URL في برنامج التحويل النصي - نحصل على القيمة

 A88E21329B5372B856CE238B79D1F28D8EA1FD359D 

المفتاح بهذا الاسم نحتاج أن نجده في السجل

 req query "HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2" 

إذا تم العثور على مثل هذا المفتاح ، فيجب نسخه إلى الملف على أنه قيم ست عشرية (أي ، تفسير قيمة المفتاح على أنه hex blob) وفك تشفيرها كـ DPAPI-blob باستخدام entropy: ("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")
("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")


بالنسبة لفك التشفير ، يمكنك استخدام dpapick ، ​​وإجراء التغييرات المناسبة لمراعاة إنتروبيا في فك التشفير.

في ملف الأمثلة / filegeneric.py ، استدعاء الوظيفة

  probe.try_decrypt_with_password(options.password, mkp, options.sid) 

استبدال مع

 probe.try_decrypt_with_password(options.password, mkp, options.sid, entropy=("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")) 

وبعد ذلك اتصل بـ dpapick كالمعتاد:

  ./filegeneric.py --sid <SID> --masterkey <mk dir> --password <..> --inputfile <dpapi blob from registry> 

إذا تم فك تشفير المفتاح الرئيسي بشكل صحيح ، فسيتلقى الإخراج اسم المستخدم وكلمة المرور المحفوظة (بعد قدر معين من البيانات الثنائية للخدمة).

ويندوز 8.1 وأعلى


في حالة حفظ كلمات المرور على Win8 وما فوق ، يتم تخزين كلمات المرور من نماذج http ، وكذلك التخويل الأساسي http ، في Windows Vault. وما هو جيد - إلى جانب كلمة المرور ، يتم حفظ عنوان URL الكامل للموقع الذي تقترب منه.

يتم تشفير Vault نفسه على مرحلتين - أولاً ، يتم تشفير كتلة البيانات بالكامل بواسطة AES ، ويتم تشفير المفتاح المتماثل لفك التشفير بواسطة DPAPI وحفظه في ملف. تم وصف خوارزمية التشفير وفك التشفير الكاملة في المقالة بواسطة رجال من Zena Forensics .

كما قاموا بتطوير برامج فك تشفير خاصة لـ Windows Vault استنادًا إلى dpapick (dpapilab). يمكنك اصطحابهم على بوابة ZF أو تنزيل شوكة من جيثب لدينا.

يقع تخزين Vault في ملف تعريف المستخدم:

 C:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\ 

داخل ملف .vpol يوجد نقطة DPAPI مشفرة باستخدام مفتاح مستخدم وتخزين مفتاح AES لفك تشفير .vcrd

لفك تشفير Vault ، يجب تشغيل:

 ./vaultdec.py --masterkey <mk dir> --sid <SID> --password <pass> <VAULT DIR> 

بدلاً من كلمة المرور ، يمكنك استخدام مفتاح مجال ، كما هو موضح في المقالة السابقة . تجدر الإشارة أيضًا إلى أنه إذا تم تضمين سياسة التجوال الدائمين في الجهاز في المجال ، فسيتم تخزين بيانات Windows Vault في ldap. يمكنك أن تقرأ عن هذا في مقالتنا الأولى حول DPAPI.

إضافة صغيرة: لكي يعمل البرنامج النصي بشكل صحيح ، ستحتاج على الأرجح إلى تثبيت روابط Python القديمة:

 apt install python-construct.legacy 

ورقة الغش


لفك تشفير كلمات المرور IE و Edge وكذلك كلمات المرور المخزنة في Windows ، يلزمك التقاط ما يلي:

دليل المدفن

 c:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\ 

كتالوج مع مفاتيح رئيسية

 c:\Users\<user>\AppData\roaming\microsoft\Protect\<SID>\ 

محتويات مفتاح التسجيل

 HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 HKEY_USERS>\<SID>\Software\Microsoft\Internet Explorer\typedurls 

بالإضافة إلى ذلك ، تحتاج إلى معرفة كلمة مرور المستخدم أو مفتاح النسخ الاحتياطي dpapi للمجال لفك التشفير بدون كلمة مرور.

Source: https://habr.com/ru/post/ar437390/


All Articles