چگونه هکر شویم؟
دنیای امنیت را میتوان به جهت گستردگی به یک هزارتوی بزرگ تشبیه کرد، که ورود بدون نقشه و بدون برنامه به آن، در ابتدا منجر به سردرگمی و در نهایت منجر به یاس و مانع رسیدن فرد به مقصدِ مطلوب میگردد. در این نگاشته – که به صورت مستمر بروز رسانی میشود – سعی بر این است که برای شاخههای مختلف امنیت، یک نقشهی راه ترسیم شود و در اختیار علاقمندان قرار گیرد؛ تا به وسیلهی آن بتوانند به جواب سوالات زیر دست یابند:
- چه شاخههایی از امنیت وجود دارد؟
- از کجا باید شروع کرد؟
- چه کتابهایی را باید مطالعه کرد و چه ویدیوهایی را باید تماشا کرد؟
- چه دورههایی را باید گذراند؟
البته بر کسی پوشیده نیست که نه تنها در حوزهی امنیت، که در هر حوزهی دیگری از علم، با اتکا کردن بر مطالعه نمیتوان به یک خبرهی آن حوزه تبدیل شد. حرفهای شدن مستلزمِ انجام تمرینهای مستمر و داشتن پشتکار زیاد برای کسب تجربه و بروز نگهداشتن دانش است. با این حال در این نگاشته تلاش میکنیم راهی را نشان دهیم که بتوان با طی کردن آن به یک کارشناس امنیت یا آزمونگر نفوذ تبدیل شد که خودش میتواند برای ادامهی راه، کوتاهترین و سریعترین مسیرِ ممکن را تشخیص دهد.
نقشهها
- دانش پایه
- امنیت نرمافزارهای وب – آخرین بروز رسانی ۱۳۹۸/۰۵/۲۱
- امنیت شبکه (اضافه خواهد شد)
- امنیت برنامههای کاربردی تلفنهای همراه (اضافه خواهد شد)
- امنیت در رمزنگاری (اضافه خواهد شد)
- امنیت و مهندسی معکوس (اضافه خواهد شد)
- امنیت سیستمهای ابری (اضافه خواهد شد)
- امنیت و جرمنگاری یا فارنزیک (اضافه خواهد شد)
دانش پایه
اگرچه شاخههای مختلف امنیت، مسیرهای کاملا جداگانهای از یکدیگر دارند و هر کدام نیازمند مهارتها و دانشهای تخصصی مربوط به آن حوزهاند، اما با این حال، داشتن اطلاعات پایه در ارتباط با شبکه، برنامهنویسی، سیستمعامل و بعضی پروتکلهای متداول رمزنگاری، شتابدهندهی خوبی برای فهم عمیق اتفاقات پشت پرده در همهی شاخههای دیگر است و به خلاقیت و تسریع یادگیری فرد در شاخهی تخصصیاش کمک شایانی میکنند. ضعف در این مقدمات حتی ممکن است منجر به شکست در اجرای درست یک سناریوی طراحی شده یا شکست در فهم صحیح یک فرایند شود.
بنابراین توصیه میشود پیش از انتخاب هر شاخهای از امنیت، در ارتباط با این چند مقوله، اطلاعات کافی کسب کنید. منظور از اطلاعات کافی این نیست که به یک برنامهنویس خبره یا یک طراح سیستمعامل تبدیل شوید؛ بلکه منظور این است که نحوهی توسعه، کامپایل و اجرای یک برنامه توسط سیستمعامل را بیاموزید و با ویژگیها و فرایندهای مختلف داخل سیستمعامل آشنا شوید. مفاهیم مختلف رمزنگاری را یاد بگیرید و در نهایت با عملکرد کلی شبکههای رایانهای و پروتکلهای معروف شبکه آشنا شوید. در فهرست زیر، مجموعهای از کتابهای پیشنهادی برای مجهز شدن به این دانشهای پایه معرفی شدهاند:
- CompTIA Network+ Certification
- The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference
- HTTP: The Definitive Guide
- Internetworking with TCP/IP Volume One
امنیت نرمافزارهای وب
در این بخش خواندن کتابها و فراگیری مهارتهای لازم برای یادگیری آزموننفوذ برنامههای کاربردی و یا وباپلیکیشن در ۹ مرحله بهصورت قدم به قدم آورده شده است. خب من قبل از شروع دو تا نکنه رو خدمتتون بگم:
- اگه دنبال راه آسون و میانبر هستین، خطچین رو دنبال کنید و با خوندن ۵ کتاب به سطح خوبی برسید.
- لازم نیست توی هر مرحله تمامی کتابها رو مطالعه کنید، اما اگه این کار رو انجام بدید بهتر هست.
نقشه راه پیشنهادی برای آزموننفوذ برنامههای کاربردی وب:
خب قبل از هر چیز، پیشنهاد میکنم نقشه راه رو دانلود کنید.
مرحله اول) منابع این مرحله توی قسمت شروع گفته شده، حتما و حتما کتاب(های) معرفی شده رو مطالعه کنید، برای تبدیل شدن به یک آزمونگر وب عجله نکنید.
مرحله دوم) برای شروع پیشنهاد من این هست که زبان JavaScript رو در حد متوسط یاد بگیرید. تمرکز بیشتری روی قسمتهای ارسال درخواست HTTP بگذارید. این زبان برای کشف آسیبپذیری و اکسپلویتنویسی سمت کاربر بسیار کلیدی خواهد بود. همچنین در کنار اون نیاز به یک زبان برنامهنوسی برای اکسپلویتنوسی آسیبپذیریهای سمت سرور دارید، پیشنهاد من Python (که بعدا کتاب مکمل هم بتون معرفی میکنم) به دلیل سادگی در یادگیری و انعطافپذیر بودن است. بعد از اون، یادگیری آسیبپذیریهای OWASP و طبقهبندی اونها توی اولویت اول قرار داره.بعد از اون نحوه آزمودن هر تست میتونه کمک کنه ایرادات امنیتی یه سایت رو کشف کنید. البته در آخر هم بد نیست با یک عینک دیگر و حتی کاملتر به تستهای OWASP و دستهبندی اونها نگاه کنیم (این آخری برای خودم هست و کاملتر میشه به مرور زمان).
مرحله سوم) خب حالا دیگه باید یه کتاب نسبتا حرفهای رو شروع کنید، پیشنهاد کتاب Web Application Hackers Handbook به نویسندگی Dafydd Stuttard نویسنده نرمافزار محبوب Burp Suite هست. وزن «آزموننفوذ» این کتاب نسبت به «برنامهنویسی امن» بسیار بیشتر است که درک درستی از انواع حملات مختلف در بستر وب را به خواننده منتقل میکند. به همین منظور، هم به برنامهنویسها و هم به کارشناسان امنیت خواندن این کتاب توصیه اکید میشود.
مرحله چهارم) اگه میتونید از SANS دو تا از دورههاش رو گیر بیارید پیشنهاد میکنم DEV522: Defending Web Applications Security Essentials و SEC642: Advanced Web App Penetration Testing, Ethical Hacking, and Exploitation Techniques رو پیدا کنید و به دقت به مباحثاش مسلط شین. SANS خیلی توی مباحث عمیق نمیشه، اما سرفصلهای خوبی رو پوشش میده، آسون بودن شیوه گفتار و سختی تدریجی مباحث از ویژگیهای خوب این دورهها هست. بعد از اون باید کمی قسمت تئوری رو کمرنگتر کنید و توی برخی از آسیبپذیریها عمیقتر شید. برای همین دو کتاب به شما معرفی میکنم که قسمتهای وباشون به نظرم این دغدغه رو برطرف میکنه. قسمت وب کتابهای بسیار خوب The Hacker Playbook 2 و The Hacker Playbook 3، خوبی این کتابها اینه که اولا یک پورتال آسیبپذیر دارن، تمامی آسیبپذیریهایی رو که درس داده میشه روی پورتال کشف و اکسپلویت کرد، دوما به مسائل و آسیبپذیریهای جدیدتری همراه با نحوه نفوذ اشاره میکنه.
مرحله پنجم) توی این مرحله باید علاوه با آشنا شدن با نرمافزار Burp Suite، متدولوژی آزموننفوذ اون رو کامل مطالعه کنید. خوبی این متدولوژی اینه که بعد از مطالعه اون، میتونید به قسمت آکادمی برپ مراجعه کنید و آسیبپذیریهارو کشف و اکسپلویت کنید. این کار باعث میشه به حالت گذار خوبی از بحث تئوری به کار عملی داشته باشید.
خب تبریک میگم شما از لحاظ علمی توی این زمینه یک کارشناس آزموننفوذ متوسط رو به بالا هستید، اما خب نقش تجربه رو اصلا نادیده نگیرید. این کتابها لزوما به این معنی نیست که شما میتونید آسیبپذیریهای زیادی رو کشف کنید و به اصطلاح هکر شدهاید.
مرحله ششم) توی این قسمت، کتاب The Browser Hacker’s Handbook رو به شما پیشنهاد میکنم که تخصصیتر در خصوص حملات تحت وب در بستر مرورگرها. مفاهیم امنیتی بسیار مهمی مثل Same Origin Policy و Cross Origin Resource Sharing و مواردی این چنینی در این کتاب به دقت بررسی میشه. بعد از اون کتاب Mastering Modern Web Penetration Testing خیلی میتونه مفید باشه. این کتاب شدیدا مباحث بهروز و کاربردی مثل Server-Side Request Forgery و External XML Entity رو پوشش میده. خب حالا وقتش هست سطح تسلط Python در مباحث هکینگ رو با Python for Pentesters بالاتر ببرید.
مرحله هفتم) این مرحله برای کسانی هست که میخوان برخی از مباحث رو عمیق بشن. مثلا برای اینکه بتونید از سد تجهیزات امنیتی مثل وَف عبور کنید، شدیدا پیشنهاد میکنم کتاب Web Application Obfuscation رو توسط Mario Heiderich مطالعه کنید. همچنین برای اینکه کاربرد زبان Python رو به بالاترین سطح برسونید، کتاب Black Hat Python: Python Programming for Hackers and Pentesters رو پیشنهاد میکنم.
مرحله هشتم) خب بعد از این نوبت کار عملی هست، یک مکان خیلی خوب که کلی پیکار متنوع در دستهبندیهای مختلفی داره، وبسایت https://www.root-me.org هست. خب حالا وقتش هست کمی پیکار واقعی و سطح بالا انجام بدید، سایت https://ctftime.org اکثر CTFهای دنیا رو با سیستم امتیازدهی مناسب و تاریخ برگزاری دستهبندی کرده. همچنین بعد شرکت در CTF، میتونید راهحلها رو توی همون سایت پیدا کنید (راهحلها رو شرکتکنندهها میذارن، پس بهتره که توی شبکههای اجتماعی هم دنبال راهحل بگردید). توی این مرحله شما به نقطهای رسیدین که کتاب خوب رو از بد تشخیص بدید، کافی هست توی هر حوزهای که مشغول هستید، مثلا در حال پیادهسازی و آزمون oAuth یک سازمان هستید، کتاب تخصصی اون قسمت رو مطالعه کنید. برای مثال کتاب Advanced API Security پیشنهاد میشه.
مرحله نهم) از اینجا به بعد مطمئن باشید شما میتونید با خواندن یک کتاب مثل Real-World Bug Hunting که بهروزترین و بهترین منبع از نظر من برای کشف آسیبپذیری هست، به راحتی توی سایتهایی مثل hackerone یا bugcrowd درآمد خوبی داشته باشد.
کلام آخر) لینکهای زیر هم میتونید برای اطلاعات بیشتر مطالعه کنید:
https://portswigger.net/blog/so-you-want-to-be-a-web-security-researcher
Offsec weblog – How to become a hacker?
برای یادگیری جاوا اسکریپت :
https://javascript.info/
سلام. برنامه ای برای ضبط دوره آموزشی ندارید؟ خیلی کمبود دوره ی خوب فارسی توی امنیت احساس میشه… |:
ممنونم علی جان از پیشنهاد خوبت؛ حتما توی برنامه میگذاریمش.
sans 545 ham man pishnahad mikonam ghabl az 642 gozaroonde beshe kheily mofide
سلام. بقیه شاخه ها رو اضافه نمی کنید؟!
اگه وقت بشه بلی
یه سوالی برام پیش اومد.
تو بعضی نقشهها یه چیزهایی برای یادگیری سیستم عامل میزارن فکر کنم شما لحاظ کردین. به نظر تسلط کار به سیستم عامل در حد کاربردهای روزانه برای کافیه؟
سلام امیر جان، سوالت به جاست. توی دانش پایه، یادگیری سیستم عامل و حتی رمزنگاری و یه زبان برنامه نویسی، خیلی به درک عمیقتر از امنیت و پیشرفت توی هر حوزهای از امنیت کمک میکنه. لیست رو به مرور کاملتر میکنیم و اگه کتاب خوبی برای این زمینهها به چشممون خورد، حتما اضافه میکنیمش. ممنون از کامنت خوبت.
سلام خسته نباشید …. یکی از مشکلاتی ک من بهش برخوردم این بود که پیدا کردن برخی از این کتابا و دوره سخته و برخی از اینا رو حتی پیدا نکردم مثل root me hacking platform ….. ب نظرم همشو تو یه فایل rar تو سایت قرار بدید ک دوستان (آیندگانی که میخوان بعد ها از این رودمپ استفاده کنند) به مشکل برنخورند و سخت نباشه براشون
سلام محمد حسین جان. اکثر کتابها رو میتونید داخل https://libgen.is پیدا کنی. قرار دادن فایل کتابها روی وبسایت رو به لحاظ این که ممکنه مشکل کپیرایت برای دامنه ایجاد کنه، درست نمیدونیم. 🙂
سلام خسته نباشی ممنون وقت گذاشتی من سه تا سوال داشتم یک اینکه چه مدت طول میکشه تا رودمپ رو کامل و به صورت خط به خط یادگرفت و عملی انجام داد و… و دو اینکه برای برنامه نویسی و… به صورت گسترده تر باید ریاضی ام قوی باشه ؟ من ریاضیم ضعیف رو به متوسط هست …… و سه اینکه شما میخواید برای وبسایت قسمت ثبت نام و پروفایل کاربری درست کنید ک کاربرا عضو بشن و… ؟
جالبه عکس توی تب جدید باز کنی فرق میکنه
اشتباه از من بود درست شد
سلام خسته نباشید …. قرار نیست رودمپ ریورس رو قرار بدید ؟
با تشکر
منم خیلی وقت هست منتظرم