Fuzzing Basics P1 Arabic

3 minute read

أساسيات الفازينغ

السلام عليكم شرح ال fuzzing و رح يكون أول جزء نظري و ثاني جزء عملي رح نعمل fuzz على LOLCODE compiler كنت جبت فيه اكتر heap overflow و بلغتهم من شهر 11 السنة الماضية بس مافي رد و ما اعتقد رح يكون في رد هو fuzzing هيك شغلات فقط للمرح و التسلية.

أساسيات و تقنيات ال fuzzing

ال fuzzing أغلب الناس بتعرفه خاصة بال pentest لو شغال على ويب نفس المبدا الاساسي بس بكمية تفاصيل اكثر و متقدم اكثر بكثير.

ال fuzzing ما بس جزء من ال cybersecurity كمان بستخدم بال Software QA الفكرة انك عم تجرب تعطي مدخلات مختلفة, خاطئة و صحيحة و داتا عشوائية للبرنامج

كمثال:

ls temp_dir 

البرنامج ls و المدخل هو temp_dir منجرب اشكال مختلفة من المدخلات و منجرب مع flags مختلفة.

الهدف طبعا انك توصل لثغرات, crashes, تسريبات بالذاكرة memory leaks, او اي مشاكل تانية ممكن تطلع بالبرنامج.

الأجزاء الأساسية لل fuzzing:

1- Seeds/Corpus

ببساطة هي المدخلات, وهي بتكون المدخلات الأولية الي انت بتجمعها او بتعملها بطرق مختلفة و هي تسمى seeds

  • مقال و فيديو لاحق عن الموضوع هاد. اما ال corpus الي اداة ال fuzzing - fuzzer بأنشئها اثناء الفازينغ الي منركز عليه انو ال seeds او المدخلات:
  • تخلي اجزاء مختلفة من البرنامج تشتغل
  • تكون المدخلات minimal بس كافية, بمعنى كل ماقدرت تصغر حجم المدخل seed الي بخلي الثغرة او الكراش يصير, بكون أحسن.
  • المدخلات تخلي behaviors مختلفة بالبرنامج تتنفذ

2- قياس التغطية

ال coverage measurement, التغطية او ال coverage هو المؤشر لكم سطر برمجي, جزء من البرنامج قدر الfuzzer يصله و ينفذه كل ما ال fuzzer قدر يغطي مساحة اكبر من البرنامج كل ما بعني انه رح يجرب مدخلات مختلفة باماكن مختلفة من البرنامج و بالتالي بعني احتمالية انه ي trigger كراش او ثغرات اكتر.

هون منركز على :

  • line coverage كم سطر برمجي وصلناله
  • branch coverage كم برانش متل if/else وصلناله
  • path coverage كم execution paths وصلناله
  • block coverage كم جزء برمجي او block تم تنفيذه و وصلناله

طبعا التغطية جدا مهمة لل smart fuzzers و هي الشيء الاساسي الي بخلي الfuzzing ذكي

3- minimization/trimming

انت بس رح تحاول تقلل المدخلات, تصغرها, ما تكون متكررة, طبعا مع اخذ بالاعتبار انو لسا المدخلات ت trigger behaviors

العملية هي المفروض:

  • تمسح اي تكرارات او مدخلات مالها علاقة او لازمة
  • تساعد بالتنقيح debugging بانو المدخل ينفذ trigger بس ال paths الي الها علاقة بالكراش او الثغرة
  • تحسن كفاءة ال fuzzing بانك تركز على المدخلات او اجزاء من المدخلات الي بتجيب اعلى تغطية

عادة ال fuzzers المتطورة بتعمل هي العملية بنفسها.

4- تقنيات التلاعب Mutation

“ارحم الترجمة 😂” الفكرة انو منستخدم تقنيات معينة لنتلاعب بالمدخلات لحتى نعمل مدخلات جديدة

  • Bit flips تغير بيت واحد بالمدخل
  • Arithmetic operations تعمل عمليات حسابية بانك تنقص او تزيد على المدخل seed
  • Block operations اضيف, تحذف, او تكرر جزء من المدخل seed
  • Dictionary-based mutations بتستخدم قاموس من المدخلات او القيم المعروفة و بصير ال fuzzer بتلاعب فيهاو بقلبها
  • structured mutations انو يكون عندك كمثال شي اسمه grammer-aware بكون في متل تيمبلت في كمية من القواعد الي على اساسهابتم التلاعب و تغير المدخلات

5- Instrumentation

عبارة عن كود بنضاف للبرنامج الي رح تعمل عليه فازينغ, شغلة الكود انه يجمع معلومات و يتعقب التنفيذ execution الخاصة بالبرنامج

ال instrumentation بتعطينا شوية ميزات:

  • بتتعقب معلومات التغطية
  • بتساعد بانو نلقط اي مشاكل بالميموري
  • بتراقب وقت التنفيذ
  • بتساعد بتحديد الكراشز و ال hangs

هذا والله اعلم 💚

الجزء الثاني من السلسلة هي هو التطبيق العملي ان شاء الله

Tags:

Updated: