مصطلح كسر كلمات المرور عن طريق brute force بات شائعا الان في اوساط الاختراق، وبالرغم من انه يعتمد على كثير من الاساليب والطرق الا انه يدور حول فكرة واحدة وهو محاولة تخمين كلمة المرور عن طريق ادخال كم هائل من كلمات المرور في حقل كلمة المرور حتى يحصل المخترق على كلمة مرور صحيحة للحساب المنوي اختراقه.
وبكل تاكيد فان كسر كلمات المرور يتطلب برمجيات خاصة فمن غير المعقول ان يحاول شخص فعلي محاولة كسر كلمة مرور لحساب معين بشكل يدوي الا ان كان يعتقد ان خيارات كلمة المرور مخصورة بين عدد قليل من الاحتمالات. اما في الواقع فانه لكسر كلمات المرور فانه من الضروري استخدام برامج تقوم بذلك وتهدف الى تسريع العمل وذلك باستخدام سرعة الحاسوب في ادخال البيانات بدلا من الانسان. وبالتالي يقوم برنامج الكسر بطريقة او باخرى بالدخول الى نموذج تسجيل الدخول وتعبئة النموذج بشكل سريع وتكرار المحاولة مئات او لم تكن الاف المرات وقد تصل الى ملايين المرات حتى يستطيع كسر كلمة مرور حساب معين وذلك بحسب صعوبة كلمة المرور نفسها.
انا هنا لن اتطرق الى نصائح حول كيفية اختيار كلمة مررو صعبه ولن اتطرق الى التقنيات التي تستخدم في كسر كلمة المرور. انا هنا اتحدث من وجهة نظر المبرمج وهو كيفية حماية نموذج تسجيل الدخول الخاص ببرنامجي من استخدام نظام كسر كلمة المرور عن طريق brute force. وماذا يجب علي كمبرمج ان افكر فيه.
هناك الكثير من الاقتراحات التي سمعت بها وقرئتها . منهم من قال ان يتم ايقاف الحساب الذي تم محاولة الدخول اليه لاكثر من 10 مرات مثلا بصورة خاطئه لفترة من الزمن وهذا برايي اسلوب قد يميل الى الفشل لان هذا الاسلوب بحد ذاته سوف يجعل من برنامجك ينغلق على نفسه وقد يقوم مخترق واحد باصابة حسابات مستخدمينك بالشلل.
وهناك من قال انه يجب تسجيل عنوان الاي بي مع عدد مرات تسجيل الدخول الخاطئ وفي حال تكرر عدد مرات تسجيل دخول خاطئ بشكل متتالي من اي بي معين يتم حظره وهذا ايضا برايي في مواقع الانترنت وخصوصا في نماذج تسجيل الدخول ليس بالراي الصواب.
ان افضل راي اعجبني هو استخدام صورة التحقق البصري (الكباتشا) في نموذج تسجيل الدخول . فهذا الراي يقول انه يتم عرض نموذج تسجيل الدخول للمستخدم بصورة طبيعية وللمرة الاولى بدون صورة تحقق بصري ولكن اذا ما فشل المستخدم من ادخال كلمة المرور الصحيحة ل 3 مرات مثلا فان نموذج تسجيل الدخول سوف يعرض صورة تحقق بصري بالاضافة لحقل اسم المستخدم وكلمة المرور وهنا يجب على المستخدم ان يقوم على ادخال الرمز الذي يراه في صورة التحقق البصري بشكل صحيح حتى يستطيع الاستمرار.
وفعلا هذا برايي هو افضل اسلوب. ولكن! ماذا لو استطاع المستخدم اصلا تخطي او تجاهل صورة التحقق البصري بنجاح؟!!! كيف ذلك؟!
يمكننا ان نستخدم الكاباتشا في نموذج تسجيل الدخول دوما من اللحظة الاولى وهنا لن نعاني من مشكلة ابدا فنظام تسجيل الدخول سوف يفحص القيمة في كل مرة ولن يحتاج لمعرفة عدد المرات التي اخطئنا فيها. ولكن!!!! توقف الكثير منا يكره الكباتشا ويواجه صعوبه في ادخال ما يرد فيها من رموز. فالطريقة المثلى هو اظهار الكباتشا بعد عدد معين من الادخالات الخاطئه. مثلا بعد 3 مرات. ولكن كيف سوف يستطيع نظام الدخول لدينا تحديد عدد مرات الدخول الخاطئ!؟؟! هنا تمكن المشكلة.
ان هذا يعتمد على كيفية برمجة فكرة عرض صورة التحقق البصري نفسها. فلو ان النظام مثلا اعتمد على الكوكيز (cookies) في احتساب عدد مرات تسجيل الدخول الخاطئ فقد يقوم المخترق بالعبث بقيمة الكوكيز او باختصار برفض تخزين الكوكيز على جهازه اصلا وبالتالي فشل تحقيق المنشود.
وايضا لو قمت على برمجة النموذج بحيث يتم احتساب عدد مرات تسجيل الدخول الخاطئ في الجلسة (session) فقد يستطيع المخترق بكل بساطة البدء في جلسة جديدة في كل مرة يقوم فيها برنامج الكسر بمحاولة مناداة نموذج تسجيل الدخول من اجل كسر الباسورد. فما الحل اذا؟!!!!!
برايي (وبالرغم من انني لم اختبره بعد) ان الفكرة تتلبور في كيفية تعامل نظام تسجيل الدخول مع المستخدمين الذين يرفضون استلام الكوكيز وبالتالي فانه يجب على نظام تسجيل الدخول ان يجبر المستخدم على قبول تخزين الكوكيز على جهازه كشرط للسماح له بمحاولة تسجيل الدخول وفوق هذا يجب عليه ان يتاكد في كل مرة من قيمة العداد الخاص بعدد مرات تسجيل الدخول الخاطئ ويقارنها مع ما لديه من بيانات وذلك لضمان عدم تصفير العداد بعد التلاعب بقيمة الكوكيز ، وبالتالي يستطيع النظام دوما زيادة عداد عدد مرات الدخول الخاطئ وتسجيلها في الكوكيز والجلسه في نفس الوقت ومقارنتهما او يمكنه تجاهل التخزين في الجلسة وتشفير قيمة الكوكيز حتى لا يتم التلاعب بها.
في الايام القادمة سوف اختبر هذا النظام فعليا بعد تجربة بعض الانظمة الناجحة في هذا المجال وسوف احاول استخدام النموذج في كسر كلمة المرور وسوف اضع ما توصلت اليه في اخر هذا المقال.
مراجع قد تفيدك
- whit3hats.com: تخطي الكابتشا في صفحات الدخول
- wikipedia.org :Brute-force attack
- wikipedia.org: Password cracking