
مُخمِّن كلمات المرور القائم على نموذج Markov بلغة C الذي يُعدِّد المرشحين حسب الاحتمالية، مُولِّدًا كلمات المرور الأكثر ترجيحًا أولاً لكسر التجزئة عبر Hashcat أو John.
OMEN هو مُخمِّن كلمات مرور قائم على نموذج ماركوف مكتوب بلغة C. يُولِّد مرشَّحات كلمات المرور وفقًا لاحتمالات ظهورها، أي أنه يُخرِج كلمات المرور الأكثر ترجيحًا أولًا. يُحسِّن OMEN سرعة التخمين بشكل ملحوظ مقارنةً بالمقترحات الحالية. إذا كنت مهتمًا بالتفاصيل حول كيفية تحسين OMEN لأساليب تخمين كلمات المرور القائمة على نموذج ماركوف، يُرجى الرجوع إلى OMEN: Faster Password Guessing Using an Ordered Markov Enumerator.
يتكوَّن OMEN من وحدتَي برنامج منفصلتين: createNG وenumNG. يحسب createNG
احتمالات n-gram بناءً على قائمة كلمات مرور مُعطاة ويخزِّنها
على القرص الصلب. بناءً على هذه الاحتمالات يُعدِّد enumNG كلمات مرور
جديدة بالترتيب الصحيح (تنازليًا).
استخدم إصدار Linux حديثًا وتأكَّد من تثبيت git (نظام التحكم في الإصدارات Git)، وgcc (مجموعة مُترجِمات GNU)، وmake (GNU Make). يمكنك تثبيتها على Ubuntu Linux عبر:
$ sudo apt-get install build-essential git
استنسخ الشيفرة المصدرية عبر:
$ git clone https://github.com/RUB-SysSec/OMEN.git OMEN
انتقل إلى الدليل المُنشأ حديثًا OMEN ونفِّذ:
$ make
إذا نجح الترجمة، يمكنك العثور على createNG وenumNG داخل الدليل الحالي.
.
├── alphabetCreator
├── createNG
├── docs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ └── screenshots
├── enumNG
├── evalPW
├── makefile
├── README.md
└── src
├── alphabetCreator.c
...
إذا أردت، يمكنك الآن حذف مجلد src وملف makefile، إذ لم يعد هناك حاجة إليهما.
يمكن العثور على دليل تثبيت مختصر باستخدام Cygwin على Windows 10 هنا.
قبل أن يتمكَّن المرء من توليد أي كلمات مرور، يجب تقدير احتمالات n-gram باستخدام
createNG. لحساب الاحتمالات باستخدام الإعدادات الافتراضية، يجب استدعاء createNG
مع إعطائه مسارًا إلى قائمة كلمات المرور التي ينبغي تدريبها:
$ ./createNG --iPwdList password-training-list.txt
يجب أن تكون كل كلمة مرور في القائمة المُعطاة في سطر جديد. تقرأ الوحدة بعد ذلك
القائمة وتُقيِّمها مُولِّدةً مجموعة من الملفات. إلى جانب ملف الإعدادات (createConfig) الذي يخزِّن الإعدادات المستخدمة (في هذه الحالة الإعداد الافتراضي)، تُنشأ عدة ملفات تحتوي على معلومات حول الـ grams وطول كلمة المرور. تحمل هذه الملفات الامتداد '.level':
تُربَط احتمالات كل n-gram والأطوال بمستويات بين 0
(الأكثر ترجيحًا) و10 (الأقل ترجيحًا). بمجرد إنشاء هذه الملفات، يمكن استخدام enumNG
لتوليد قائمة كلمات مرور مرتَّبة حسب الاحتمالات. حاليًا، يدعم enumNG ثلاثة أنماط للتشغيل: file، وstdout، وsimulated plaintext attack. في النمط الافتراضي لـ enumNG، تُنشأ قائمة تخمينات كلمات المرور بناءً على هذه المستويات. باستخدام الأمر
$ ./enumNG
يُولِّد مليار كلمة مرور ويخزِّنها في ملف نصي، يمكن العثور عليه
في مجلد 'results'. كلمات المرور في هذا الملف مرتَّبة حسب المستوى (أي حسب
الاحتمال). نظرًا لأن محرِّرات النصوص الشائعة غير قادرة على التعامل مع مثل هذه الملفات الضخمة،
يُوصى لأغراض الاختبار بتقليل عدد كلمات المرور المُولَّدة. يمكن
فعل ذلك باستخدام الوسيط -m.
$ ./enumNG -m 10000
سيُنشئ قائمة مرتَّبة تحتوي على 10,000 كلمة مرور فقط. إذا كنت مهتمًا بطباعة كلمات المرور إلى مجرى الإخراج القياسي (stdout)، استخدم الوسيط -p.
$ ./enumNG -p -m 10000
إذا كنت مهتمًا بتقييم أداء التخمين مقابل مجموعة اختبار كلمات مرور plaintext، استخدم الوسيط -s. يُرجى ملاحظة: في هذا النمط يستفيد OMEN من خوارزمية جدولة الطول التكيفية التي تُدمِج التغذية الراجعة الحية، وهي غير متاحة (بسبب قناة التغذية الراجعة المفقودة) في نمطَي file وstdout.
$ ./enumNG -s=password-testing-list.txt -m 10000
يمكن العثور على نتيجة هذا التقييم في مجلد 'results'.
تُوفِّر كلتا الوحدتين حوار مساعدة يمكن عرضه باستخدام الوسيط -h أو --help.
كيف تنتقل من $2a$10$HNYF4KajSTqxIP/KoiB5tOCVeKUgvscTh32hhAmppFk4T/USmI2B. إلى "GoodOMEN!123"؟
طُوِّر OMEN من أجل حالات الاستخدام الأكاديمية مثل تحسين النمذجة الاحتمالية لكلمات المرور، وتقدير أعداد التخمينات أو قوة كلمة المرور، وبشكل عام، لتحسين أمن كلمات المرور. لا تُسِئ استخدام هذا البرنامج للإضرار بخصوصية الآخرين أو لخرق القانون.
يدعم مُقيِّمو التجزئة الشائعون مثل Hashcat وJohn the Ripper مئات من صيغ التجزئة والتشفير ويمكن دمجهم بسهولة نظرًا لدعمهم قراءة مرشَّحات كلمات المرور عبر مجرى الإدخال القياسي (stdin).
$ ./enumNG -p -m 10000 | ./hashcat64.bin ...
أو
$ ./enumNG -p -m 10000 | ./john --stdin ...
للحصول على أداء تخمين مثالي، فكِّر في تدريب createNG بتوزيع كلمات مرور مشابه للتوزيع الذي ترغب في كسره.
يُرجى ملاحظة: استخدام النمذجة الاحتمالية لكلمات المرور لكسر كلمات المرور، بشكل عام، ينبغي أن يُؤخذ في الاعتبار فقط ضد التجزئات البطيئة (مثل bcrypt، وPBKDF2، وscrypt، أو Argon2) حيث يكون عدد التخمينات الممكنة محدودًا أو في الهجمات الموجَّهة جدًا. في المقابل، بالنسبة للتجزئات السريعة جدًا (MD5، وSHA-1، أو NTLM)، فإن استخدام قواميس جيدة وقواعد التعديل (مثل best64.rule) هو السبيل الأمثل.
إذا كنت مهتمًا بهذا الموضوع، فكِّر في قراءة الأوراق البحثية التالية وأعمالها ذات الصلة (هذه القائمة غير مكتملة، يمكنك المساعدة بتوسيعها):
القواعد النحوية الاحتمالية الخالية من السياق
نماذج ماركوف
الشبكات العصبية
الهجينة
مقارنة الأساليب