هجوم القاموس Dictionary Attack

من SalamaTech Wiki سلامتك ويكي
اذهب إلى التنقل اذهب إلى البحث

مقدمة

تعتمد عائلة من طرق اختراق الحسابات على تجريب كلمات سرّ 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:

  1. 123456
  2. password
  3. 123456789
  4. 12345678
  5. 12345
  6. 111111
  7. 1234567
  8. sunshine
  9. qwerty
  10. iloveyou
  11. princess
  12. admin
  13. welcome
  14. 666666
  15. abc123
  16. football
  17. 123123
  18. monkey
  19. 654321
  20. !@#$%^&*
  21. charlie
  22. aa123456
  23. donald
  24. password1
  25. 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 كلمات فقط بقصد التبسيط وهي:

  1. syria
  2. freedom
  3. lover

وكانت القاعدة هي: الكلمة الأولى متبوعة برمز ناقص ثم الكلمة الثانية أي: <word_1>-<word_2> تنتج الخوارزمية التركيبات التالية:

  1. syria-syria
  2. syria-freedom
  3. syria-lover
  4. freedom-syria
  5. freedom-freedom
  6. freedom-lover
  7. lover-syria
  8. lover-freedome
  9. lover-lover

ويمكن أن تكون القاعدة هي الكلمة الأولى متبوعة بالكلمة الثانية بدون فاصل أو رمز بينهما. ويمكن استخدام عدد من القواعد واحدة تلو الأخرى للمرور على جميع الاحتمالات الممكمة لتركيب الكلمات من القاموس.

الخوارزمية

نذكر فيما يلي الخوارزمية الأساسية لهجوم قاموس يقوم فقط بتجريب الكلمات في القاموس بدون قواعد التركيب أوالاستبدال ثم نذكر الخوارزنية التي تدعم قواعد الاستبدال ونترك لكم تصميم بخوارزمية تدعم كلا من قواعد الاستبدال والتركيب.

الخوارزمية الأساسية

  1. قم بتحميل الكلمة التالية من القاموس
  2. قم بمحاولة استخدام الكلمة لمعرفة إن كانت هي الكلمة الصحيحة
  3. في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
  4. في حال لم تنته لائحة الكلمات تابع من الخطوة 1
  5. في حالة انتهاء اللائحة أظهر رسالة فشل الهجوم وتوقف

الخوارزمية مع استخدام قواعد الاستبدال

  1. قم بتحميل قواعد الاستبدال
  2. قم بتحميل الكلمة التالية من القاموس
  3. قم بمحاولة استخدام الكلمة لمعرفة إن كانت هي الكلمة الصحيحة
  4. في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
  5. قم بتطبيق قاعدة الاستبدال التالية على الكلمة الحالية
  6. قم بمحاولة استخدام الكلمة بعد الاستبدال لمعرفة إن كانت هي الكلمة الصحيحة
  7. في حال كانت الكلمة الحالية هي الكلمة الصحيحة أظهر الكلمة الناجحة على الشاشة وتوقف
  8. في حال لم تنته جميع قواعد الاستبدال تابع من الخطوة 5
  9. في حال لم تنته لائحة الكلمات تابع من الخطوة 2
  10. في حالة انتهاء اللائحة أظهر رسالة فشل الهجوم وتوقف

توليد القواميس مخصصّة Generating Custom Dictionary

القاموس، في هذا السياق، هو عبارة عن ملف نصي يحتوي على كلمة في كل سطر.

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

ويمكن أيضا دمج القواميس عبر نسخ محتوى قاموس ما ولصقه في نهاية قاموس آخر. فلو كان لدينا قاموس لأسماء دول العالم، وآخر لأسماء العواصم وثالث لأسماء المدن والبلدات حول العالم، يمكننا عبر دمج القواميس توليد قاموس يتضمن جميع هذه الكلمات. لاحظوا أنه قد تتكرر كلمة ما في قاموسين قبل دمجهما. إذا علينا إزالة الكلمات المذكورة أكثر من مرة ضمن الملف النهائي بحيث يذكر الملف النهائي كل كلمة مرة واحدة فقط. يمكن القيام بذلك باستخدام أدوات مثل برنامج uniq الذي يقوم بمقارنة كل سطر بالسطر الذي يليه فإن تكرر السطر يقوم البرنامج بحذفه. لذلك يجب ترتيب أسطر الملف قبل استخدام هذا البرنامج باستخدام أداة مثل sort.

sort file.log | uniq -u

Under Construction Non Commercial Reuse White Blue.png

هذه الفقرة ما تزال قيد الانشاء

  • cupp
  • crunch
  • pydictor

https://github.com/topics/wordlist-generator

برامج كشف كلمات السرّ Password Cracking Software

منذ ظهور كلمات السرّ، وظهور فكرة وخوارزميات هجوم القاموس قام العديد من المطورين والمخترقين بتطوير برامج كشف كلمات السرّ Password Cracking Software سواء لغرض خبيث كالاختراق والسرقة وانتحال الشخصية والتطفل أو لغرض حميد مثل استعادة كلمة سرّ فقدت أو نسيها صاحبها.

