Source Code Fuzzing

دربارهی دوره
فازینگ (Fuzzing) روشی برای شناسایی باگ و آسیبپذیریهای موجود در نرمافزارها و سیستمعاملها است. به عبارت دیگر کارشناسان امنیت یا برنامهنویسی در فازینگ تلاش میکنند تا با ارسال تعداد زیادی از ورودیهای غیر معتبر و غیر پیشبینی شده به یک برنامه، پاسخ آن برنامه را ارزیابی کرده و رفتارهای نامتعارف یا Crash نرمافزار در برابر ورودیهای خاص را شناسایی کنند. با شناسایی این رفتارهای نامتعارف، این امکان وجود دارد تا مهاجم فرآیند اجرایی برنامهی آسیبپذیر را به سود خود تغییر دهد.
ابزارهای زیادی برای شناسایی آسیبپذیریهای شناخته شده در کدهای برنامهنویسی یا سامانهها وجود دارد اما فازینگ این قابلیت را به شما میدهد تا آسیبپذیریهایی را شکار کنید که تا پیش از این، ناشناخته بودند. هکرهای کلاه سیاه از این روش در راستای شناسایی آسیبپذیریهای جدید و توسعهی اکسپلویتهای Zero-Day برای آنها بهره میبرند. در طرف مقابل شرکتها و سازمانها تلاش میکنند تا با اجرای انواع فازینگ در سامانههای خود، آسیبپذیریهای موجود را پیش از مهاجمین و خرابکاران، شناسایی و برطرف کنند.
در این دوره به آموزش مبانی و اصول فازینگ کدهای برنامهنویسی در زبانهای مختلف پرداخته میشود. به عبارت دیگر شما با گذراندن این دوره، مبانی فازینگ، انواع فازینگ استاتیک و داینامیک، ابزارها و تکنیکهای پرکاربرد در فازینگ و در نهایت فازینگ کدهای مربوط به زبانهای Python، Go، Rust، Java و JavaScript را خواهید آموخت.
مدت زمان دوره
مدت زمان این دوره ۳۰ ساعت است و به صورت کلاسهای ۳ ساعته، طی ۱۰ جلسه به صورت آنلاین از ساعت ۱۷ تا ۲۰ روزهای شنبه و چهارشنبه برگزار میشود. آغاز جلسات این دوره از روز شنبه مورخ ۱۴۰۰/۰۳/۰۱ خواهد بود.
این دوره به چه افرادی توصیه میشود؟
- کارشناسان تست نفوذ
- علاقهمندان به حوزهی کشف و تحلیل آسیبپذیریهای امنیتی
- دانشجویان علاقهمند به ادامهی تحصیل در رشتهی علوم کامپیوتر یا فناوری اطلاعات
- کارشناسان ارزیابی امنیت و کنترل کیفیت نرم افزار
- توسعهدهندگان نرمافزار
برای حضور در این دوره چه دانشهایی باید داشته باشم؟
- آشنایی با یکی از زبانهای برنامهنویسی متداول مانند پایتون
- آشنایی با مفاهیم و تعاریف امنیت سایبری
- آشنایی ابتدایی با سیستمعامل لینوکس
سرفصلهای دوره
Chapter 1: Fuzzing intro
1.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 Taint analysis – IR (Intermediate Representation)
2.7 DBI (Dynamic Binary Instrumentation)
2.7.1 PIN
2.7.2 Valgrind – Memcheck
2.7.3 Dyninst
2.8 Honggfuzz
2.9 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.7.1 Triton
3.7.2 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 Chromium with Libfuzzer
8.2 Fuzzing Chrome V8 JavaScript Engine
8.3 Fuzzing with selenium
8.4 Jsfuzz Javascript fuzzer
ویژگی های دوره
- درس 0
- آزمونها 0
- مدت زمان 30 ساعت
- سطح مهارت متوسط
- زبان فارسی و انگلیسی
- دانشجویان 16
- گواهی نامه بله
- ارزیابی بله
4 نظر
سلام. روزتون بخیر
تمرکز این دوره روی باینری های لینوکسی هست؟ برنامه ای برای پوشش ویندوز هم دارید؟ فازینگ کرنل لینوکس پوشش داده میشه؟
مفاهیم و استفاده از CodeQL کامل پوشش داده میشه؟
درباره فازینگ BlueTooth یا MMS کار عملی انجام داده میشه؟ منظورم تمرکز روی دیوایس های اندروید و attack surface اون هاست.
سلام علی اکبر عزیز.
بله. تمرکز دوره روی باينری لينوکس و سورس کد اوپن سورسه. همچنین CodeQL مفاهیم و نحوهی عملکردش توضیح داده میشه. تمامی موارد مطابق سرفصل تو دوره گفته میشه.
با سلام
ببخشید ایا این دوره برای کسی که هیچ تجربه ای از دنیای امنیت نداره و قصد ورود داره مناسب هست؟
اگر امکانش باشه میشه استاد منابعی مقدماتی رو معرفی کنن که تپ همین تایم کم تا شروع دوره بشه مقدماتی رو بدست اورد تا درک مطالب برای کسی که تجربه نداره راحت تر بشه؟
با تشکر
سلام علی عزیز. آشنایی با زبانهای برنامهنویسی برای حضور در این دوره کفایت میکنه و سایر نیازهای مقدماتی در خود دوره گفته میشه.