چگونه یک هکر شویم؟

اگر علاقه دارید وارد دنیای جذاب امنیت سایبری بشید ولی نمی دونید از کجا شروع کنید، این مقاله ممکنه براتون مفید باشه.
ورود به دنیای امنیت و انتخاب یک فیلد جهت یادگیری و انتخاب منابع و ترسیم نقشه راه (و برنامه ریزی) در ابتدا خیلی سخت و گیج کننده به نظر میاد چون با تعداد زیادی از گزینه ها و منابع روبرو هستید. من و بسیاری از دوستان و همکارانم که تخصص امنیت داریم، همواره با سوالاتی از این دست مواجه میشیم:

چطور می تونم هکر بشم؟
آیا برای این که هک یاد بگیرم، باید دانشگاه برم؟
وضع بازار کار امنیت چطوره؟
چه زبان های برنامه نویسی برای امنیت باید بلد باشم؟
اول شبکه یاد بگیرم یا وب؟
آیا مدرک CEH به دردم می خوره؟
چقدر طول می کشه بتونم هک یاد بگیرم؟
و سوالاتی از این قبیل.

مقالات زیادی در اینترنت هستن که به سوالات فوق جواب میدن که برخی شون رو در انتهای این مقاله لیست می کنم. هدف من اینه که در این مقاله، بر اساس تجربه شخصی و از نگاه خودم یک راهنما برای علاقه مندان امنیت به زبان فارسی ایجاد کنم تا بتونه کمی از سردرگمی اولیه شون کم کرده و اون ها رو با مشاغل و تخصص های مهم امنیت آشنا کنه. در این مقاله مخاطبانم کسانی هستن که آشنایی دقیقی با زیرشاخه های امنیت ندارن و تصمیم گرفتن به صورت حرفه ای وارد این حوزه بشن و فرض کردم که یک آشنایی اولیه با مفاهیم نرم افزار و آی تی دارن. قطعا در یک مقاله نمیشه به تمام حوزه ها اشاره کرد (وگرنه مقاله از این هم طولانی تر می شد)؛ به خاطر همین توی این مقاله در مورد مسیر آکادمیک و مشاغل مربوطه (مثلا مرتبط با طراحی رمز) و همچنین برخی از شاخه های کمتر استفاده شده (مثل formal verification) چیزی ننوشتم. همچنین به حوزه های جدید تری مثل Privacy یا نقش “یادگیری ماشین” یا “هوش مصنوعی” در امنیت نپرداختم. از دیگر مسائلی که در این مقاله بهش اشاره نکردم، استانداردها و فریم ورک های امنیتی مثل ISO 27001 هست. این مساله به این معنی نیست که اون ها اهمیت کمتری دارن، بلکه مجبور بودم اهم و مهم کنم و در نتیجه به دلیل محدودیت حجم مقاله مجبور به انتخاب و حذف یک سری از تخصص ها شدم.
برای هر تخصص، یک توضیح مختصر میدم و سپس ابزار معروف و کتاب ها و سایت های خوب آموزشی در اون حوزه رو معرفی می کنم. ضمنا در انتها چندین شغل رو هم معرفی خواهم کرد. بعضی وقت ها تفکیک تخصص از شغل سخته، چون که اسم یک تخصص با اسم شغل یکسان هست، و بعضی وقت ها یک شغل نیازمند دانش در چندین تخصص هست. سعی کردم که توضیح هر بخش کافی باشه، اما اگر جایی ابهام داشت اطلاع بدید تا تصحیح کنم یا توضیح بیشتر بدم.
نکته آخر این که، این مقاله همواره بر اساس نظر خوانندگان و همچنین با یافتن ابزار و کتاب های جدید به روزرسانی خواهد شد.
کمربندها رو ببندید که مقاله نسبتا طولانی ای در پیش داریم.

نکات مهم قبل از شروع:

۱- فیلد امنیت بسیار پویاتر از دیگر شاخه های آی تی هست و هر روز ابزار و آسیب پذیری ها و کتاب ها و تکنیک های جدید کشف/توسعه و منتشر میشن. در نتیجه به روزرسانی دانش و تخصص در این حوزه سخت تر و زمانبرتر از رشته های دیگر هست، پس باید صبور باشید.

۲- وقتی کسی در یکی از شاخه های امنیت تخصص داره، به این معنی نیست که از دیگر شاخه ها هیچ اطلاعی نداره. بسیاری از بخش های امنیت در هم تنیده اند و مطالب و ابزار مشترک دارن و در واقع بسیاری از مفاهیم بنیادی بین تمامی رشته های امنیت مشترک هستن.
به عنوان مثال اگر کسی در زمینه تست نفوذ وب تخصص داره، به این معنی نیست که دانشی در دیگر زمینه های امنیت نداره.

۳- در حال حاضر در رشته های تخصصی امنیت در شرکت های مختلف سراسر دنیا کمبود نیروی کاری وجود داره و شغل برای متخصصین این رشته تضمین شده است، اما صرفا به این دلیل وارد رشته امنیت نشید چون احتمال زیادی وجود داره که موفق نشید. اگر در این رشته پویا، علاقه و انگیزه درونی نداشته باشید، دنبال کردن و به روز نگه داشتن دانش خیلی سخت خواهد شد.

۴- دانش زبان انگلیسی در این حوزه بسیار مهمه (حداقل در حد خوندن متون فنی). تقریبا تمام کتاب ها و پیپرها و منابع آموزشی دست اول و به روز، به این زبان نوشته و منتشر میشن. پس اگر زبانتون در حد خوبی نیست، حتما روی یادگیری اون به عنوان یکی از پیش نیازهای مهم این رشته سرمایه گذاری کنید.

۵- به نظر من مهم ترین ویژگی های شخصیتی یک فرد موفق در این حوزه، کنجکاوی و پشتکار هست. به عنوان مثال در این مقاله کلی اصطلاح و کلیدواژه مطرح میشه که ممکنه قبلا نشنیده باشید. انتظار من این هست که مخاطب خودش این مطالب رو جستجو کرده و بیشتر باهاشون آشنا بشه و اگر با خوندن یک مقاله یا کتاب متوجه یک مطلب نشدید، دنبال منابع دیگر برید و انقدر ادامه بدید تا اون مطلب رو متوجه بشید. البته همونطور که قبلا گفتم باید صبور باشید. بعضی از مطالب ممکنه در ابتدا سخت و مبهم به نظر بیان ولی پس از کسب کمی تجربه و مطالعه بیشتر و سوال از افراد حرفه ای تر، قابل فهم تر خواهند شد.

۶- هر فردی شیوه یادگیری خاص خودش رو داره. بعضیا باید کلاس برن و تحت آموزش استاد باشن، بعضیا ویدئوهای آموزشی رو می پسندن و بعضیا هم مثل من کتاب رو ترجیح میدن. من در این مقاله فقط سایت و کتاب برای یادگیری معرفی می کنم. مهم ترین نکته اینه که هر چیزی رو از هر طریقی که یاد می گیرید حتما به صورت عملی انجام بدید.

مفاهیم بنیادی:

