معرفی

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

هدف از انجام تست نفوذ، یافتن آسیب‌پذیری در یک یا چند مورد از زمینه‌های زیر می‌باشد:

  • امنیت تجهیزات فعال شبکه

  • امنیت سیستم‌عامل‌ها

  • امنیت سرویس‌های شبکه و بانک‌های اطلاعاتی

  • امنیت برنامه‌های کاربردی  و نرم‌افزارهای تحت شبکه، تحت وب و تحت موبایل

تست نفوذ را می‌‎توان از دیدگاه‌های متفاوتی بررسی نمود. براساس میزان اطلاعاتی که در اختیار تیم نفوذ است، می‌توان سه دسته White Box، Black Box و Gray Box را در نظر گرفت و از دیدگاه مکان انجام تست نفوذ به Internal و External تقسیم نمود

رویکرد Black-Box‌ ، Gray-Box و White-Box

تست نفوذ به روش‌های متفاوتی قابل انجام است. بیشترین تفاوت میان این روش‌ها، در میزان اطلاعات مرتبط با جزییات پیاده‌سازی سیستم در حال تست می‌باشد که در اختیار تیم تست نفوذ قرار داده می‌شود. با توجه به این موضوع تست نفوذ را می‌توان به سه دستهBlack-Box ، White – Box و Gray-Box تقسیم نمود.

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

از سوی دیگر در تست White-Box اطلاعات ضروری مانند معماری شبکه، کدهای منبع، اطلاعات آدرس IP و شاید حتی دسترسی به بعضی از کلمات عبور،در اختیار تیم ارزیابی امنیتی قرار می‌گیرد. تست White-Box حمله‌ای را شبیه سازی می‌کند که ممکن است در اثر افشای اطلاعات محرمانه از شبکه داخلی یا حضور نفوذگر در داخل سازمان بوجود آید. تست White-Box دارای گستردگی وسیعی می‌باشد و محدوده آن شامل بررسی شبکه محلی تا جستجوی کامل منبع نرم افزارهای کاربردی به منظور کشف آسیب‌پذیری‌هایی که تا کنون از دید برنامه نویسان مخفی مانده است، می‌باشد.

روش های متنوع دیگری نیز وجود دارد که در واقع مابین دو روش ذکر شده در بالا قرار می‌گیرند که معمولا از آنها به تست های Gray-Box تعبیر می‌شود.

تست نفوذ External و Internal

تست External به انواع تست‌هایی اطلاق می‌شود که در خارج از محدوده سازمانی که قرار است مورد تست نفوذ قرار بگیرد، انجام می‌شود و تست‌های Internal در حوزه مکانی آن سازمان و در میان افرادی که آن سازمان فعالیت می‌کنند انجام می‌شود.

نوع اول در واقع سناریویی را بررسی می‌کند که مهاجم با دسترسی داشتن به منابع مورد نیاز خود، از جمله آدرس های IP که از سازمان مورد نظر در اختیار دارد و یا با در اختیار داشتن کد منبع نرم افزارهایی که در سازمان استفاده می‌شوند و در اینترنت موجود می باشند اقدام به پویش و کشف آسیب‌پذیری نماید.

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

جزئیات تست‌ها

تست امنیتی شامل تست نرم‌افزار، پایگاه داده، شبکه و سیستم‌عامل خواهد بود.

تست برنامه‌های کاربردی و وب سایت بر اساس استاندارد OWASP ASVS انجام می‌شود. نیازمندی‌های امنیتی ASVS در ۱۳ عنوان کلی بخش بندی می‌شوند که هر بخش دارای تعدادی نیازمندی امنیتی است. این بخش ها عبارتند از:

V1. Authentication

V2. Session Management

V3. Access Control

V4. Input Validation

V5. Cryptography (at Rest)

V6. Error Handling and Logging

V7. Data Protection

V8. Communication Security

V9. HTTP Security

V10. Malicious Controls

V11. Business Logic

V12. Files and Resources

V13. Mobile

جزئیات برخی از دسته های فوق را ذیلاً مشاهده می نمایید:

o بررسی امنیتی پروتکل Authentication مورد استفاده
o بررسی ذخیره سازی ایمن کلمات عبور در پایگاه داده
o بررسی ایمنی الگوریتم‌های Hash و رمزنگاری متقارن یا نامتقارن مورد استفاده
o بررسی خط مشی امنیتی در رابطه با کلمات عبور
o بررسی خط مشی امنیتی در رابطه با Access Control
o بررسی خط مشی امنیتی در رابطه با Authorization
o بررسی ایمنی از لحاظ حمله SQL Injection
o بررسی ایمنی از لحاظ حمله Cross Site Scripting
o بررسی سایر حملات IVA شامل LDAP Injection ، XPath Injection و Command Execution
o بررسی نحوه Exception Handling در نرم افزار و نشت اطلاعات به کاربر
o بررسی وجود مکانیزم Logging و ثبت وقایع برای رخدادهای مهم در سیستم
oا Bind کردن IP به Session برای افزایش امنیت
o اTimeoutهای درست
o بررسی مدیریت درست نشست در هنگام کار با صفحات مختلف (Back-Next)
o معماری ایمن شبکه(تعریف درست Zoneها و قواعد دسترسی با توجه به تهدیدات موجود)
o پیکربندی درست دیواره آتش
o ایمن بودن تجهیزات شبکه (کلمه عبور، Update بودن و غیره)
o مکانیزم Authentication مناسب
o تعریف درست مجوزها و کاربران در داخل DBMS
o ارتباط امن نرم افزار با DBMS
o بررسی آسیب پذیری ها و امکان Exploit آنها
o بررسی کلیه‌ی آسیب پذیری‌های شناخته شده در هر سیستم عامل
o بررسی Minimize بودن سیستم ها
o بررسی ایمن بودن کلمات عبور
o سایر کنترلهای امنیتی تا حد زیادی وابسته به نوع سیستم عامل هاست

