
المسمار الأخير في نعش JKS - اختراق كلمات المرور لمدخلات المفتاح الخاص في ملف JKS
مخزن مفاتيح جافا (JKS) هو طريقة جافا لتخزين مفتاح خاص أو عدة مفاتيح خاصة وعامة للتشفير غير المتماثل في ملف. بينما توجد تنسيقات مختلفة لمخازن المفاتيح، لا تزال جافا وأندرويد تستخدمان تنسيق ملف JKS كإعداد افتراضي. JKS هو أحد تنسيقات الملفات لمخازن مفاتيح جافا، ولكن يتم استخدام JKS بشكل مربك كاختصار لواجهة برمجة التطبيقات العامة لمخزن مفاتيح جافا أيضًا.
يتضمن هذا المشروع معلومات حول آليات الأمان لتنسيق ملف JKS وكيف يمكن كسر حماية كلمة المرور للمفتاح الخاص. بسبب التصميم غير المعتاد لـ JKS، يمكن للتطبيق المطور تجاهل كلمة مرور مخزن المفاتيح وكسر كلمة مرور المفتاح الخاص مباشرة. لأنه يتجاهل كلمة مرور مخزن المفاتيح، يمكن لهذا التطبيق مهاجمة كل تكوينات JKS، وهو ما لا ينطبق على معظم الأدوات الأخرى. من خلال استغلال ضعف في مخطط التشفير القائم على كلمة المرور للمفتاح الخاص في JKS، يمكن كسر كلمات المرور بكفاءة عالية جدًا. حتى الآن، لم تكن هناك أداة عامة متاحة تستغل هذا الضعف. تم تنفيذ هذه التقنية في hashcat لتعزيز كفاءة الخوارزمية بسرعات كسر أعلى على وحدات معالجة الرسومات (GPUs).
للحصول على الجزء النظري، يرجى الرجوع إلى مقالة POC||GTFO "15:12 مسمار في نعش مخزن مفاتيح جافا" في العدد 0x15 المضمن في هذا المستودع (pocorgtfo15.pdf) أو المتاحة على مرايا مختلفة مثل هذه المرآة الجميلة: https://unpack.debug.su/pocorgtfo/
قبل أن تسأل: تنسيقات JCEKS أو BKS أو أي تنسيق آخر لمخزن المفاتيح غير مدعومة (حتى الآن).
الإجابة هي بناء عتاد الكسر الخاص بك لها ;) . لكن دعنا نكون أكثر عملية قليلاً، لذا الإجابة هي استخدام وحدة معالجة الرسومات الخاصة بك:``` : _____________ : v3.6.0 ____________ _\ |_ /___ \ |____ _ / ______ | _ | __ \ / _ | /_ __ |/ | | | \ ___ / | | \ / \ | | || |__/ / /| |/: | |_:-aTZ!/_/ |: /__:
كل ما عليك فعله هو تشغيل الأمر التالي:```
java -jar JksPrivkPrepare.jar your_JKS_file.jks > hash.txt
إذا كان ملف hash.txt الخاص بك فارغًا، فهذا يعني إما أنه لا يوجد مفتاح خاص في ملف JKS، أو أنك حددت ملفًا ليس من نوع JKS.
ثم قم بتغذية ملف hash.txt إلى hashcat (الإصدار 3.6.0 وما فوق، ولكن إذا كنت تريد أن تكون في الجانب الآمن وتتأكد من قدرتك على كسر كلمات مرور طويلة جدًا، فيرجى استخدام الإصدار 4 على الأقل من hashcat!)، على سبيل المثال مثل هذا:
hashcat -m 16500 -a 0 -w 3 hash.txt /usr/share/wordlists/rockyou.txt
$ ./hashcat -m 15500 -a 3 -1 '?u|' -w 3 hash.txt ?1?1?1?1?1?1?1?1?1 hashcat (v3.6.0) starting...
Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable optimizers:
Watchdog: Temperature abort trigger set to 90c Watchdog: Temperature retain trigger set to 75c
$jksprivk$D1BC102EF5FE5F1A7ED6A63431767DD4E1569670...8test:POC||GTFO
Session..........: hashcat Status...........: Cracked Hash.Type........: JKS Java Key Store Private Keys (SHA1) Hash.Target......: $jksprivk$D1BC102EF5FE5F1A7ED6A63431767DD4E1569670...8test Time.Started.....: Tue May 30 17:41:58 2017 (8 mins, 25 secs) Time.Estimated...: Tue May 30 17:50:23 2017 (0 secs) Guess.Mask.......: ?1?1?1?1?1?1?1?1?1 [9] Guess.Charset....: -1 ?u|, -2 Undefined, -3 Undefined, -4 Undefined Guess.Queue......: 1/1 (100.00%) Speed.Dev.#1.....: 7946.6 MH/s (39.48ms) Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.........: 4014116700160/7625597484987 (52.64%) Rejected.........: 0/4014116700160 (0.00%) Restore.Point....: 5505024000/10460353203 (52.63%) Candidates.#1....: NNVGFSRFO -> Z|ZFVDUFO HWMon.Dev.#1.....: Temp: 75c Fan: 89% Util:100% Core:1936MHz Mem:4513MHz Bus:1
Started: Tue May 30 17:41:56 2017 Stopped: Tue May 30 17:50:24 2017
لذا من هذا المستودع تحتاج أساسًا فقط إلى ملف `JksPrivkPrepare.jar` لتشغيل جلسة فك التشفير.
# من تنسيق John The Ripper إلى تنسيق hashcat