یک سری مفهوم و دانش، زیربنایی هستن و بهتره قبل از شروع یادگیری تخصصی امنیت (یا در کنارش) روی این ها مطالعه جدی داشته باشید چون درک صحیح این مفاهیم، همواره و در تمامی رشته ها به شما کمک خواهد کرد و اگر این مفاهیم رو خوب درک نکنید، در درک مسائل پیچیده تر درجا خواهید زد.

۱- مفاهیم اولیه و مقدماتی رمزنگاری مثل هش، تولید اعداد تصادفی، الگوریتم های رمزنگاری متقارن و نامتقارن، امضای دیجیتالی، تبادل کلید، آشنایی با نحوه کار TLS، آشنایی کلی با ابزار رمزنگاری پرکاربرد مثل OpenSSL، GPG و غیره.

۲- مفاهیم شبکه و TCP/IP و آشنایی با پروتکل های مهم شبکه مثل DNS و HTTP و ARP و تفاوت های بین TCP و UDP و آشنایی با لایه های شبکه، روش کار پراکسی ها و وی پی ان ها، نحوه مشاهده ترافیک شبکه، مفاهیم مقدماتی مربوط به مسیریابی و NAT و نحوه عملکرد gateway ها و غیره. در اوایل یادگیری، ممکنه این مطالب خشک و خسته کننده به نظر بیان، اما با یادگیری عملی (نه صرفا تئوری) می تونید یادگیری رو لذت بخش تر کنید. مثلا می تونید پکت های شبکه رو توسط ابزاری مثل Wireshark مشاهده کنید. از ابزار ابتدایی مثل ncat و curl هم غافل نشید. از ابزار پیشرفته تر میشه به scapy و bettercap اشاره کرد.

۳- آشنایی با ادبیات کلی امنیت. مفاهیمی مثل CIA، Authentication، Authorization، defense-in-depth، آسیب پذیری، اکسپلویت، ریسک، تهدید، فازینگ، بروت فورس، …

۴- آشنایی با مکانیسم کارکرد اینترنت و وب (با نیم نگاهی به امنیت) که پیش نیازش، ۳ مورد قبلی هستن. مثلا وقتی یک صفحه HTTPS رو توی مرورگرتون باز می کنید، چه اتفاقاتی می افته؟ از لحظه ای که آدرس رو توی مرورگر تایپ می کنید تا وقتی که صفحه روی مرورگر نمایش داده بشه، چه پروتکل هایی درگیرن؟ سیستم عامل شما، مرورگر، سرور، سخت افزار ها و نرم افزارهای بین سیستم شما و سرور چه نقشی دارن؟
یک کتاب خیلی خوب در این زمینه High Performance Browser Networking هست که خوندنش رو توصیه می کنم.
از دیگر مفاهیم مربوطه که مهمه، نحوه عملکرد certificate ها و زنجیره این گواهی ها و نقش CA هست.

۵- آشنایی با زبان برنامه نویسی: بسته به فیلدی که توی امنیت انتخاب می‌کنید، دونستن زبان برنامه‌نویسی میتونه بین مفید بودن تا حیاتی بودن تغییر کنه. بسیاری از تخصص های امنیت نیازمند آشنایی با مفاهیم برنامه نویسی هستن و بعضیاشون مستقیما با برنامه نویسی درگیرن. مثلا در ادامه خواهیم دید کسی که تخصصش بررسی امنیتی کد هست، قطعا باید “دید عمیقی” از زبانی که کدش رو بررسی می کنه داشته باشه. ولی برای فیلد دیگه‌ای صرف این که قادر به دستکاری و کامپایل کدهای اپن سورس (در زبان های مختلف) باشه، کفایت کنه. با این حال به طور کلی یکی از زبان های پر کاربرد در دنیای امنیت، که توی قالب فیلدها از پن تست تا اکسپلویت نویسی کاربرد داره، پایتون (Python) هست که ابزار و کتابخانه های امنیتی زیادی در این زبان نوشته شدن. در گذشته از سی استفاده زیادی در امنیت می شد ولی در مقایسه با گذشته، کاربرد این زبان توی نرم‌افزارهای سمت کاربر کمتر شده و بیشتر سمت سرورها و برنامه‌های نیازمند سرعت پردازش و پرفورمنس بالا استفاده میشه (گرچه همچنان دونستن این زبان خیلی کمک می کنه و حتی میشه گفت جاهایی حیاتی هست. به خصوص در حوزه هایی مثل مهندسی معکوس باینری یا توسعه اکسپلویت. چون که بسیاری از نرم افزارهای مهم مثل سیستم عامل ها و مرورگرها در زبان سی یا سی پلاس پلاس نوشته شدن و دونستن مفاهیمی مثل پوینتر ها که در این زبان برای مدیریت حافظه استفاده میشه، مفید هست)
برخی تخصص ها مثل مهندسی معکوس نیازمند دانش اسمبلی (x86,ARM,…) هستن. دونستن زبان جاوا اسکریپت هم به خصوص برای کسانی که به نحوی با وب سر و کله می زنن مهمه. یه سری زبان هم هستن که شاید زبان برنامه نویسی مجزا و کامل نباشن، اما دونستنشون خیلی مهمه. مثل زبان SQL که در پایگاه های داده استفاده میشه . آشنایی با Regex که تقریبا هرجا میتونه کاربرد داشته باشه رو هم مدنظر داشته باشید. همچنین آشنایی با شل ها یا زبان های اسکریپتی سیستم عامل ها مثل bash یا PowerShell هم خیلی کاربردی هست.

۶- دانش خوب از سیستم عاملی که ازش استفاده می کنید و معماری اون و مکانیسم های امنیتی پیاده سازی شده در اون، و آشنایی با command line و …
مثلا برای لینوکس، کتاب هایی مثل How Linux Works یا The Linux Command Line منابع خوبی ان.
کتاب های سری Windows Internals هم برای یادگیری مفاهیم زیربنایی و پیشرفته ویندوز بی نظیرن.

حالا که با مقدمات و پیش نیاز های بحث آشنا شدیم، می تونیم به معرفی زیرشاخه ها، تخصص ها و برخی از مشاغل امنیت بپردازیم.

Binary Reverse Engineering

 

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

این تخصص، زیربنای یک سری تخصص دیگه هست که در ادامه می بینیم.
یک متخصص مهندسی معکوس ممکنه با یک یا چند تا از سیستم عامل های پر کاربرد (ویندوز، لینوکس، مک) و معماری های سخت افزاری اون ها (x86، ARM) آشنا باشه. زبان ماشین (و اسمبلی) معماری های مختلف با هم فرق می کنه. همچنین فرمت فایل های سیستم عامل های مختلف ممکنه با هم فرق کنه.
از جمله ابزار معروف این حوزه میشه به IDA Pro، OllyDbg، WinDbg، gdb، Hopper، Ghidra و radare2 اشاره کرد. همچنین بسیاری از این ابزار پلاگین های تخصصی هم دارن.
از جمله ابزار حرفه ای و مفاهیم تخصصی تر میشه به DBI یا Dynamic Binary Instrumentation و همچنین انواع SMT Solver ها اشاره کرد که از محدوده این مقاله خارج هستن ولی به عنوان چند نمونه می تونید مستندات Intel Pin، Z3 و DynamoRIO رو ببینید.