تقوم هذه البرامج بشكل أساسي بتوليد التركيبات بداية من القاموس الذي يزوده مستخدم البرنامج. بينما يقوم برنامج آخر بمحاولة أو تجريب هذه التركيبات لمعرفة إن كان أحدها هو كلمة السرّ الصحيحة المراد كشفها. وقد تدمج بعض البرامج المهمتين في برنامج واحد لتسريع العملية.

وفيما يلي أمثلة عن أشهر هذه البرامج:

Hashcat

Hashcat logo.png

هاش كات Hashcat برنامج لاستعادة أو كشف كلمات السرّ يعمل على منصات ويندوز Windows، لينوكس Linux، وماك أو إس إكس Mac OS X. ويعمل على وحدات المعالجة المركزية CPUs الخاصة بالجهاز أو على وحدات المعالجة الرسومات GPUs وهو لذلك من أسرع البرامج المستخدمة لكشف واستعادة كلمات السرّ.

يدعم هذا البرنامج عددا من طرق استعادة كلمات السرّ منها الهجوم الأعمى Brute Force Attack وهجوم القاموس Dictionary Attack وهجوم القناع Mask Attack وهجوم البصمة Fingerprint Attack

يستطيع أيضا البرنامج تجريب كلمات السر عبر مقارنة الهاش Hash الخاصة بكلمة السرّ المجربة مع الهاش Hash الخاصة بكلمة السرّ المستهدفة. ويدعم البرنامج مجموعة من خوارزميات الهاشينغ Hashing منها MD4 Hash، MD5 Hash، SHA-1 Hash، MySQL Hash، Microsoft LM Hashes، Cisco PIX Hashes وغيرها.

للمزيد قوموا بزيارة موقع https://hashcat.net/hashcat/.

John the Ripper

John the Ripper logo.png

جون السفاح John the Ripper برنامج لكشف واستعادة كلمات السرّ يستطيع استخدام الهجوم الأعمى Brute Force Attack وهجوم القاموس Dictionary Attack وهجوم القناع Mask Attack لتوليد التركيبات. صمم أساسا لاستعادة كلمات السرّ المخزنة في سجل مسخدمي نظام التشغيل Unix وقريبه Linux.

يستطيع البرنامج تجريب التركيبات عبر مقارنة الهاش الخاصة بالتركيبات الناتجة ممع الهاش الخاصة بكلمة السرّ المستهدفة ويدعم البرنامج مجموعة من خوارزميات الهاشينغ Hashing أهمها الخوارزميات الخاصة بحفظ كلمات السرّ على نسخ نظام التشغيل يونيك Unix ونكهات نظام التشغيل لينوكس Linux المختلفة ,والمبنية على DES MD5 و Blowfish، وأيضا خوارزميات Kerberos AFS و Windows LM Hash وعبر عدد من الإضافات MD4 و LDAP وMySQL وغيرها.

Cain and Abel

Cain and Abel logo.png

قابيل وهابيل Cain and برنامج لكشف واستعادة كلمات السرّ مصمم لنظام التشغيل ويندوز Windows يسمى اختصارا Cain. يستطيع Cain استعادة وكشف كلمات السرّ عبر استخدام عدة طرق منها packets sniffing والهجوم الأعمى Brute Force Attack وهجوم القاموس Dictionary Attack وكذلك عبر التحليل الكريبتوغرافي Cryptoanalytis باستخدام ما يسمى هجوم قوس قزح Rainbow Tables Attack.

برامج تجريب كلمات السرّ Password Testing Software

برامج تجريب كلمات السرّ Password Testing Software هي برامج طُوِّرَت بهدف كشفِ كلمة سرّ Password لحساب ما على منصة ما عبر محاولة تسجيل الدخول مرارا باستخدام اسم مستخدم مَعْلوم وكلمة سرّ يحضرها البرنامج مع كل محاولة فاشلة حتى تنجح عملية تسجيل الدخول وتكون كلمة السرّ تلك التي انتجها البرنامج مع المحاولة الناجحة.

تشبه هذه البرامج برامج كشف كلمات السرّ Password Cracking Software في أنها تقوم بإنشاء تراكيب من كلمات السرّ، وفي أنها أيضا تعتمد على القواميس Dictionaries. لكنها تختلف عن برامج كشف كلمات السرّ في أنها لا تحاول مقارنة الهاش Hash بكلمة السرّ التي يتم تجريبها بالهاش الخاص بكلمة السرّ المُراد كشفها. وإنما تقوم هذه البرامج بطلب تسجيل الدخول إلى موقع أو خدمة ما. فإنْ قُوبِلَ طلب تسجيل الدخول بالرفض، يقوم البرنامج بمحاولة تسجيل الدخول بكلمة سرّ مختلفة حسب قاعدة توليد كلمات السرّ المستخدمة في الهجوم، وهكذا حتى يصادف طلب تسجيل الدخول النجاح.

