موضوع رائع جداً
ومجال للنقاش فعلاً
لكن مع اعتزاري..
هنالك اخطاء كبيرة في التعريفات..
تصنيفات الهاكر تكون ثلاثة تصنيفات..
لمن لا يعلم.. الهاكرز مقسومين لثلاث أصناف:
1. White Hat Hackers: أصحاب القبعات البيضاء ويعرفوا أيضا بالـ Ethical Hackers أو الهاكر الأخلاقي. هذا الشخص يملك خبرات ومهارات الهاكرز وهو قادر على اختراق الأنظمة والشبكات بنفس الأسلوب والأدوات التي يستخدمها المخترقين لكنّه يستغل خبرته في الأمور الجيدة كأن يبلّغ الشركات عن وجود ثغرة في احدى منتجاتها أو يعمل Penetration Tester أو مسؤول الحماية في احدى الشركات.
2. Black Hat Hackers: أصحاب القبعات السوداء وحسب وجهة نظر رايموند يجب اطلاق لقب Crackers عليهم وليس Hackers فهاؤلاء الأشخاص يستغلون معرفتهم وخبراتهم في الأمور التخريبية ويخترقون المواقع والسيرفرات بغرض المتعة واثبات الوجود أو لغايات أخرى غالبا تكون غير شرعية كالابتزاز وسرقة المعلومات أو اختراق مواقع الشركات بغرض تدمير سمعتها…
3. Gray Hat Hackers: أصحاب القبعات الرماديّة, يمكننا القول أنهم هاكرز أخلاقيين أيضاً وهم يشبهون الصنف الأول (أصحاب القبعات البيضاء) كثيراً لكن بنفس الوقت قد يقوموا ببعض الاختراقات بغرض التحدي مثلاً أو لاثبات وجود ثغرة أو في حال مخالفة إحدى مبادئه أو لايصال رسالة معيّنة…
ثانيا.. وبالنسبة لموضوع.. البرمجه ام الشبكات
من وجهة نظري ارى ان الاثنان يكملان بعضهما البعض..
وان كانت الشبكات هي الاساس..
فلا تستطيع اختراق شبكة بدون ان تعلم اسس الشبكات..
ولاكنك تسطيع ان تخترقها بدون البرمجه.. او البرامج.. عن طريق طرق كثيرة..
ومن هنا تأتي وجهة النظر التي اؤيدها ان الشبكات هي الاساس ويجب ان يتم ضم بعض لغات البرمجة معها..
لتكون من هنا قد جمعت بين الاثنين.. الشبكات ولغات البرمجة..
وفي هذة النقطة تستطيع ان تتعرف على علاقة البرمجه بالهاكر..
لماذا تعلّم البرمجة أمر ضروري؟
لأنك ستحتاجها في العديد من الأمور لكن للدقة درجة الاحترافية ستختلف بحسب التخصص الذي تريد أن تحترفه. الهاكر ليس قسم واحد بل هو بحر بحد ذاته ويوجد له تخصصات فاذا أردت أن تكون Penetration Tester مثلا بهذه الحالة مهمتك ستكون اختبار امكانية اختراق النظام عن طريق استخدام نفس البرامج والأدوات التي يستخدمها الهاكرز (تركيزك سيكون على الـ Vulnerability Assessment) وهنا كل ما تحتاجه من البرمجة معرفة بسيطة في حال احتجت لبرمجة استغلال ثغرة أو تعديل استغلال مبرمج مسبقاً أو لبرمجة أداة تقوم بمهمة معيّنة تحددها أو لتقوم ببعض المهام بشكل أوتوماتيكي وهذا ضروري لاختصار الوقت طبعاً. أما اذا أردت اكتشاف ثغرات تطبيقات الويب في سكريبتات PHP مثلاً بهذه الحالة يجب عليك تتعلّم أساسيات هذه اللغة والتركيز على الجانب الأمني المتعلّق بكيفية تعامل السكريبت مع مدخلات المستخدم, فلترتها, ادخالها لقواعد البيانات وعرضها ثم ستتطوّر أكثر وتنتقل لثغرات Clinet Side-Attack وبهذه الحالة سيصبح هدفك المستخدم وليس السكريبت بحد ذاته لذلك قد تضطّر لتعلم أساسيات لغة Javascript وتعلم مبدأ عمل ثغرات XSS و CSRF مثلاً ثم تنتقل لتعلم اكتشاف ثغرات المتصفّح والبرامج والخدمات بشكل عام وهذا هو الجزء الأصعب لأنك انتقلت لمرحلة مختلفة تماماً عن لغة php وأنواع الثغرات السابقة وهذه المرحلة تتطلّب منك معرفة قويّة باللغات المنخفضة المستوى مثل لغة C و Assembly بالاضافة لاجادة الهندسة العكسية Reverse Engineering والتعامل مع برامج التنقيح (Debugging) وتتبع الأخطاء مثل GDB , DDD , OllyDBG , IDA Pro… عليك أن تعلم كيف يتعامل البرنامج والنظام مع الذاكرة, لماذا ومتى حدث Buffer Overflow مثلا وهل نستطيع استغلال هذا الخطأ للتحكم بسير البرنامج وتشغيل Shellcode يمكننا من اختراق النظام أم أنها ستؤدي لتوقفه عن العمل فقط, هل يستخدم النظام تقنيات تمنعنا من استغلال الثغرات وما هي التقنيات التي نستطيع استخدامها لتخطي الحماية وتطوير الاستغلال؟… كل هذا ان دل على شيء فهو يدل على أن البرمجة ضرورية بل ضرورية جداً وكلما تطوّر مستواك في مجال الحماية والاختراق ستحتاج لاحتراف البرمجة أكثر.
ملحوظة بسيطة.. بعض النقاط مأخوذة من مقال في احدى المدونات.. اسئلة واجوبة عن الهاكرز..
تحياتي..
Eslam Ali
المفضلات