چند منبع خوب در این زمینه:
کتاب Practical Reverse Engineering
کتاب Practical Binary Analysis
کتاب The IDA Pro Book
https://github.com/tylerha97/awesome-reversing

Malware Analysis

 

تحلیل بدافزار به بررسی رفتار یک بدافزار (ویروس، تروجان، روتکیت، باج افزار …) می پردازه. این تخصص نیازمند دانش مهندسی معکوس هست. خروجی و هدف این بررسی ها می تونه یکی یا چندین مورد از موارد زیر باشه:
تولید گزارش فنی و ارائه اون به مراکز مربوطه (مثلا برای وزارت خانه ها یا سازمان های مهم دولتی)
تولید امضای منحصر به فرد اون ویروس، برای استفاده در آنتی ویروس ها
کشف آی پی ها و URL های مهم استفاده شده توسط بدافزار و گزارش به مراکز مسئول جهت فیلتر کردن اون آدرس ها

به طور کلی میشه گفت تحلیل بدافزار رو به دو روش میشه انجام داد:
۱- تحلیل ایستا (یا استاتیک) که در اون ما فایل رو با روش های مهندسی معکوس disassemble و بررسی می کنیم تا به رفتارش پی ببریم. در اینجا ما فایل رو اجرا نمی کنیم و این روش قطعا محدودیت های خاص خودش رو داره.
۲- تحلیل پویا (داینامیک) که در اون ما بدافزار رو در یک محیط آزمایشگاهی ایزوله و کنترل شده (سندباکس، یا ماشین مجازی) اجرا کرده و رفتار اون رو حین اجرا مشاهده می کنیم تا ببینیم چه تغییراتی در فایل سیستم میده، چه فایل های دیگری رو ممکنه اجرا کنه، به چه آدرس های اینترنتی وصل میشه و چه داده ای رو به اون ها می فرسته یا از اون ها دریافت می کنه، آیا فایل های دیگر رو حذف می کنه (یا فایل های جدید ایجاد می کنه) و مسائلی از این قبیل.
بخش مهمی از ابزاری که در تحلیل بدافزار استفاده میشن، ابزار مهندسی معکوس و همچنین ابزار مربوط به فارنزیکس هستن (که بعدا بهش می رسیم). یکی از ابزار مهم در تحلیل بدافزار، انواع ماشین های مجازی و سندباکس و سیستم های مشابه هستن که به کمک اون ها بدافزار رو در محیط کنترل شده اجرا می کنیم تا آسیبی به سیستم اصلی خودمون نرسه. مثال: VMWare Workstation، VirtualBox
پس از آشنایی بیشتر با ابزار و مفاهیم پیچیده تر استفاده شده توسط بدافزارها متوجه میشید که بعضی از بدافزار ها می تونن این نکته رو تشخیص بدن که داخل یک محیط مجازی یا شبیه سازی شده اجرا شدن، و رفتارشون رو عوض کنن. یا از پکر ها و کریپتور ها استفاده کنن، که این مسائل می تونن تحلیل استاتیک یا پویا رو سخت تر کنن، و یک متخصص تحلیل بدافزار باید با این تکنیک ها آشنا باشه.

چند نمونه منبع خوب:
کتاب Practical Malware Analysis
کتاب The Art of Memory Forensics
https://github.com/rshipp/awesome-malware-analysis

Mobile Application Security
در اینجا ما باز هم تا حدودی با تخصص مهندسی معکوس سر و کار داریم و حتی ممکنه کار تحلیل بدافزار موبایل هم انجام بدیم. بسته به نوع شغل و شرکت، یک متخصص امنیت موبایل، ممکنه هم برنامه های مبتنی بر آندروید و iOS رو بررسی کنه، هم این که به برنامه نویسان اپ موبایل کمک کنه تا سرویس های بک-اند و خود اپ و ارتباط بین این دو رو امن کنن. بعضی از فایل های باینری نیازی به مطالعه کد اسمبلی ندارن، چون که مستقیما به زبان ماشین کامپایل نمیشن. مثلا برنامه های نوشته شده در زبان های مبتنی بر فریم ورک دات نت (مثل سی شارپ)، به یک زبان میانی کامپایل میشن. در نتیجه ما می تونیم از یک فایل باینری (کامپایل شده) به سورس کد برسیم! این مساله در مورد اکثر اپ های مبتنی بر آندروید هم صادق هست و ما می تونیم به سورس کد جاوا که اپ در اون نوشته شده برسیم. گفتم “اکثر اپ ها”، چون روش های متفاوتی برای سخت تر کردن این کار هست. مثلا برنامه نویسا ممکنه از برنامه هایی به اسم obfuscator استفاده کنن تا مهندسی معکوس برنامه سخت تر بشه. یا ممکنه بخش هایی از برنامه شون رو به زبان سیستمی پیاده سازی کرده و به زبان ماشین کامپایل کنن تا زمان و هزینه مهندسی معکوس بیشتر بشه.
مهم ترین تخصص ها برای افراد فعال در این زمینه، آشنایی خیلی خوب با معماری سیستم عامل موبایل و اپ های اون، و همچنین روش تغییر کد برنامه ها و مشاهده ترافیک شبکه اون ها و … است. همچنین آشنایی با نحوه دیباگ کردن پراسس ها یا کرنل سیستم عامل، یا hook کردن و تزریق کد به پراسس ها هم از جمله مهارت های پیشرفته این حوزه هستن (به عنوان یک ابزار مرتبط، frida و مستنداتش رو بررسی کنید)
از اونجایی که پردازنده‌ی اکثر گوشی‌های موبایل امروزی، مبتنی بر ARM هستن، بد نیست بدونید که اگه کارتون به مهندسی معکوس کدهای سیستمی برنامه‌های این پلتفرم‌ها رسید، با Instruction Set و معماری این پردازنده‌ها آشنا بشید

منابع:
کتاب Mobile Application Hacker’s Handbook
https://github.com/ashishb/android-security-awesome

Source Code Audit
در اینجا متخصص مستقیما به کد دسترسی داره و هدف این هست که با مطالعه سورس کد، مشکلات امنیتی اون کشف و گزارش بشه.
یکی از مهم ترین مهارت های یک متخصص امنیت (در تمامی حوزه ها) نوشتن گزارش فنی خوبه. مثلا در اینجا گزارش بررسی امنیتی کد، شامل لیست مشکلات پیدا شده و رده بندی اون ها و توضیح و همچنین روش رفع اون هاست و معمولا مخاطب اصلی گزارش، برنامه نویسانی هستن که کد رو نوشتن.
از جمله قسمت های مهم کد که احتمال کشف باگ حساس در اون ها زیاده:
بخش هایی از کد که داده ها رو از بیرون گرفته و پردازش می کنه. (مثلا داده هایی که کاربر در برنامه وارد می کنه، داده ای که از شبکه/اینترنت می خونیم و …)
بخش هایی که با رمزنگاری مرتبط هستن و عدم آشنایی کافی برنامه نویس یا طراحان سیستم با رمزنگاری ممکنه مشکلاتی رو بعدا به وجود بیاره (چند نمونه: استفاده از الگوریتم های رمزنگاری یا هش قدیمی و غیرامن، تولید داده های رندوم به صورت ناامن، استفاده ناصحیح از الگوریتم های رمزنگاری یا اصطلاحا عدم رعایت best practices، ذخیره داده های مهم به صورت plain)

