Source Code Fuzzing

  • متوسط
  • مسیر قرمز
  • ۸ درس
ثبت نام سازمانی این دوره
تاریخ شروع
۲۶ مهر ۱۳۹۹
طول دوره
ساعت
گواهی‌نامه و آزمون
دارد
ظرفیت
۰ نفر باقی مانده
نوع برگزاری
آنلاین

درباره‌ی این دوره

فازینگ (Fuzzing) روشی برای شناسایی باگ و آسیب‌پذیری‌های موجود در نرم‌افزارها و سیستم‌عامل‌ها است. به عبارت دیگر کارشناسان امنیت یا برنامه‌نویسی در فازینگ تلاش می‌کنند تا با ارسال تعداد زیادی از ورودی‌های غیر معتبر و غیر پیش‌بینی شده به یک برنامه، پاسخ آن برنامه را ارزیابی کرده و رفتارهای نامتعارف یا Crash نرم‌افزار در برابر ورودی‌های خاص را شناسایی کنند. با شناسایی این رفتارهای نامتعارف، این امکان وجود دارد تا مهاجم فرآیند اجرایی برنامه‌ی آسیب‌پذیر را به سود خود تغییر دهد.

ابزارهای زیادی برای شناسایی آسیب‌پذیری‌های شناخته شده در کدهای برنامه‌نویسی یا سامانه‌ها وجود دارد اما فازینگ این قابلیت را به شما می‌دهد تا آسیب‌پذیری‌هایی را شکار کنید که تا پیش از این، ناشناخته بودند. هکرهای کلاه سیاه از این روش در راستای شناسایی آسیب‌پذیری‌های جدید و توسعه‌ی اکسپلویت‌های Zero-Day برای آن‌ها بهره می‌برند. در طرف مقابل شرکت‌ها و سازمان‌ها تلاش می‌کنند تا با اجرای انواع فازینگ در سامانه‌های خود، آسیب‌پذیری‌های موجود را پیش از مهاجمین و خرابکاران، شناسایی و برطرف کنند.

در این دوره به آموزش مبانی و اصول فازینگ کدهای برنامه‌نویسی در زبان‌های مختلف پرداخته می‌شود. به عبارت دیگر شما با گذراندن این دوره، مبانی فازینگ، انواع فازینگ استاتیک و داینامیک، ابزارها و تکنیک‌های پرکاربرد در فازینگ و در نهایت فازینگ کدهای مربوط به زبان‌های Python، Go، Rust، Java و JavaScript را خواهید آموخت.

این دوره به چه افرادی توصیه می‌شود؟

  • کارشناسان تست نفوذ
  • علاقه‌مندان به حوزه‌ی کشف و تحلیل آسیب‌پذیری‌های امنیتی
  • دانشجویان علاقه‌مند به ادامه‌ی تحصیل در رشته‌ی علوم کامپیوتر یا فناوری اطلاعات
  • کارشناسان ارزیابی امنیت و کنترل کیفیت نرم افزار

برای حضور در این دوره چه دانش‌هایی باید داشته باشم؟

  • آشنایی با یکی از زبان‌های برنامه‌نویسی متداول مانند پایتون
  • آشنایی با مفاهیم و تعاریف امنیت سایبری
  • آشنایی ابتدایی با سیستم‌عامل لینوکس

سرفصل‌های دوره

  • Fuzzing intro
    • What Is Fuzzing?
    • Random Fuzzing
    • Mutation Fuzzing
    • Grammar-based Fuzzing (generators, dictionaries, etc.)
    • GreyBox Fuzzing
    • CI Fuzz Technology Stack Modren Fuzzing
    • CodeQL / Sammel QL Modern Scanning code
  • Static / Dynamic Fuzzing
    • Types of Security Vulnerabilities
    • Clang Static Analyzer
    • ASAN – Address Sanitizer
    • AFL
      • BlackBox Fuzzing
      • WhiteBox Fuzzing
      • Corpus/inputs/seed selection
      • Crashes Analysis
    • LibFuzzer
    • Taint analysis – IR (Intermediate Representation)
    • DBI (Dynamic Binary Instrumentation)
      • PIN
      • Valgrind – Memcheck
      • Dyninst
    • Honggfuzz
    • Afl + Radamsa
  • Symbolic Execution / Concolic Execution
    • Intro Symbolic Execution with KLEE
    • Finding memory bug in OSS
    • SymCC
    • AFL + SymCC
    • AFL + Driller
    • Crashes Analysis
    • Concolic execution
      • Triton
      • Angr
  • Python Fuzzing
    • PythoVnFuzz
    • Athris
    • Native Python Fuzzing
    • Python OSS-Fuzz project
  • Go Fuzzing
    • Go-fuzz
    • Gofuzz
    • Go OSS-Fuzz project
  • Rust Fuzzing
    • Unsafe Code
    • Cargo-fuzz
    • Afl-rs
    • Honggfuzz-rs
    • Fuzzcheck-rs
    • Rust OSS-Fuzz project
  • Java Fuzzing
    • Jazzer Fuzzer
    • JQF Fuzzing
    • Java OSS-Fuzz project
  • Web Fuzzing
    • Fuzzing Chromium with Libfuzzer
    • Fuzzing Chrome V8 JavaScript Engine
    • Fuzzing with selenium
    • Jsfuzz Javascript fuzzer

گواهینامه‌ی دوره

دوره های مشابه