logo-favicon

گروه فناوری اطلاعات شریف

شناسایی باگ و آسیب‌پذیری‌های موجود در نرم‌افزار و سیستم‌عامل‌ها (Source code fuzzing)

مدت دوره: 16 ساعت

دسته بندی ها

توضیحات

توضیحات

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

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

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

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

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

سرفصل

Chapter 1: Fuzzing intro1.1   What Is Fuzzing?

1.2    Random Fuzzing

1.3   Mutation Fuzzing

1.4   Grammar-based Fuzzing (generators, dictionaries, etc.)

1.5   GreyBox Fuzzing

1.6   CI Fuzz Technology Stack Modren Fuzzing

1.7   CodeQL / Sammel QL Modern Scanning Code

Chapter 2: Static / Dynamic Fuzzing

2.1 Types of Security Vulnerabilities

2.2 Clang Static Analyzer

2.3 ASAN – Address Sanitizer

2.4 AFL

2.4.1 BlackBox Fuzzing

2.4.2 WhiteBox Fuzzing

2.4.3 Corpus/inputs/seed selection

2.4.4 Crashes Analysis

2.5 LibFuzzer

2.6 Honggfuzz

2.7 Afl + Radamsa

Chapter 3: Symbolic Execution / Concolic Execution

3.1 Intro Symbolic Execution with KLEE

3.2 Finding memory bug in OSS

3.3 SymCC

3.4 AFL + SymCC

3.5 AFL + Driller

3.6 Crashes Analysis

3.7 Concolic execution

3.71 Angr

Chapter 4: Python Fuzzing

4.1 PythonFuzz

4.2 Athris

4.3 Native Python Fuzzing

4.4 Python OSS-Fuzz project

Chapter 5: Go Fuzzing

5.1 Go-fuzz

5.2 Gofuzz

5.3 Go OSS-Fuzz project

Chapter 6: Rust Fuzzing

6.1 Unsafe Code

6.2 Cargo-fuzz

6.3 Afl-rs

6.4 Honggfuzz-rs

6.5 Fuzzcheck-rs

6.6 Rust OSS-Fuzz project

Chapter 7: Java Fuzzing

7.1 Jazzer Fuzzer

7.2 JQF Fuzzing

7.3 Java OSS-Fuzz project

Chapter 8: Web Fuzzing

8.1 Fuzzing with selenium

8.2 Jsfuzz Javascript fuzzer

دیدگاهها

" لطفا آموخته ها و تجربیات خود را از کلاس هایی که داشتید، با ما در میان بگذارید."

اولین نفری باشید که دیدگاهی را ارسال می کنید برای “شناسایی باگ و آسیب‌پذیری‌های موجود در نرم‌افزار و سیستم‌عامل‌ها (Source code fuzzing)”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Customer Reviews

5/5

“A review from a customer who benefited from your product. Reviews can be a highly effective way of establishing credibility and increasing your company's reputation.”

5/5

“A review from a customer who benefited from your product. Reviews can be a highly effective way of establishing credibility and increasing your company's reputation.”

Join Our Newsletter