قطعا آشنایی خیلی خوب با اون زبان برنامه نویسی و فریم ورک ها و کتابخونه های مرتبطش، مهم ترین مهارت این رشته است.
برای بررسی کد، ما علاوه بر استفاده از ابزار، باید قسمت های مهم کد رو هم بخونیم. ابزار به تنهایی قادر به پیدا کردن تمام آسیب پذیری ها نیستن (مثلا آسیب پذیری های ناشی از پیاده سازی منطق اشتباه در برنامه)، اما خیلی می تونن کمک کنن. چند نمونه از ابزار:
نرم افزار تجاری PVS-Studio برای C/C++/C#/Java
gosec برای زبان Go
OWASP SonarQube (برای زبان های مختلف)

به عنوان یک نمونه از مشکلاتی که با بررسی کد می تونستن کشف و رفع بشن این لینک رو ببینید:
https://medium.com/@DanielC7/remote-code-execution-gaining-domain-admin-privileges-due-to-a-typo-dbf8773df767

منابع:
کتاب 24Deadly Sins of Software Security
کتاب Secure Coding in C/C++ 2nd edition
کتاب The Art of Software Security Assessment
https://github.com/mre/awesome-static-analysis

Web Application Penetration Testing
شاید یکی از جذاب ترین تخصص های امنیتی برای افراد غیر امنیتی، تست نفوذ وب باشه که در میان عامه به اصطلاح “هکر” گفته میشن، اگرچه این اصطلاح غلطه.یک متخصص تست نفوذ وب با دانش و ابزارش، یک برنامه مبتنی بر وب رو از نظر امنیتی بررسی می کنه. این تخصص نیازمند آشنایی خیلی خوب با مفاهیم بنیادی وب و اینترنت و مرورگر هاست. این مفاهیم شامل مواردی مثل جاوااسکریپت، HTTP، DOM، سشن ،کوکی، روش های مختلف احراز هویت در وب، OAuth، JWT، SAML و همچنین آسیب پذیری های وب مثل XSS، CSRF، SSRF، SQL Injection میشه.
تلاش برای پیدا کردن باگ یا تست نفوذ وب سایت بدون کسب اجازه از صاحب اون غیرقانونی هست و در صورت شکایت ممکنه تبعات قانونی سنگین داشته باشه (البته ممکنه برخی از اسکن ها یا تست ها غیرقانونی نباشن، ولی بهتره ریسک نکنید و اگر مطمئن نیستید، سایت دیگران رو ارزیابی امنیتی نکنید).
یکی از روش های خوب برای یادگیری مفاهیم و تکنیک های تست نفوذ وب، استفاده از سیستم هایی هست که عمدا به صورت ناامن طراحی شدن تا افرادی که علاقه به یادگیری دارن اون ها رو بررسی کرده و تلاش کنن بهشون نفوذ کنن. مثلا شما می تونید OWASP Juice Shop یا DVWA یا دیگر برنامه های مشابه رو به رایگان دانلود کرده و روی سیستمتون (داخل ماشین مجازی) اجرا کنید. سپس سعی کنید تا مشکلات امنیتی و آسیب پذیری های موجود در این سیستم ها رو پیدا کنید.
یکی دیگه از روش های خیلی خوب برای یادگیری مفاهیم و تکنیک های مختلف در رشته های مختلف امنیتی، شرکت در مسابقات CTF هست. این مسابقات اغلب به صورت آنلاین هستن و شرکت در اون ها رایگان هست. در یک مسابقه، سوالاتی در حوزه های مختلف امنیت و با سطوح مختلف سختی مطرح میشن و تیم های مختلف، در یک بازه زمانی محدود (مثلا ۱ روز) با هم رقابت می کنن تا بتونن با حل بیشترین تعداد چالش، حداکثر امتیاز رو برای خودشون ثبت کنن. این سوالات فقط در حوزه امنیت وب نیستن، بلکه برای یادگیری و تمرین دیگر فیلد ها مثل مهندسی معکوس فایل هم می تونید ازش استفاده کنید. برای شروع می تونید توی مسابقات ساده و دانش آموزی شرکت کرده و سراغ سوالات ساده (با امتیاز پایین) برید. همچنین می تونید جواب و روش حل سوالات مسابقات گذشته رو بخونید. به این نوشته ها معمولا writeup گفته میشه و اگر تلاشتون برای حل سوال ناکام موند، می تونید بعدا سراغ writeup دیگران رفته و ببینید دیگران چطور به جواب رسیدن. از سایت های معروف و مهم مرتبط با CTF، سایت ctftime.org هست که یک سایت مرکزی برای اعلام زمان بندی مسابقات، رتبه بندی تیم های بین المللی و همچنین درج writeup های مسابقاته.
از جمله ابزار معروف و مهم استفاده شده در تست نفوذ وب میشه به Burp Suite اشاره کرد که یک نسخه رایگان هم داره و می تونید برای شروع از اون استفاده کنید.
چند نمونه منبع خوب (سایت و کتاب) برای یادگیری تست نفوذ وب و همچنین مفاهیم امنیتی به کار رفته:
https://portswigger.net/web-security
https://github.com/Voorivex/pentest-guide
بخش هایی از کتاب Hacker Playbook
کتاب Web Application Hacker’s Handbook
کتاب The Tangled Web
کتاب OAuth 2.0 In Action
کتاب Web Hacking 101

Network Penetration Testing
هدف تست نفوذ شبکه، ارزیابی امنیت شبکه یک شرکت یا سازمان و کشف آسیب پذیری ها و مشکلات امنیتی مختلف در نرم افزارها و سخت افزارهای اون شبکه است. متخصص تست نفوذ شبکه باید با سیستم عامل های استفاده شده در سرورها، و به خصوص پیکربندی شبکه در اون ها آشنا باشه (معمولا ویندوز سرور و لینوکس). همچنین باید تکنولوژی های مرتبط مثل Active Directory و امنیت اون ها رو بفهمه. یکی از اولین قدم هایی که یک متخصص تست نفوذ وب یا شبکه انجام میدن، آشنایی با هدف و کسب اطلاعات در موردش هست. بخشی از این اطلاعات رو میشه با ابزار مختلف مثل اسکنر ها پیدا کرد و بخشی هم توسط OSINT یا Open Source Intelligence به دست میاد. OSINT به تکنیک های کسب اطلاعات از طریق منابعِ در دسترس اطلاق میشه. روش های زیادی برای این کار وجود داره: موتورهای جستجو مثل گوگل، اطلاعات موجود در مورد یک دامنه یا آی پی از طریق whois، اطلاعات قدیمی در مورد یک وب سایت از طریق وب سایت هایی مثل archive.org، اطلاعات موجود در روزنامه رسمی یک شرکت، Shodan و غیره.
برای تست نفوذ شبکه از ابزار مختلفی استفاده میشه. بعضی وقتا این ابزار ممکنه به ظاهر پیش پا افتاده باشن ولی آشنایی با اون ها خیلی مهمه (مثل bash یا Powershell). بعضی از این ابزار هم تخصصی هستن مثل mimikatz برای استخراج پسورد و ارتقای سطح دسترسی در ویندوز. یک ابزار مشهور دیگر در این حوزه Metasploit هست که مثل یک جعبه ابزار چندکاره می مونه.همچنین از اسکنرهای رایگان و محبوب و معروف شبکه میشه به nmap اشاره کرد. ضمنا می تونید از سیستم عامل هایی استفاده کنید که بسیاری از این ابزار رو کنار هم گذاشتن: مثل سیستم عامل Kali که مبتنی بر لینوکس هست و بسیاری از ابزار امنیتی رایگان و اپن سورس به صورت پیش فرض روی اون نصب هستن و نیازی به صرف زمان برای دانلود و نصب و پیکربندی (یا کامپایل) این برنامه ها نیست.