لهذه البرامج استخدام حميد وهو استعادة كلمات السرّ في حال نسيانها، وفحص مستوى أمان كلمات السرّ لخدمة ما على الإنترنت بعد الاتفاق مع الجهة وراء الخدمة، وبمعرفتها. وبالطبع لأي أداة استخدامات خبيثة تعتبر عادة من الجرائم الإلكترونية وتعاقب عليها القوانين في أغلب دول العالم، كاختراق حسابات المستخدمين على مواقع الإنترنت، واختراق حسابات مدراء صفحات ومواقع الإنترنت.

بالطبع تقوم مواقع وخدمات الإنترنت بالتصدي لهذه الهجمات بأساليب مختلفة، من بينها:

  • عبر استخدام تقنيات التحليل الجنائي الرقمي Digital Forensics التي تمكّن المواقع من تحديد مصدر الهجمات بهدف ملاحقتهم قضائيا. ما يشكل رادعا قويا خاصة في الدولة حيث تسود سلطة القانون.
  • منع الطلبات الصادرة عن عنوان IP محدد لفترة زمنية محددة بعد تكرار فشل تسجيل الدخول، فذلك يدل على محاولة خبيثة لتسجيل الدخول ربما باستخدام هذه البرنامج. من بين البرامج التي تقوم بهذه المهمة برنامج fail2ban على نظام التشغيل لينوكس Linux.
  • استخدام الكاپتشا CAPCHA وهي طريقة لمنع الأنظمة المؤتمتة (غير الواعية) من إرسال طلبات مؤتمة لخدمة ما على الإنترنت. فإن تكررت محاولة برامج كشف كلمات السرّ لتسجيل الدخول باستخدام اسم المستخدم نفسه مثلا في كل محاولة، يقوم الموقع بإضافة خانة الكاپتشا CAPCHA إلى صفحة تسجيل الدخول، ما يعني منع البرامج المؤتمتة (غير الواعية) من إمكانية متابعة تسجيل الدخول

وفيما يلي أمثلة عن أشهر هذه البرامج:

Brutus

Brutus-Password-Cracker-Download-brutus-aet2.zip-AET2.jpg

برنامج بروتوس Brutus أداة تعمل على نظام التشغيل ويندوز Windows، تستخدم لتجريب كلمات السرّ وتدعم تجريبها خدمات متعددة من خدمات الإنترنت منها:

  • HTTP basic authentication
  • تسجيل الدخول عبر HTML Form
  • فتح صندوق البريد الوارد عبر بروتوكول POP3
  • تسجيل الدخول عبر بروتوكول FTP

وغيرها.

WFuzz

Wfuzz.png

أداة ومكتبة برمجية مكتوبة بلغة البرمجة Python3 تعمل بالتالي على جميع أنظمة التشغيل التي يدعمها Python. وتستخدم لتجريب كلمات السرّ بالإضافة لفحص الثغرات في المواقع، كالثغرات التي تسمح بـ SQL Injection وغيرها، كما يمكن استخدامها لتجريب كلمات السرّ، ومن ميزاتها الهامة دعم تجريب كلمات السرّ بشكل متوازي وموزع عبر عدة بروكسيات Proxies

https://wfuzz.readthedocs.io/en/latest/

THC HYDRA

THC HYDRA برنامج لتجريب كلمات السرّ مفتوح المصدر، يمكن بسهولة إضافة قدرات له، يدعم تجريب كلمات السرّ عبر أكثر بروتوكولات الإنترنت (طبقة التطبيقات) أهمية مثل SSH، HTTP، IMAP، FTP، SMB، POP3، VNC، SVN rlogin، PostgreSQL، MySQL، MS SQL، pcAnywhere، Cisco AAAA، Cisco auth، Cisco enable، Oracle Listener، Oracle SID، Oracle، SOCKS5 وغيرها. https://github.com/vanhauser-thc/thc-hydra

MEDUSA

ميدوسا Medusa برنامج لتجريب كلمات السرّ له ميزات عديدة ويدعم تجريب كلمات السر عبر أكثر بروتوكولات الإنترنت (طبقة التطبيقات) أهمية مثل SSH، HTTP، IMAP، FTP، SMB، POP3، VNC، SVN rlogin، PostgreSQL، MySQL، MS SQL، pcAnywhere وغيرها.

http://foofus.net/goons/jmk/medusa/medusa.html


تنقّل في الكتيب eBook Navigation

الهجمات على كلمات السرّ

الهجمات الالكترونية الخبيثة Malicious Cyber Attacks

الفهرس Index

الفهرس الكامل Full Index

اقرأ أيضا See Also

كلمات السرّ Passwords

تخمين كلمات السرّ Passwords Guessing

الهجوم الأعمى Brute Force Attack

هجوم القاموس Dictionary Attack

اصطياد كلمات السرّ Passwords Phishing

برامج تسجيل المفاتيح Keystroke Loggers

تسرب البيانات Data Breaches

برامج كشف كلمات السرّ Password Cracking Software

برامج تجريب كلمات السرّ Password Testing Software

مراجع References

Password Cracking - Computerphile فيديو بالانجليزية عن كشف كلمات السرّ من قناة Computerphile على يوتيوب

https://hashcat.net/hashcat/

John the Ripper password cracker

https://github.com/FlameOfIgnis/Pwdb-Public