تست نفوذ چیست؟
در تعریفی ساده تست نفوذ، penetration testing یا pen testing یک حمله سایبری شبیه سازی شده علیه سیستم کامپیوتری شما است. این حمله شبیه سازی شده برای بررسی آسیب پذیریهای قابل بهره برداری میباشد. تست نفوذ در واقع تلاشی برای ارزیابی سطح امنیت زیرساختهای فناوری اطلاعات، توسط آزمایش و اجرا آسیب پذیریهای موجود به صورت امن است.
آسیب پذیریهای مذکور ممکن است در سطح سیستمعاملها، سرویسها، برنامههای کاربردی، رفتارهای کاربران نهایی، تنظیمات و پیکربندیها به وجود آید. چنین ارزیابیهایی در کنار انجام اهداف اصلی خود قادر به تایید یا رد مکانیزمهای دفاعی و همچنین تعیین مقدار پایبندی کاربر نهایی به سیاستهای امنیتی شما میباشد.
تست نفوذ معمولا با استفاده از فناوریهای خودکار و انجام مراحل دستی صورت میگیرد. تا به طور سیستماتیک منابع شما را مورد بررسی قرار دهد. این منابع میتواند شامل موارد زیر باشد.
- سرورها
- نقاط پایانی (endpoints)
- برنامههای کاربردی وب
- شبکههای بیسیم یا وایرلس
- دستگاههای داخل شبکه
- دستگاههای موبایل
- سایر نقاط بالقوه
هنگامی که پن تستر (آزمایش کننده نفوذ) موفق به اجرا و اکسپلویت یک آسیب پذیری در سیستمی خاص شود، ممکن است تلاش نماید تا با استفاده از آسیب پذیری کشف شده به منابع داخلی نفوذ نماید و یا دادههایی را از آن استخراج کند. این کار معمولا با گرفتن مجوزهای امنیتی و بدست آوردن دسترسی عمیقتر به داراییها و دادههای دیجیتال توسط privilege escalation صورت میگیرد.
در مرحله بعد اطلاعات مربوط به آسیب پذیریهای امنیتی که با موفیقت اکسپلویت شدهاند، جمع آوری شده و به مدیران IT و NSMها (Network system mangers) ارائه میشود تا به متخصصان خود کمک نمایند که نتیجههایی استراتژیک داشته باشند و در انجام تلاشهای اصلاحی خود اولویت بندی را رعایت نمایند.
هدف اصلی تست نفوذ، اندازهگیری امکان قرار گرفتن کاربر نهایی یا سیستم، در معرض خطرها است. همچنین شما با انجام این عملیات قادر میباشید تا هرگونه پیامد مرتبط (به سیستم مورد بررسی) که میتواند برای منابع یا روند عملیاتهای سازمان شما خطر ساز باشد را مورد ارزیابی قرار دهید.
تفاوت تست نفوذ با اسکن آسیب پذیری (Vulnerability Scans) چیست؟
از آنجایی که عموما این دو عملیات هم عرض پنداشته میشود، در ابتدا به تفاوت این دو میپردازیم.
اسکنرهای آسیب پذیری ابزارهایی خودکار میباشند که شما میتوانید با تعیین هدف یا هدفهایی برای آنها، تست نفوذی خودکار را پیادهسازی و گزارشی را دریافت نمایید. اسکنرها اغلب آسیب پذیریهای کشف شده را با استفاده از شناسه CVE فهرست مینمایند که اطلاعاتی را در مورد نقطه ضعف شناخته شده ارائه میدهد.
چرا تست نفوذ مهم است؟
1. توانایی شناسایی و اولویت بندی خطرات امنیتی
تست نفوذ، توانایی سازمان را برای محافظت از شبکهها، برنامههای کاربردی، نقاط پایانی (end points) و کاربران خود در برابر تلاشهای داخلی و خارجی که به منظور دور زدن کنترلهای امنیتی و دستیابی به دسترسیهای غیر مجاز صورت میگیرد را ارزیابی میکند.
2. توانایی مدیریت آسیب پذیریها به صورت هوشمندانه
تست نفوذ اطلاعاتی دقیقی در مورد تهدیدات امنیتی قابل اکسپلویت ارائه میدهد. شما با انجام تست نفوذ قادر خواهید بود تشخیص دهید کدام آسیب پذیری مهمتر از سایر آسیب پذیریها است، کدام یک از اهمیت کمی برخوردار است و کدام آسیب پذیری False positive (فرض غلط) است. این موضوع به سازمان شما اجازه میدهد که اقدامات اصلاحی خود را اولویت بندی نمایید، پچ های امنیتی مورد نیاز را اعمال نمایید و از صحت عملکرد منابع امنیتی خود اطمینان حاصل نمایید.
3. بهرمندی از یک رویکرد پیشگیرانه امنیتی
این روزها شما قادر به بستن تمامی رخنههای خود نیستید و سازمانها باید از مکانیزمها و ابزارهای دفاعی امنیتی، مانند رمزنگاریها، آنتی ویروسها، SIEMها و برنامههای IAM استفاده کنند تا سیستمهای امنتری را داشته باشند. با وجود این ابزارهای امنیتی، همواره یافتن و از بین بردن آسیب پذیریها امری دشوار است. تست نفوذ با رویکردی پیشگیرانه نقاط ضعف سیستم شما را آشکار میکند تا شما بدانید چه اصلاحاتی نیاز است و یا چه لایههای اضافی باید اجرا شوند.
4. توانایی بررسی و ارزیابی برنامههای امنیتی اجرا شده و صحت عملکرد آنها
بدون داشتن یک دید مناسب، تغییر وضعیت در سیستم شما میتواند منجر به حذف چیزی شود که در واقعیت در ابتدا مشکل ساز نبوده است. عملیات تست نفود نه تنها میتواند به شما بگوید که چه چیزی به درستی کار نمیکند بلکه میتواند نقش یک تضمین کننده کیفیت را داشته باشد. پس شما خواهید دانست که چه سیاستهای در کسب و کار شما موثرتر است و چه ابزارهای میتواند بیشترین بازگشت سرمایه را داشته باشد. سازمانها توسط تست نفوذ قادر هستند تشخیص دهند که منابع خود را به طور هوشمندانه در زمان و مکان درستی استفاده میکنند و هزینههای موثرتری را پرداخت میکنند.
5. اعتماد به نفس خود را در مورد استراتژیهای امنیتی خود بالا ببرید.
تا زمانی که سیستم خود را تست نکنید شما چگونه میتوانید در مورد امنیت آن خود اعتماد به نفس داشته باشید؟ با انجام تست نفوذ به صورت منظم و آزمایش زیرساختها و تیم امنیتی خود نیازی نیست که از یک حمله غافلگیرانه تعجب نمایید بلکه شما قادر به تجربه آن در محیط آزمایشی هستید. در نتیجه آن حمله هرگز شما را غافلگیر نمیکند.
انواع مختلف تست نفوذ چیست؟
وسوسه انگیز بودن تست همه چیز، برای آزمایش کننده قابل انکار نیست ولی این امر احتمالا منجر به این میشود که فقط تعدادی از آسیب پذیریهای سطحی جمع آوری شود و پن تستر اطلاعات ارزشمند را فدای بدست آوردن اطلاعاتی سطحی نماید. برای اطمینان از بدست آوردن اهداف اصلی تست نفوذ، آن را به انواع مختلفی تقسیم بندی میکنند که در ادامه با آنها آشنا خواهید شد.
تست نفوذ وب (Web Application penetration testing)
تست نفوذ برنامههای کاربردی وب، امنیت کلی و خطرات احتمالی برنامههای کاربردی وب، از جمله خطاهای کدنویسی (coding errors)، خطاهای ایجاد شده در احراز هویت یا کسب مجوز (broken authentication orauthorization) و آسیبپذیریهای تزریق را بررسی میکنند.
تست نفوذ شبکه (Network penetration testing)
هدف از تست نفوذ شبکه جلوگیری از اعمال مخرب با استفاده از یافتن نقاط ضعف شبکه، پیش از حمله مهاجمان است. تست نفوذ در این نوع تست، بر اکسپلویت آسیب پذیریها بر اساس انواع شبکات و دستگاههای مرتبط مانند روترها (routers)، سویچها (switches) و هاستهای شبکه (network hosts) تمرکز دارد.
تست نفوذ کلاد (Cloud penetration testing)
در توضیحی ساده، همکاری تیمهای تست نفوذ با ارائه دهندگان کلاد و فروشندگان شخص ثالث را که به منظور طراحی و امن سازی سیستمهای ابری یا برنامههای مبتنی بر ابر انجام میگیرد، تست نفوذ کلاد گویند. تست نفوذ کلاد تاییدکننده امنیت سیستمهای مبتنی بر ابر میباشد و خطرات احتمالی را شناسایی میکند تا رفع آنها محیط ابری امنتر را داشته باشیم.
تست نفوذ اینترنت چیزها (IoT Security Tests)
پن تستر با توجه به شیوه لایهای، که در آن هر لایه به صورت مجزا مورد بررسی قرار میگیرد اقدام به تجزیه و تحلیل هر جزء و نحوه تعامل بین اجزا مینماید. با استفاده از این روش، نقاط ضعیفی که ممکن است مورد توجه قرار نگیرد، شناسایی میشود.
در کنار این موارد به منظور تعیین مقدار اطلاعاتی که به پن تستر داده میشود تست نفوذ را به صورتهای زیر تقسیم بندی مینمایند:
تست نفوذ جعبه سفید (White box penetration testing)
تست نفوذ جعبه سفید که با نامهای white box، crystal، oblique هم یاد میشود، نوعی از تست نفوذ است که در آن اطلاعات کامل شبکه و سیستم با آزمون گیرنده به اشتراک گذاشته میشود. این اطلاعات شامل نقشههای شبکه و اعتبارنامهها میباشد. داشتن این اطلاعات به صرفه جویی در زمان و داشتن نگاهی عمیق به سیستم کمک میکند. تست نفوذ جعبه سیاه برای شبیه سازی یک حمله هدفمند و برنامه ریزی شده روی یک سیستم خاص مورد استفاده قرار میگیرد و تمامی حملات احتمالی را تا حد امکان پوشش میدهد.
تست نفوذ جعبه سیاه (Black box penetration testing)
در تست نفوذ جعبه سیاه یا black box هیچ نوع اطلاعاتی به آزمون گیرنده داده نمیشود. پن تستر در این نوع تست نفوذ رویکرد یک مهاجم غیرمجاز را دنبال مینماید، از گرفتن دسترسی اولیه تا بهرهبرداری از آسیب پذیریها. این سناریو را میتوان معتبرترین سناریو تست نفوذ دانست، چرا که نشان میدهد که چگونه یک نفوذگر بدون داشتن هیچ دانش درون سازمانی، آن را هدف قرار میدهد.
تست نفوذ جعبه خاکستری (Grey box penetration testing)
در تست نفوذ جعبه خاکستری که به صورتهای Gray box یا translucent box هم یاد میشود، اطلاعات محدودی به آزمون گیرنده داده میشود. معمولا این اطلاعات به صورت دادن یک اعتبارنامه برای ورود به سیستم است. تست نفوذ جعبه خاکستری برای کمک به ارزیابی سطح دسترسی واقعی کاربران معتبر مورد استفاده قرار میگیرد. این نوع تست تعادلی بین عمق و کارایی ایجاد میکند و میتواند برای شبیه سازی یک تهدید داخلی یا حملهای در سطح شبکه، مورد استفاده قرار گیرد.
تست نفوذ توسط چه کسی انجام میشود؟
یکی از بزرگترین موانع برای محقق شدن امنیت سایبری، یافتن افرادی واجد شرایط و دارای تجربه مناسب در این زمینه است. شکاف مهارتهای امنیت سایبری موضوعی است که به وضوح قابل مشاهده است و این امر در مورد ایران هم صادق است و دلیل آن عدم توازن در عرضه و تقاضا میباشد. باید دانست که این موضوع در مورد تست نفوذ هم صادق است.
پن تسترها (Penetration testers Or Pen testers) یا متخصصان تست نفوذ، حیاتی ترین بخش روند تست نفوذ میباشند. برای انجام تستهای پیچیده و کاوش عمیق در انواع سیستمها و برنامههای کاربردی و یا اجرای تمرینهایی شامل زنجیره حملات متعدد، نیازمند متخصصان تست نفوذ میباشیم.
همچنین برای آزمایش یک سناریو حمله واقع گرایانه به رد تیم (red team)ها نیازمندیم تا بتوانیم از استراتژیها و راه حلهای پیچیدهتری که مشابه با تهدیدها هستند، بهره گیریم.
البته که حیاتی ترین بخش تست نفوذ، متخصص آن میباشد. اما سازمانها با وجود شکاف مهارتی موجود در این زمینه میتوانند با استفاده هوشمندانه از منابعی که به آسانی در دسترس است، یک برنامه تست نفوذ قوی را طراحی نمایند. زیرا تمامی آزمونهای تست نفوذ، نیازمند متخصص آن نیستند. این ابزارها میتواند توسط افرادی که دانش کمتری در این زمینه دارند استفاده شود. این صحیح است که این ابزارها میتواند در تستهای ساده نیز بهره گرفته شود ولی باید دانست که نیاز است که به طور منظم انجام شود.
تیم سازی یا teaming چیست؟
از آنجا که همواره تعداد حملات سایبری در حال افزایش است، میزان زیادی تحقیق و تجربه برای پیشی گرفتن از این حملات مورد نیاز است تا بتوان فاصله بین زمان حمله و زمان کشف را به حداقل رساند. در اینجا teaming بکار میآید. تمرینهای تیمی میتواند حملات واقعی را با حمله یک تیم و دفاع تیم دیگر، شبیه سازی نماید.
رد تیم (Red Team)
رد تیم در سمت تهاجمی قرار دارد. یک Red team با هدف شناسایی و ارزیابی آسیبپذیریها، آزمایش فرضهای متعدد، بررسی گزینهها و راههای جایگزین برای حمله و آشکار نمودن محدودیتها و خطرات امنیتی سازمانها تشکیل میشوند.
بلو تیم (Blue Team)
بلو تیم وظیفه دفاع از سازمان را دارد. Blue teamها مسئول انجام اقدامات حفاظتی سازمان هستند و در صورت نیاز اقدام خواهند نمود.
پرپل تیم (Purple Team)
پرپل تیم، مفهومی است که اخیرا در تمرینات تیمی محبوبیت بیشتری پیدا کرده است و در واقع بیانگر طرز فکری است که Red team و Blue team را با هم همزیست میداند. باید دانست که تیم قرمز و آبی در مقابل هم نیستند بلکه این دو تیم باید در قالب یک تیم بزرگتر روی یک هدف مشترک تمرکز داشته باشند.
مراحل تست نفوذ چیست؟
شما از طریق تست نفوذ قادر خواهید بود پیش از اینکه شخص دیگری حملهای را انجام دهد، نقاط ضعف امنیتی قابل بهرهبرداری را پیش بینی کنید. با این حال یک تست نفوذ، پروژهای کامل و سنجیده است که شامل مراحل بیشتری نسبت به حمله واقعی است.
1. برنامه ریزی و آماده سازی (Planning and Preparation)
پیش از شروع آزمون تست نفوذ، آزمایشکنندگان و مشتریان باید در مورد اهداف آزمون همسو شوند. بنابراین باید به خوبی محدوده بندی شود و به درستی اجرا شود. همچنین آنها باید بدانند که به چه آزمونهایی نیازمند هستند، چه کسانی از آزمون مطلع هستند، چه مقدار اطلاعات و دسترسی به آزمایشکنندگان داده میشود و جزئیات دیگر که تضمین کننده صحت در انجام عملیات تست نفوذ میباشد.
2. کشف (Discovery)
در این مرحله تیمها انواع مختلف روشهای شناسایی را اجرا میکنند. از جنبه فنی اطلاعاتی مانند آدرس IP میتوانند به کشف اطلاعات مربوط به فایروالها و سایر اتصالات کمک کند و همچنین از جنبه شخصی دادههای همچون نام، عنوان شغلی و آدرس ایمیل میتواند ارزش بالایی داشته باشد.
3. تلاش برای نفوذ و بهرهبرداری (Penetration Attempt and Exploitation)
حال که آزمون گیرنده به صورت دقیق از هدف خود مطلع شده و اطلاعات مورد نیاز خود را جمع آوری کرده، میتواند روند نفوذ به سامانه، سواستفاده از ضعفهای امنیتی و نشان دادن میزان عمق شبکه را آغاز نمایید.
4. تحلیل و ارائه گزارش (Analysis and Reporting)
در این مرحله پن تسترها باید گزارشی ایجاد نمایند که شامل جزئیات هر مرحله از فرایند نفوذ باشد. همچنین باید آنچه را که برای نفوذ موفیقت آمیز به سیستم مورد استفاده قرار گرفت، همچنین ضعفهای امنیتی کشف شده، سایر اطلاعات مرتبط بدست آمده و راهکارها را برجسته نماید.
5. پاکسازی و اصلاح (Clean Up and Remediation)
پن تستر نباید هیچ رد پایی از خود باقی گذارد و با بازگشت از طریق سیستم باید تمامی تغییرات اعمال شده در طول آزمایش را حذف نماید. زیرا ممکن است این تغییرات در آینده توسط یک مهاجم واقعی مورد سو استفاده قرار گیرد. پس از انجام این کار سازمانها میتوانند شروع به انجام اصلاحات لازم برای بستن حفرههای کشف شده در زیرساختهای امنیتی خود نمایند.
6. تست دوباره (Retest)
بهترین روش برای اطمینان از موثر بودن اصلاحات، آزمایش مجدد سیستم میباشد. همچنین از آنجا که محیطهای فناوری اطلاعاتی و روشهای مورد استفاده برای حمله به آن، دائما در حال تغییر است، میتوان انتظار داشت در آزمایش مجدد سیستم نقاط ضعف جدیدی کشف شود.
ابزارهای تست نفوذ چیست؟
به صورت معمول نفوذگران برای انجام حملات خود از ابزارهایی به منظور تضمین در موفیقت نفوذ خود بهره میگیرند. همین امر در مورد آزمون گیرندههای نفوذ هم صادق است. ابزارهای تست نفوذ صرفا برای تقویت و کمک به انسان مورد استفاده قرار میگیرند و در جایگاه یک جایگزین قرار ندارند. این ابزارها باعث میشوند که پن تسترها تمرکز خود را روی فکر کردن خارج از باکس (thinking outside the box) بگذارند و این کار را توسط انجام کارهای زمان بر که نیازی به تفکر ندارند، انجام میدهند.
در مورد عملیات تست نفوذ هیچ زمانی انتخاب بین افراد متخصص و ابزارها صورت نمیگیرد. بلکه ما باید انتخاب کنیم که چه ابزارهای میتواند به پن تستر بیشتر از سایر ابزارها کمک کند.
ابزارهای تست نفود معمولا عملکردهای متفاوتی را ارائه مینمایند. برخی از آنها به صورت منبعباز در دسترس قرار گرفتهاند و برخی دیگر اهدافی تجاری دارند. برخی از این ابزارها توسط نفوذگران واقعی مورد استفاده قرار میگیرند، این باعث میشود که امکان تکرار دقیق حملات برای ما فراهم باشد. همچنین برخی دیگر از ابزارها، نیازهای یک هکر قانونمند را برطرف مینمایند و اجازه میدهند تاکید بیشتری روی اهداف یک آزمون امنیتی وجود داشته باشد و با برجسته نمودن آسیب پذیریهای حیاتیتر اصلاحات را در اولویت قرار میدهند.
برخی از این ابزارها در زیر مشاهده مینمایید:
- Kali Linux
- nmap
- Metasploit
- Wireshark
- John the Ripper
- Hashcat
- Hydra
- Burp Suite
- Zed Attack Proxy
- sqlmap
- aircrack-ng
هر چند وقت یکبار باید تست نفوذ انجام شود؟
عملیات تست نفوذ باید به صورت منظم انجام گیرد تا امنیت زیرساختهای شبکه و فناوری اطلاعات به صورتی استوار پیاده سازی و مدیریت شود. یک تست نفوذ به شما نشان میدهد که چگونه تهدیدات یا آسیب پذیریهای تازه کشف شده به صورت بالقوه توسط مهاجمان مورد استفاده قرار میگیرد. همچنین علاوه بر تجزیه و تحلیل و برنامه ریزی منظم برای ارزیابیهای امنیتی نیاز است که در شرایط زیر این عملیات تکرار شود:
- پس از اضافه شدن زیرساختهای شبکه یا فناوری اطلاعات
- پس از ارتقا زیرساختها یا برنامههای کاربردی
- پس از اعمال وصلههای امنیتی
- پس از اصلاح و بروزرسانی سیاستهای کاربران نهایی (end usres)
- پس از انتقال سیستم به مکان اداری جدید