چند نمونه از منابع خوب:
https://adsecurity.org
کتاب Hacker’s Playbook
کتاب Attacking Network Protocols: A Hacker’s Guide to Capture, Analysis, and Exploitation
لینک کلی کتاب و سایت خوب برای یادگیری تست نفوذ: https://github.com/enaqx/awesome-pentest

Exploit Development
اکسپلویت از نظر لغوی به معنی سو استفاده است و در اینجا به سو استفاده از آسیب پذیری های کشف شده اشاره می کنه. عموما اکسپلویت، کدی است که در صورت اجرا بر روی سیستم هدف، با سو استفاده از یک آسیب پذیری موجود، مکانیسم های امنیتی رو دور زده و قطعه کد مخربی رو روی سیستم قربانی اجرا می کنه. مثال: یک آسیب پذیری در مرورگر کروم توسط یک محقق کشف میشه که اگر ما با کروم یک URL خاص رو باز کنیم، مرورگر کرش می کنه. با بررسی و مطالعه اون آسیب پذیری ممکنه بشه اکسپلویتی نوشت که با باز شدن اون آدرس خاص در کروم، مرورگر کرش نکنه، بلکه یک کد خاص بر روی سیستم قربانی اجرا بشه که مثلا به هکر دسترسی به اون سیستم بده، یا یک سری اطلاعات رو از اون سیستم جمع آوری کرده و برای هکر ارسال کنه. در عمل برای نوشتن چنین اکسپلویتی، فرد باید دانش بسیار خوبی در این زمینه ها داشته باشه:
آشنایی با معماری سیستم عامل مقصد (مثلا ویندوز ۶۴ بیتی) از جمله مباحث مربوط به مدیریت حافظه و ساختار حافظه و ساختار پراسس ها
آشنایی با معماری نرم افزار مقصد (کروم)
آشنایی با انواع مکانیسم های امنیتی به کار رفته در سیستم عامل و نرم افزار (مثلا نحوه عملکرد سندباکس مرورگر کروم، متدهای مختلف دور زدن DEP یا stack canary یا ASLR و …)
نوشتن shellcode (کدی که قراره بر روی سیستم هدف اجرا بشه) یا استفاده از ابزاری جهت تولید و تغییر شل کد

در صورتی که به دنبال کشف آسیب پذیری (vulnerability) هستید، باید با انواع متدهای کشف آسیب پذیری (مهندسی معکوس، فازینگ، مطالعه سورس…) و همچنین انواع کلاس های آسیب پذیری (Memory corruption، انواع overflow، race condition و غیره) آشنا باشید. البته تکنیک های فازینگ گستره کاربری بیشتری دارن و در خیلی از حوزه های تست نرم افزار و همچنین امنیت قابل استفاده هستن (از جمله در تست نفوذ، در کشف آسیب پذیری، در research ، برای باگ بانتی و غیره)
منابع:
کتاب Hacking: The Art Of Exploitation
کتاب A Bug Hunter’s Diary
مقاله های آموزشی سایت https://www.corelan.be
لیست منابعی در حوزه فازینگ: https://github.com/secfigo/Awesome-Fuzzing

Wireless Security

 

ارزیابی امنیت سیستم های مبتنی بر فن آوری های وایرلس، هدف اصلی این تخصص هست. بر خلاف تصور اولیه، سیستم های وایرلس، محدود به وایفای نیستن، بلکه هر نوع انتقال داده یا کنترل از راه دور توسط هر نوع سیگنال وایرلس می تونه مشکل امنیتی داشته باشه. مثال: سیستم های مبتنی بر RFID/NFC برای ورود و خروج یا پرداخت، پروتکل های جدید مثل LoRa یا Zigbee، بلوتوث، سیستم ورود keyless به خودرو، پروتکل های استفاده شده در شبکه های موبایل GSM و LTE و غیره
از کتاب های خوب این حوزه میشه به Hacking Exposed Wireless اشاره کرد.
ابزار به کار رفته در این حوزه، بستگی به سیستم و پروتکل استفاده شده داره. مثلا از RFID reader/writer برای تحقیق روی دستگاه های RFID استفاده میشه. برای سیگنال های محدوده VHFو UHF و بالاتر ممکنه از SDR (رادیو نرم افزار) هایی مثل bladeRF، USRP،HackRF، LimeSDR و غیره استفاده بشه. همچنین برخی پروتکل ها و استانداردهای خاص مثل بلوتوث یا وایفای ابزار خاص خودشون رو دارن. مثل ubertooth برای بلوتوث، یا استفاده از برخی کارت شبکه های وایرلس به همراه نرم افزارهایی مثل aircrack-ng برای هدف قرار دادن شبکه های مبتنی بر وایفای (در محدوده فرکانسی ۲.۴ و ۵.۸ گیگاهرتز)
برای آشنا شدن با جذابیت های این حوزه از امنیت میتونید کمی در مورد قابلیت WPS مودم ها بخونید که در ابتدا برای افزایش امنیت اونها اضافه شد و بعدتر به عنوان یک نقطه ضعف غیرقابل اصلاح خودش رو نشون داد و باعث هک شدن هزاران روتر و مودم در سراسر دنیا شد. بعدتر هم میتونید در مورد آسیب پذیری KRACK مطالعه کنید که یک آسیب پذیری توی پروتکل WPA2 رو هدف قرار داد و نحوه ی کشف کردنش هم خیلی جالب بود. به این صورت که این پروتکل 15 ساله که توی سال 2004 ارائه شد، توسط Audit یک محقق امنیتی توی سال 2016 آسیب پذیری خودش رو نشون داد.

Hardware Security

 