سطوح ارزیابی امنیتی نرم‌افزار

تست امنیتی نرم‌افزار بر اساس استاندارد OWASP ASVS نسخه ۳٫۰٫۱ در سطوح امنیتی مختلف قابل انجام است.

سطح یک

نرم‌افزار مورد نظر در صورت ایمن بودن در برابر آسیب‌پذیری‌های امنیتی نرم‌افزارها که به راحتی قابل کشف شدن هستند (شامل ۱۰ آسیب‌پذیری اول لیست OWASP و یا لیست‌های مشابه)، استاندارد ASVS سطح ۱ (مبتدی) را دریافت می‌کند.

سطح ۱ معمولاً برای نرم‌افزارهایی مناسب است که در آن‌ها اطمینان کمتری نسبت به نظارت‌های امنیتی صحیح مورد نیاز است و یا برای تأمین یک آنالیز سریع بر روی نرم‌افزارهای سازمانی و همچنین برای کمک به ایجاد یک لیست اولویت‌بندی شده برای نیازمندی‌های امنیتی به عنوان بخشی از یک پروژه چند فازه استفاده می‌شود.

نظارت‌های سطح ۱ می‌تواند به صورت خودکار توسط ابزارها و یا به صورت دستی و بدون دسترسی به سورس‌کد انجام شود. ما سطح ۱ را به عنوان حداقل نیاز تمام نرم‌افزارها در نظر می‌گیریم.

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

سطح دو

نرم‌افزار مورد نظر جهت ایمن بودن نسبت به بیشتر خطراتی که امروزه نرم‌افزارها با آن مواجه هستند، می‌بایست استاندارد ASVS سطح ۲ (استاندارد) را دریافت کنند. سطح ۲، اطمینان می‌دهد که مکانیزم‌های امنیتی درستی بکار گرفته شده، این مکانیزم‌ها مؤثر بوده و همچنین در داخل نرم‌افزار به درستی تعبیه شده‌اند. سطح ۲ معمولاً برای نرم‌افزارهایی مناسب است که معاملات B2B یا Business2Business را پردازش می‌کند. این نرم‌افزارها می‌توانند شامل این موارد باشند: نرم‌افزارهایی که اطلاعات مرتبط با بهداشت و درمان را ارزیابی می‌کنند، نرم‌افزار که مرتبط به کسب‌وکارهای حساس هستند، نرم‌افزارهایی که عملکرد آن‌ها از حساسیت بالایی برخوردار بوده و یا مربوط به پردازش اموال هستند.

تهدیدات نسبت به نرم‌افزارهای سطح ۲ معمولاً مربوط به مهاجمان باانگیزه و دارای مهارت بالاست که بر روی یک هدف خاص تمرکز کرده و از ابزارها و روش‌های مؤثر در کشف و بهره‌برداری از ضعف‌های نرم‌افزار، استفاده می‌کنند.

سطح سه

سطح ۳، بالاترین سطح امنیتی در استاندارد ASVS است. این سطح معمولاً منحصر به نرم‌افزارهایی است که نیازمند سطوح قابل توجهی از تاییدات امنیتی هستند، مانند نرم‌افزارهایی که در زمینه نظامی، سلامت و امنیت، زیرساخت‌های حیاتی و غیره مورد استفاده قرار می‌گیرند. سازمان‌ها برای نرم‌افزارهایی که وظیفه اجرای امور حیاتی را دارند و ایجاد مشکل در آن‌ها می‌تواند تأثیر بسزایی در عملکرد و یا حتی بقای سازمان داشته باشد، نیازمند استاندارد سطح ۳ هستند.

یک نرم‌افزار اگر به‌طور مناسبی نسبت به آسیب‌پذیری‌های امنیتی پیشرفته ایمن باشد و همچنین از اصول طراحی امنیتی مناسبی برخوردار باشد، به استاندارد سطح ۳ (پیشرفته) دسترسی پیدا می‌کند. یک نرم‌افزار در سطح ۳ نیازمند آنالیز، معماری و همچنین برنامه‌نویسی دقیق‌تر نسبت به تمامی سطوح دیگر است. یک نرم‌افزار امن به‌گونه‌ای هدفمند (برای تسهیل کردن مقاوم‌بودن، مقیاس‌پذیری و مهم‌تر از همه لایه‌های امنیتی) ماژول بندی شده و هر ماژول از مسؤولیت‌های امنیتی مربوط به خود به صورت دقیق و کامل محافظت می‌کند. این مسؤولیت‌ها شامل نظارت به منظور حصول از محرمانگی (مثلاً با رمزنگاری)، جامعیت (برای مثال اعتبارسنجی ورودی)، دسترسی‌پذیری، احراز هویت (از جمله بین سیستم‌ها)، عدم انکار، مجوز دهی و بازرسی (loggong) است.