هجوم القاموس Dictionary Attack
مقدمة
تعتمد عائلة من طرق اختراق الحسابات على تجريب كلمات سرّ Passwords مختلفة أملا بأن تكون أحداها الكلمة الصحيحة. من هذه الطرق، طريقة تخمين كلمات السرّ Passwords Guessing التي يقوم فيها المهاجم بتجريب كلمات سرّ يخمن أن الضحية قد يستخدمها. بالرغم من أن هذه الطريقة قد تنجح في بعض الأحيان إلا أنها تفشل في أغلبها، بالأخص عندما لا يعرف المهاجم أي شئ عن ضحيته. لذلك برزت طرق أكثر منهجية لتجريب كلمات السرّ مثل الهجوم الأعمى Brute Force Attack أو هجوم القاموس Dictionary Attack.
هجوم القاموس هو طريقة لمعرفة كلمة سرّ ما تعتمد على التجريب الممنهج لكلمات موجودة في لائحة تسمى القاموس Dictionary وتركيبات من هذه الكلمات، إلى أن تنجح إحدى الكلمات أو التركيبات وبالتالي يتم معرفة كلمة السرّ أو تفشل جميع الكلمات وجميع التركيبات ما يعني أن الهجوم قد فشل.
تعتمد طريقة الهجوم هذه إذا على:
- حجم القاموس المستخدم.أي عدد الكلمات الموجودة ضمنه
- جودة القاموس وهي تتعلق بنوع الكلمات الموجودة في اللائحة ومدى استخدامها ككلمات سرّ من قبل المستخدمين.
- خوارزمية تشكيل التركيبات من كلمات اللائحة
- جودة ونوع قواعد الاستبدال أي عمليات استبدال الأحرف بأرقام أو رموز أو استبدال الأحرف الصغيرة بأحرف كبيرة على الكلمات الموجودة في القاموس
- آلية تجريب كلمة السرّ
- سرعة الخوارزمية
- إمكانية تشغيل الخوارزمية بشكل متوازي Parallel على عدد من المعالجات
- إمكانية التحكم بالخوارزمية (إيقاف، متابعة)
القواميس Dictionaries
يعتمد نجاح هجوم القاموس بشكل كبير على القاموس المستخدم. ويقصد بالقاموس هنا لائحة بالكلمات التي يعتقد أن تستخدم لصياغة كلمات السرّ.
من الممكن استخدام قوائم الكلمات الموجودة في القواميس المعتادة التي تحتوي كلمات لغة معينة مثل قاموس أوكسفورد Oxford English Dictionary للغة الانجليزية. أو قاموس دودن Duden للغة الألمانية أو الـروبيرت Robert للغة الفرنسية.
لكن استخدام القواميس المعتادة له نقطة ضعف أساسية نذكر بعضها:
- عدد الكلمات المستخدمة في الحياة اليومية أقل بكثير من عدد الكلمات التي توجد في القواميس النظامية. مثلا يحتوي قاموس أوكسفورد Oxford English Dictionary حوالي 300000 كلمة انجليزية لكن 10000 منها تجد طريقها إلى الاستخدام اليومي. وتبين التسريبات أن كلمات السرّ تحتوي عادة كلمات مستخدمة في الحياة اليومية.
- القواميس النظامية لا تحتوي أسماء وتشير التسريبات إلى أن عددا كبيرا من كلمات السرّ يحتوي أسماء.
- قد تكون كلمة السرّ المراد كشفها كلمة من قاموس للغة غير القاموس المستخدم. كأن تكون كلمة السرّ كلمة اسبانية في حين أن القاموس المستخدم في هذا الهجوم قاموسا للغة الانجليزية.
لتلافي هذه المشاكل من المفيد استخدام قواميس (لوائح كلمات) معدة بهدف استخدامها في كشف كلمات السرّ. يجب في القاموس أن:
- يحتوي الكلمات المستخدمة في الحياة اليومية باللغات التي يتوقع أن تكون كلمة السرّ مكتوبة بها، مثلا إن كان صاحب كلمة السرّ فرنسيا فيجب أن يشمل القاموس كلمات فرنسية وربما انجليزية
- أن يحتوي أسماء علم منتشرة في بلد صاحب كلمة السرّ، بالإضافة لأسماء المدن والدول، والفرق الغنائية والممثلين والمشاهير وأسماء الأماكن الأثرية والأماكن المميزة في العالم.
- أن يحتوي على الكلمات العامية وغيرها من الكلمات التي لا توجد عادة في القاموس النظامي مثل كلمات السباب بمختلف أشكالها
- أن يحتوي على الكلمات التي تتضمن أخطاء بين الأخطاء إملائية شائعة
هناك الكثير من القواميس الجاهزة والتي أعدها الهواة أو الخبراء والتي يمكن استخدامها في هذا الهجوم. لكن أفضلها هي القواميس المبنية على تسريبات كلمات السرّ. ففي عدد لا بأس به من الحالات التي حصل فيها اختراق لمخدمات خدمة ما على الانترنت، قام المخترقون بنسخ سجلات المستخدمين بما في ذلك سجلات كلمات سرّ مهششة Hashed Passwords وقاموا باستخدام طرق مختلفة لكشف كلمات السرّ الأصلية مثل استخدام الهجوم الأعمى أو باستخدام هجوم القاموس بقاموس ما أو غيره. ثم وبعد ذلك قاموا بنشرها على العلن.
من هذه اللوائح لائحة RockYou الشهيرة التي نشرت عام 2009، ويمكن معاينة عدد من اللوائح في هذا الرابط: https://github.com/danielmiessler/SecLists/tree/master/Passwords
وفيما يلي لائحة لكلمات السرّ الخمس وعشرون الأولى الأكثر انتشارا لما نشر من الكلمات المتسربة عام 2018 من بحث بعنوان SplashData’s Top 100 Worst Passwords of 2018:
- 123456
- password
- 123456789
- 12345678
- 12345
- 111111
- 1234567
- sunshine
- qwerty
- iloveyou
- princess
- admin
- welcome
- 666666
- abc123
- football
- 123123
- monkey
- 654321
- !@#$%^&*
- charlie
- aa123456
- donald
- password1
- qwerty123
لاحظ أن الكلمات الأكثر انتشارا ليست كلمات سرّ جيدة ما يفسر حصول الكثير من الاختراقات على خدمات الانترنت المختلفة.
قواعد الاستبدال والتركيب Substitution and combination rules
يقصد بقواعد التركيب، القواعد التي تستخدمها الخوارزمية لانتاج تركيبات من الكلمات الموجودة في القاموس. ويقصد بقواعد الاستبدال، القواهد التي تستخدمها الخوازمية لانتاج كلمات جديدة انطلاقا من كلمات القاموس باستبدال أحرف من تلك الكلمات بأرقام أو رموز لانتاج كلمات جديدة.
قواعد الاستبدال
في كثير من الحالات تكون كلمة السرّ عبارة عن كلمة عادية استخدم فيها صاحبها الرقم 3 مكان الحرف e أو الرقم 0 مكان الحرف o. أو قد تكون استبدال حرف صغير بذات الحرف الكبير، مثلا:
- fr33dom
- freed0m
- freeDom
جميع هذه القواعد هي قواعد استبدال يمكن استخدامها واحدة تلو الأخرى أو يمكن مزجها كأن تستبدل 3 أحرف e وأن تستبدل 0 أحرف o وأن تكتب d بالحرف الكبير D:
- fr33D0m
قواعد التركيب
كثيرا ما تكون كلمات السرّ مكونة من كلمة ما يتبعها كلمة أخرى. مثلا syria-freedom أو syria-crazy-lover. إذا لكي تستطيع طريقة هجوم القاموس من كشف كلمة السرّ هذه يجب أن تكون الكلمة syria-freedom و syria-crazy-lover وغيرها من التركيبات الممكنة من كلمتين ومن ثلاثة كلمات موجودة ضمن اللائحة. لكن ذلك غير مجدي لأنه يجعل اللائحة طويلة جدا ويجعل تعديلها وإضافة كلمات إليها عملية مضنية. لذلك جاءت قواعد التركيب لحل هذه المشكلة.
تحدد قواعد التركيب الطريقة التي تقوم بها خوارزمية انتاج التركيبات فعلى فرض احتوى القاموس على 3 كلمات فقط بقصد التبسيط وهي:
- syria
- freedom
- lover
وكانت القاعدة هي: الكلمة الأولى متبوعة برمز ناقص ثم الكلمة الثانية أي: <word_1>-<word_2> تنتج الخوارزمية التركيبات التالية:
- syria-syria
- syria-freedom
- syria-lover
- freedom-syria
- freedom-freedom
- freedom-lover
- lover-syria
- lover-freedome
- lover-lover
ويمكن أن تكون القاعدة هي الكلمة الأولى متبوعة بالكلمة الثانية بدون فاصل أو رمز بينهما. ويمكن استخدام عدد من القواعد واحدة تلو الأخرى للمرور على جميع الاحتمالات الممكمة لتركيب الكلمات من القاموس.
الخوارزمية
نذكر فيما يلي الخوارزمية الأساسية لهجوم قاموس يقوم فقط بتجريب الكلمات في القاموس بدون قواعد التركيب أوالاستبدال ثم نذكر الخوارزنية التي تدعم قواعد الاستبدال ونترك لكم تصميم بخوارزمية تدعم كلا من قواعد الاستبدال والتركيب.
الخوارزمية الأساسية
- قم بتحميل الكلمة التالية من القاموس
- قم بمحاولة استخدام الكلمة لمعرفة إن كانت هي الكلمة الصحيحة
- في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
- في حال لم تنته لائحة الكلمات تابع من الخطوة 1
- في حالة انتهاء اللائحة أظهر رسالة فشل الهجوم وتوقف
الخوارزمية مع استخدام قواعد الاستبدال
- قم بتحميل قواعد الاستبدال
- قم بتحميل الكلمة التالية من القاموس
- قم بمحاولة استخدام الكلمة لمعرفة إن كانت هي الكلمة الصحيحة
- في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
- قم بتطبيق قاعدة الاستبدال التالية على الكلمة الحالية
- قم بمحاولة استخدام الكلمة بعد الاستبدال لمعرفة إن كانت هي الكلمة الصحيحة
- في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
- في حال لم تنته جميع قواعد الاستبدال تابع من الخطوة 5
- في حال لم تنته لائحة الكلمات تابع من الخطوة 2
- في حالة انتهاء اللائحة أظهر رسالة فشل الهجوم وتوقف
توليد القواميس مخصصّة Generating Custom Dictionary
القاموس، في هذا السياق، هو عبارة عن ملف نصي يحتوي على كلمة في كل سطر.
إذا يكفي لتوليد قاموس مخصصّ فتح أداة لتحرير الملفات، والمباشرة بكتابة كلمات بحيث تحتوي أسطر الملف على كلمة واحدة فقط. مثلا يمكن توليد قاموس مخصص يتضمن أسماء دول العالم، عبر كتابتها ضمن الملف بحيث يصبح في النهاية لدينا قاموس يتضمن كل أسماء دول العالم
ويمكن أيضا دمج القواميس عبر نسخ محتوى قاموس ما ولصقه في نهاية قاموس آخر. فلو كان لدينا قاموس لأسماء دول العالم، وآخر لأسماء العواصم وثالث لأسماء المدن والبلدات حول العالم، يمكننا عبر دمج القواميس توليد قاموس يتضمن جميع هذه الكلمات. لاحظوا أنه قد تتكرر كلمة ما في قاموسين قبل دمجهما. إذا علينا إزالة الكلمات المذكورة أكثر من مرة ضمن الملف النهائي بحيث يذكر الملف النهائي كل كلمة مرة واحدة فقط. يمكن القيام بذلك باستخدام أدوات مثل برنامج uniq الذي يقوم بمقارنة كل سطر بالسطر الذي يليه فإن تكرر السطر يقوم البرنامج بحذفه. لذلك يجب ترتيب أسطر الملف قبل استخدام هذا البرنامج باستخدام أداة مثل sort.
sort file.log | uniq -u
هذه الفقرة ما تزال قيد الانشاء
- cupp
- crunch
- pydictor
https://github.com/topics/wordlist-generator
برامج كشف كلمات السرّ Password Cracking Software
مقدمة
<onlyinclude> منذ ظهور كلمات السرّ، وظهور فكرة وخوارزميات هجوم القاموس قام العديد من المطورين والمخترقين بتطوير برامج كشف كلمات السرّ Password Cracking Software سواء لغرض خبيث كالاختراق والسرقة وانتحال الشخصية والتطفل أو لغرض حميد مثل استعادة كلمة سرّ فقدت أو نسيها صاحبها.
تقوم هذه البرامج بشكل أساسي بتوليد التركيبات بداية من القاموس الذي يزوده مستخدم البرنامج. بينما يقوم برنامج آخر بمحاولة أو تجريب هذه التركيبات لمعرفة إن كان أحدها هو كلمة السرّ الصحيحة المراد كشفها. وقد تدمج بعض البرامج المهمتين في برنامج واحد لتسريع العملية.
الهجمات الالكترونية الخبيثة Malicious Cyber Attacks
اقرأ أيضا See Also
هاشات كلمات السرّ Password Hashes
تخمين كلمات السرّ Passwords Guessing
الهجوم الأعمى Brute Force Attack
هجوم القاموس Dictionary Attack
هجوم قوس قزح Rainbow Tables Attack
اصطياد كلمات السرّ Passwords Phishing
تسجيل نقرات المفاتيح Keystroke Logging
برامج تجريب كلمات السرّ Password Testing Software
مراجع References
موقع OpenWall المالك لتطبيق John the Ripper
برامج تجريب كلمات السرّ Password Testing Software
مقدمة
<onlyinclude> برامج تجريب كلمات السرّ Password Testing Software هي برامج طُوِّرَت بهدف كشفِ كلمة سرّ Password لحساب ما على منصة ما عبر محاولة تسجيل الدخول مرارا باستخدام اسم مستخدم مَعْلوم وكلمة سرّ يحضرها البرنامج مع كل محاولة فاشلة حتى تنجح عملية تسجيل الدخول وتكون كلمة السرّ تلك التي انتجها البرنامج مع المحاولة الناجحة.
تشبه هذه البرامج برامج كشف كلمات السرّ Password Cracking Software في أنها تقوم بإنشاء تراكيب من كلمات السرّ، وفي أنها أيضا تعتمد على القواميس Dictionaries. لكنها تختلف عن برامج كشف كلمات السرّ في أنها لا تحاول مقارنة الهاش Hash بكلمة السرّ التي يتم تجريبها بالهاش الخاص بكلمة السرّ المُراد كشفها. وإنما تقوم هذه البرامج بطلب تسجيل الدخول إلى موقع أو خدمة ما. فإنْ قُوبِلَ طلب تسجيل الدخول بالرفض، يقوم البرنامج بمحاولة تسجيل الدخول بكلمة سرّ مختلفة حسب قاعدة توليد كلمات السرّ المستخدمة في الهجوم، وهكذا حتى يصادف طلب تسجيل الدخول النجاح.
لهذه البرامج استخدام حميد وهو استعادة كلمات السرّ في حال نسيانها، وفحص مستوى أمان كلمات السرّ لخدمة ما على الإنترنت بعد الاتفاق مع الجهة وراء الخدمة، وبمعرفتها. وبالطبع لأي أداة استخدامات خبيثة تعتبر عادة من الجرائم الإلكترونية وتعاقب عليها القوانين في أغلب دول العالم، كاختراق حسابات المستخدمين على مواقع الإنترنت، واختراق حسابات مدراء صفحات ومواقع الإنترنت.
بالطبع تقوم مواقع وخدمات الإنترنت بالتصدي لهذه الهجمات بأساليب مختلفة، من بينها:
- عبر استخدام تقنيات التحليل الجنائي الرقمي Digital Forensics التي تمكّن المواقع من تحديد مصدر الهجمات بهدف ملاحقتهم قضائيا. ما يشكل رادعا قويا خاصة في الدولة حيث تسود سلطة القانون.
- منع الطلبات الصادرة عن عنوان IP محدد لفترة زمنية محددة بعد تكرار فشل تسجيل الدخول، فذلك يدل على محاولة خبيثة لتسجيل الدخول ربما باستخدام هذه البرنامج. من بين البرامج التي تقوم بهذه المهمة برنامج fail2ban على نظام التشغيل لينوكس Linux.
- استخدام الكاپتشا CAPCHA وهي طريقة لمنع الأنظمة المؤتمتة (غير الواعية) من إرسال طلبات مؤتمة لخدمة ما على الإنترنت. فإن تكررت محاولة برامج كشف كلمات السرّ لتسجيل الدخول باستخدام اسم المستخدم نفسه مثلا في كل محاولة، يقوم الموقع بإضافة خانة الكاپتشا CAPCHA إلى صفحة تسجيل الدخول، ما يعني منع البرامج المؤتمتة (غير الواعية) من إمكانية متابعة تسجيل الدخول
الهجمات الالكترونية الخبيثة Malicious Cyber Attacks
اقرأ أيضا See Also
تخمين كلمات السرّ Passwords Guessing
الهجوم الأعمى Brute Force Attack
هجوم القاموس Dictionary Attack
اصطياد كلمات السرّ Passwords Phishing
تسجيل نقرات المفاتيح Keystroke Logging
برامج كشف كلمات السرّ Password Cracking Software
الهجمات الالكترونية الخبيثة Malicious Cyber Attacks
اقرأ أيضا See Also
تخمين كلمات السرّ Passwords Guessing
الهجوم الأعمى Brute Force Attack
هجوم القاموس Dictionary Attack
اصطياد كلمات السرّ Passwords Phishing
برامج تسجيل المفاتيح Keystroke Loggers
برامج كشف كلمات السرّ Password Cracking Software
برامج تجريب كلمات السرّ Password Testing Software