در اینجا هدف اصلی بررسی امنیت یک سخت افزار هست و ما قاعدتا دسترسی به اون سخت افزار داریم. به عنوان مثال فرض کنید یک مودم LTE در اختیار ما قرار گرفته تا اون رو از نظر امنیتی بررسی کرده و تلاش کنیم آسیب پذیری های اون رو کشف کنیم. ممکنه ما نتونیم صرفا از طریق بررسی نرم افزار مبتنی بر وب اون مودم به مشکل امنیتی خاصی برسیم، اما با بررسی سخت افزار اون، و استخراج firmware به صورت مستقیم و بررسی اون، آسیب پذیری های امنیتی در سیستمش پیدا کنیم. برای تخصص در این رشته، باید آشنایی خوبی با الکترونیک و به خصوص الکترونیک دیجیتال و مدارهای منطقی و میکروکنترلرها (مثل AVR) و FPGA ها و سیستم های ارتباطی بین سخت افزارها مثل UART، SPI، I2C، USB، JTAG و … داشته باشید. از ابزار مهم در این حوزه میشه به اسیلوسکوپ و لاجیک آنالایزر اشاره کرد. همچنین دو متد پیشرفته به عنوان نمونه ذکر می کنم: fault injection و power analysis. در بسیاری از موارد، هدف این هست که بتونیم داده ها یا پروتکل های ارتباطی بین قسمت های مختلف یک سخت افزار رو sniff کرده و یا فرم-ویر اون رو استخراج کنیم، اما در موارد پیشرفته یک فرد ممکنه حتی دست به مهندسی معکوس خود سخت افزار بزنه که نیازمند ابزار و متدهای خاص هست (مثل مهندسی معکوس پیاده سازی یک آی سی که نیازمند عملیات فیزیکی مثل برداشتن لایه رویی آی سی توسط مواد شیمیایی خاصه)
البته لازم به ذکره که Power Analysis خودش زیر مجموعه ی حملاتی با عنوان Side Channel Attacks قرار میگیره. این حملات که انواع دیگه ای هم دارند، علاوه بر نیاز به داشتن دانش عمیق از نحوه ی عملکرد سخت افزارها، گاها نیاز به داشتن دانش عمیقی از پروتکل های رمزنگاری و ریاضیاتی نیز دارند و بد نیست بدونید توی دنیای امروزی، Side Channel Attackها جزو حملات اصلی و مهم روی ماژول های امنیتی خاص منظوره مثل HSMها و Smart Cardها به حساب میان.

Physical Penetration Testing

 

تست نفوذ فیزیکی معمولا به منظور ارزیابی امنیت فیزیکی ساختمان ها و مکانیسم های امنیتی به کار رفته در اون ها انجام میشه. به عنوان مثال، ممکنه موفقیت تست رو به این شکل تعریف کنیم که فرد متخصص تست نفوذ باید قادر باشه بدون کارت ورود و خروج (یا دانستن رمز درب های الکترونیکی) خودش رو به یک نقطه حساس درون ساختمان برسونه (مثل اتاق کنترل در دیتاسنتر). در اینجا روش های مختلفی ممکنه استفاده بشه. از روش های فنی مثل باز کردن قفل ها توسط متدهای lockpicking گرفته، تا روش های مهندسی اجتماعی مثل فریب یا tailgating جهت دور زدن نگهبان ها. برای این تخصص نمیشه ابزار خاصی تعریف کرد، بلکه طرز فکر و خلاقیت مهم هست. در یک مثال، متخصص تست نفوذ یک خانم بود که با وانمود کردن به این که باردار هست و جعبه سنگینی رو هم حمل می کرد، به نگهبان های ساختمون اعلام می کنه که کارت پرسنلیش رو جا گذاشته و به دلیل وضعیت جسمیش قادر به برگشت به خونه نیست و اون ها هم کمک می کنن جعبه رو به طبقه مورد نظر برسونه و سپس وارد اتاق مربوطه شده و لپتاپش رو به شبکه سازمان وصل کنه! یا به عنوان یه مثال دیگه میشه به هکرهایی اشاره کرد که فلش مموری های آلوده رو نزدیک ورودی ساختمان های محافظت شده روی زمین و در مسیر کارمندها قرار می دن با این هدف که شاید یکی از کارمندها یکی از این فلش های آلوده رو با خودش به داخل سازمان ببره و به رایانه های حفاظت شده متصل کنه!

لیست منابع خوب:
کتاب Social Engineering: The Science of Human Hacking
کتاب Practical Lock Picking

Forensics

فارنزیکس به معنای جرم شناسی، پیشنیه ای قدیمی تر از دنیای کامپیوتر و نرم افزار داره و به علم بررسی صحنه جرم جهت کشف بقایای به جامانده از مجرم یا مجرمین اطلاق میشه. در دنیای امنیت سایبری، متخصصین فارنزیکس، پس از وقوع یک حادثه، شواهد باقیمانده رو بررسی می کنن تا به اطلاعات بیشتری در مورد زمان و نحوه وقوع حادثه و عوامل پشت اون بپردازن. یک نمونه از این حادثه، نفوذ به شبکه یک سازمان یا سرقت اطلاعات هست. معمولا با بررسی log های نرم افزارهای مختلف میشه تکه های مختلف پازل رو جمع کرده و با کنار هم گذاشتن اون ها به یک تحلیل رسید. یکی از اطلاعات مهمی که در هنگام وقوع یک حادثه ثبت میشه، آدرس آی پی سیستم مقصد/مبدا هست.
از دیگر کاربردهای فارنزیکس، استفاده از اون توسط پلیس برای بررسی کامپیوتر یا تلفن همراه مجرمین پس از دستگیری هست. فارنزیکس معمولا در مورد شبکه، دیسک و حافظه انجام میشه.
بعضی وقتا فارنزیکس به تنهایی یک شغل نیست بلکه یک تخصص هست که در قالب مشاغل دیگر مثل Security Analyst در جاهایی مثل SoC (مرکز عملیات امنیت) استفاده میشه.
البته باید بدونید که هکرها هم در مقابل فارنزیکس بیکار نمی نشینند و از تکنیک هایی برای حذف کردن رد پای خودشون استفاده می کنند.
لیست منابع خوب:
کتاب Art of Memory Forensics
لیست جامعی از کتاب ها و ابزار این رشته: https://github.com/cugu/awesome-forensics

Cloud Security

 

در سال های اخیر استفاده از کلاد (ابر) جهت پردازش و ذخیره داده ها و همچنین اجرای برنامه ها رشد چشمگیری داشته و همین مساله باعث شده که مشاغل جدیدی هم در این زمینه ایجاد بشن که یکی از اون ها تخصص امنیت سیستم های مبتنی بر کلاد هست. به غیر از مفاهیم سنتی امنیت، اینجا شما باید با کلاد مورد استفاده و ویژگی های امنیتیش آشنا باشید (آمازون، گوگل و مایکروسافت ۳ شرکت اصلی ارائه دهنده سرویس های پردازش ابری هستن)
در حال حاضر AWS آمازون بیشترین سهم بازار رو در اختیار داره.
یه سری ابزار هستن که کار بررسی امنیتی کلاد رو راحت تر می کنن، مثل ScoutSuite، اما در نهایت کسی که متخصص امنیت کلاد هست، باید بدون اتکای مطلق به ابزار، مفاهیم رو خوب بلد باشه. مثلا در مورد آمازون، یک متخصص امنیتی باید چالش های طراحی و اجرای سیستم های نرم افزاری بر روی این کلاد، تنظیمات مختلف مربوط به مدیریت اکانت ها و IAM، امنیت سیستم های میزبان فایل مثل S3، تنظیمات شبکه و استفاده از سیستم های مانیتورینگ مثل CloudWatch و غیره رو بلد باشه. این شغل در حال حاضر شغل داغی بوده و بازار خوبی داره؛ البته ممکنه به تنهایی یک شغل نباشه، بلکه جزئی از تخصص های مورد نیاز شغل مربوطه (مثل شغل بعدی) باشه.
از منابع مهم این تخصص، مستندات خود شرکت های ارائه دهنده سرویس های کلاد هستن. اگر با مفاهیم سطح بالاتر کلاد میخواید آشنا بشید، نگاهی به کتاب
CCSP (ISC)2 Certified Cloud Security Professional Official Study Guide
بندازید.
یک کتاب جدید مختص کلاد آمازون: Hands-On AWS Penetration Testing with Kali Linux

Security Engineering

 

شغل مهندسی امنیت نیازمند دانش در گستره وسیعی از دنیای امنیت هست. ممکنه بعضی شرکتا اسامی دیگری هم براش استفاده کنن مثلا Application Security Engineer یا Product Security Engineer.
شرح وظایف یک مهندس امنیت ممکنه از شرکتی به شرکت دیگر فرق کنه ولی به طور کلی یک مهندس امنیت باید درک خوبی از چرخه تولید نرم افزار و امن سازی اون داشته باشه و با افراد مختلفی در این چرخه درگیر هست (توسعه دهنده، طراح، تستر، SRE، …)
همونطور که گفتم در این شغل شما با طیف وسیعی از تخصص ها سر و کله می زنید. بخشی از وظایف یک مهندس امنیت عبارتند از:
تضمین امنیت سیستم های CI/CD و چرخه تولید و توزیع نرم افزار
اتومیشن و خودکار سازی چک های مختلف امنیتی. مثال: اسکن آسیب پذیری dependency ها، بررسی IAM و access control ها، بررسی امنیتی زیرساخت مایکروسرویس ها و کانتینر ها و …
ارائه مشاوره امنیتی به دیگر تیم ها در شرکت
مشاوره و بررسی امنیتی محصول در مراحل مختلف (طراحی، توسعه، تست، رلیز)
آموزش امنیت در شرکت (یا در دپارتمان. بستگی به اندازه شرکت و وظایف تعریف شده داره)
تست امنیتی محصول
تولید مستندات امنیتی داخلی (مثل best practices ها)
Threat Modeling

منابع:
کتاب Securing DevOps
کتاب Security Engineering: A Guide to Building Dependable Distributed Systems
کتاب Threat Modeling: Designing for Security
کتاب Defensive Security Handbook
کتاب Serious Cryptography

Red Team / Blue Team
Red team یک اصطلاح نظامی هست و به افراد یا تیم هایی گفته میشه که سعی در شبیه سازی شیوه تفکر دشمن می کنن و در واقع خودشون رو جای دشمن میذارن تا ببینن آسیب پذیری ما در مباحث نظامی در کدوم بخش هاست و استراتژی و تاکتیک های حمله بر اساس اون نقاط ضعف طراحی می کنن. سپس با بررسی این یافته ها میشه اون نقاط ضعف رو بهبود داد.
در ادبیات امنیت سایبری red team به تیمی اطلاق میشه که خودش رو جای هکرها گذاشته و سعی در طراحی و اجرای حمله و نفوذ به سیستم های مختلف سازمان داره. در نقطه مقابل هدف blue team دفاع از شبکه سازمان و جلوگیری، تشخیص و پاسخ به رویدادهای امنیتی هست. معمولا blue team در قالب SoC فعالیت می کنه و از ابزار مختلفی مثل SIEM جهت مانیتور کردن ترافیک شبکه و تعامل دنیای بیرون با شبکه سازمان/شرکت استفاده می کنه. یکی از تخصص های مهم در این حوزه، بحث incident response هست که شامل پروسه های درگیر در بررسی و پاسخ به یک رویداد امنیتی هستن (مثلا Security Analyst ها با استفاده از ابزار مختلف و مانیتور وضعیت سیستم ها و شبکه و لاگ های مختلف و با بررسی آلارم هایی که این ابزار تولید می کنن، رویداد های امنیتی رو بررسی کرده و در صورت نیاز اقدامات لازم جهت پیشگیری یا رفع یک رویداد مثل یک حمله رو انجام میدن. افرادی که در این حوزه فعالن ممکنه نیاز باشه on-call باشن، یعنی پس از ساعات کاری هم باید در دسترس باشن تا در صورت وقوع رخداد، اون رو بررسی کنن)

لیست منابع:
کتاب Blue Team Handbook
کتاب Blue Team Field Manual
کتاب Practical Packet Analysis
کتاب Rtfm: Red Team Field Manual
https://github.com/meitar/awesome-cybersecurity-blueteam
https://github.com/yeyintminthuhtut/Awesome-Red-Teaming

Bug Hunting
اگر فیلم های وسترن و غرب وحشی رو دیده باشید، حتما صحنه هایی رو دیدید که یک کلانتر آگهی دستگیری یک مجرم به همراه عکس اون و جایزه نقدی رو به دیوار می چسبونه. به افرادی که دنبال این مجرما می رفتن تا به پولش برسن bounty hunter می گفتن. مشابه این مساله رو در دنیای سایبری هم داریم. بعضی از شرکت ها به صورت رسمی اعلام می کنن که اگر کسی در محصولاتشون آسیب پذیری امنیتی پیدا کنه، جوایز نقدی (بر اساس سطح آسیب پذیری) پرداخت می کنن. البته این مساله قوانین خاص خودش رو هم داره تا مانع سواستفاده افراد با انجام کارهای مخرب مثل DoS بشه.به عنوان مثال اگر علاقه مند به کشف آسیب پذیری هستید و دوست دارید در زمینه تست نفوذ وب فعالیت کنید، می تونید به عنوان یک bug hunter به صورت پاره وقت یا حتی تمام وقت فعالیت کنید. برای اطلاعات بیشتر به سایت هایی مثل HackerOne سر بزنید.
برای این که بتونید bug hunter باشید، باید در یک یا چند تا از تخصص هایی که در این مقاله ذکر کردم متخصص باشید. مثلا متخصص امنیت و تست نفوذ وب باشید و سراغ برنامه شرکت هایی برید که وب سایتشون رو در معرض تست قرار دادن.

منابع:
منابع مرتبط با تخصص هایی مثل تست نفوذ وب
کتاب A Bug Hunter’s Diary
https://github.com/Muhammd/awesome-bug-bounty

Security Research
هر کسی که در یک حوزه مرتبط با امنیت تحقیق می کنه، محقق نامیده میشه. این تخصص، با برخی از موارد فوق که اشاره کردیم همپوشانی داره. مثال های زیادی میشه زد:
* افرادی که در حوزه کشف آسیب پذیری های جدید تحقیق می کنن
* تحقیق بر روی امنیت دستگاه های جدید (خانه هوشمند، خودروهای جدید و پروتکل های استفاده شده در اون ها مثل پروتکل های مبتنی بر CAN، لوازم پزشکی متصل به شبکه، …)
* تحقیق بر روی دور زدن مکانیسم های امنیتی جدید ارائه شده توسط سیستم عامل ها
* تحقیق در زمینه مشکلات امنیتی ناشی از معماری سخت افزارهای نوین (مثل انواع آسیب پذیری های موسوم به side-channel از قبیل Spectre و Meltdown در سی پی یو های اینتل)
* تحقیق در زمینه امنیت الگوریتم های رمزنگاری و تلاش برای کشف رخنه امنیتی در اون ها
* تحقیق در زمینه کشف آسیب پذیری در سیستم های مبتنی بر blockchain
* تحقیق در حوزه امنیت سیستم های مخابراتی و پروتکل های به کار رفته در اون ها مثل SS7

دو مورد زیر اسم شغل هستن، نه لزوما یک تخصص؛ اما جهت تکمیل بحث، یه توضیح یک خطی در موردشون میدم.

CISO
این شغل مخفف Chief Information Security Officer بوده و معمولا بالاترین عنوان امنیتیه که در رده مدیریتی C-level قرار می گیره و مسئول طراحی استراتژی امنیتی سطح بالای سازمان و ترسیم نقشه راه و برنامه های بلند مدت هست. فرد در این سطح کار فنی انجام نمیده.

Security Architect
لزوما تمام شرکت ها معمار امنیتی ندارن و همیشه تعریف واحدی وجود نداره، اما میشه گفت بالاترین رده فنی (و نه مدیریتی) امنیتی در یک شرکت هست که معماری و طراحی سطح بالای فنی امنیتی رو انجام میده و پیاده سازی این طراحی ها توسط مهندسین امنیتی صورت می گیره.

مدارک دانشگاهی و حرفه ای
برای موفقیت و کسب تخصص، هیچ نوع مدرک یا دوره خاصی الزامی و پیش نیاز نیست. بسیاری از افراد موفق این حوزه مدارک حرفه ای ندارن (یا مدرک دانشگاهیشون مرتبط نیست). قطعا برای یک سری مشاغل خاص مثل مشاغل آکادمیک و تحقیقاتی بهتره که مسیر آکادمیک رو دنبال کنید. همچنین ممکنه برای استخدام در یک پوزیشن خاص در یک شرکت لازم باشه که یک مدرک حرفه ای بین المللی داشته باشید، اما غالب آگهی های استخدامی، این مساله رو به صورت یک نقطه قوت در نظر می گیرن، تا یک پیش نیاز سفت و سخت.
برای افرادی که سال هاست در حوزه امنیت فعال هستن و وارد فاز مدیریتی یا سطوح بالاتر شغلی میشن، یکی از بهترین و معروف ترین مدارک CISSP هست. از دیگر مدارک فنی میشه به CEH و انواع مدارک GIAC (در حوزه های مختلف) اشاره کرد.
همچنین برخی شرکت ها گواهینامه های فنی مربوط به دانش تخصصی در زمینه محصولات و فن آوری های خودشون رو دارن مثل CCNP/CCIE Security سیسکو یا AWS Certified Security – Specialty آمازون.

نکته خیلی مهم در رابطه با مدارک اینه که اون ها رو به عنوان یک ضمیمه دانش و تخصص و تجربه تون نگاه کنید، نه یک پیش نیاز و به وجود آورنده دانش و تجربه.

سخن آخر

در این مقاله سعی کردم نگاه مختصری به مشاغل و تخصص های مرتبط با امنیت سایبری داشته باشم. قطعا مواردی هستن که از قلم افتادن و به هیچ عنوان ادعا نمی کنم که این مقاله کامل هست. اگر پیشنهاد یا سوالی دارید یا مشکلی در مقاله پیدا کردید، می تونید توسط ایمیل (amehdi@pm.me) یا توییتر (mehdi0x61) با من در ارتباط باشید. همچنین اگر پیشنهادی برای نگارش مقاله در حوزه های مرتبط با امنیت دارید می تونید بهم پیشنهاد بدید تا در موردشون بنویسم.
جهت بهره گیری بهتر از مطالب، توصیه می کنم لینک های ارائه شده رو ببینید و بخونید.
امیدوارم چیز جدیدی از این مقاله یاد گرفته باشید.

در انتها از دوستان عزیزی که این متن رو مطالعه کرده و با تیزبینی و همچنین تخصص خودشون، در ویراستاری فنی و ادبی بهم کمک کردن تشکر مخصوص می کنم. به خصوص اعضای تیم آفسک و به خصوص تر: امیر رسولی، ابراهیم قاسمی و یاشار شاهین زاده.

درباره نویسنده (مهدی عسگری):
من بیش از ۱۰ سال سابقه کار حرفه ای در حوزه امنیت دارم و در حال حاضر در برلین آلمان زندگی می کنم و به عنوان مهندس ارشد امنیت در یک شرکت مشغول به کار هستم. یکی از علایق مرتبط با تخصصم، آموزش مسائل فنی و امنیتی به زبان ساده است. به نظر من این مساله در حوزه کاری ما خیلی مهمه چون infosec پر از لغات و اصطلاحات و مفاهیم دشوار تخصصیه که گاهی اوقات حتی افراد فنی هم در فهمشون مشکل دارن، و به نظرم افراد متخصص علاقه مند، باید تمرکز بیشتری بر روی آموزش این مفاهیم پیچیده به زبان ساده تر داشته باشن تا دانش و آگاهی عمومی امنیتی بیشتر بشه. یکی از گروه هایی که در اون عضو هستم، گروه آفسک هست که این مقاله رو در سایتش می خونید و در نظر دارم مقالات آموزشی بیشتری به زبان فارسی و در این وب سایت منتشر کنم.

ضمیمه ها

ضمیمه ۱: این یک مقاله مشابه هست که خوندنش رو خیلی توصیه می کنم و کلی لینک خوب داخلش داره:
https://jhalon.github.io/becoming-a-pentester/

این هم لینک لیستی از مقالات مشابه:
https://gist.github.com/mubix/5737a066c8845d25721ec4bf3139fd31

به روزرسانی ۹ آگوست ۲۰۱۹: این لینک رو هم چک کنید که شرح وظایف مشاغل مختلف مرتبط با مهندسی امنیت در Gitlab هست و سطوح مختلف و تفاوت هاشون رو توضیح میده:

https://about.gitlab.com/job-families/engineering/security-engineer/

ضمیمه ۲: لیست آی دی برخی از اکانت های فعال در حوزه infosec در توییتر

briankrebs
scott_helme
Halvarflake
ErrataRob
Fox0x01
Hackerfantastic
X0rz
NCCGroupInfosec
dakami
aionescu
agl__
lennyzeltser
mikko
troyhunt
Taviso
ashk4n
tqbf
MalwareTechBlog
KimZetter
offsecmag

ضمیمه ۳. لیست سایت های خبری و آموزشی و فروم های خوب در حوزه های مختلف امنیت:

https://pentesterlab.com
ThreatPost
Awesome-Infosec repo
https://googleprojectzero.blogspot.com
https://www.exploit-db.com
https://thehackernews.com
https://www.vulncode-db.com
https://security.stackexchange.com
https://www.reddit.com/r/netsec
https://www.reddit.com/r/AskNetsec
https://t.me/offsecmag

ضمیمه ۴: برخی از کنفرانس های مرتبط با امنیت که می تونید ویدیوهای کنفرانس های قبلی رو توی سایت هایی مثل یوتوب پیدا کرده و مشاهده کنید:
OffensiveCon
BSides
nullCon
Infiltrate
CanSecWest
HITB
Defcon
Usenix


Comments

  1. دمتون گرم که انقد خوبو منظمو حرفه ای هستین

  2. مهدی خیلی ممنون لطفا در مقاله آتی مبحث هوش مصنوعی با رویکرد امنیتی رو پر رنگ تر دنبال کن.

Leave a Reply

Your email address will not be published / Required fields are marked *