
ارزیابی امنیتی و آزمون نفوذ
تست نفوذ یا ارزیابی امنیتی روشی است که توسط آن قادر خواهیم بود تا آسیبپذیریهای موجود در نرمافزارها، شبکه، وبسایت و بانکهای اطلاعاتی خود را شناسایی کرده و پیش از آنکه نفوذگران واقعی به سیستم وارد شوند، امنیت سیستم خود را افزایش دهیم. این روش با استفاده از ارزیابی جنبههای مختلف امنیتی کمک میکند تا با کاهش دادن ریسکهای امنیتی موجود، احتمال نفوذ غیرمجاز به شبکه را کاهش دهیم.
هدف از انجام تست نفوذ، یافتن آسیبپذیری در یک یا چند مورد از زمینههای زیر میباشد:
امنیت تجهیزات فعال شبکه
امنیت سیستمعاملها
امنیت سرویسهای شبکه و بانکهای اطلاعاتی
امنیت برنامههای کاربردی و نرمافزارهای تحت شبکه، تحت وب و تحت موبایل
تست نفوذ را میتوان از دیدگاههای متفاوتی بررسی نمود. براساس میزان اطلاعاتی که در اختیار تیم نفوذ است، میتوان سه دسته 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 تعبیر میشود.
آزمون نفوذ داخلی و خارجی
آزمون خارجی به انواع آزمونهایی اطلاق میشود که در خارج از محدوده سازمانی که قرار است مورد آزمون نفوذ قرار بگیرد، انجام میشود و آزمونهای داخلی در حوزه مکانی آن سازمان و در میان افرادی که آن سازمان فعالیت میکنند انجام میشود.
نوع اول در واقع سناریویی را بررسی میکند که مهاجم با دسترسی داشتن به منابع مورد نیاز خود، از جمله آدرس های IP که از سازمان مورد نظر در اختیار دارد و یا با در اختیار داشتن کد منبع نرم افزارهایی که در سازمان استفاده میشوند و در اینترنت موجود می باشند اقدام به پویش و کشف آسیبپذیری نماید.
در نوع دوم سناریویی بررسی میشود که مهاجم به هر طریق ممکن موفق به ورود به سازمان مورد نظر شده و با جمع آوری داده های مورد نظر اقدام به حمله میکند. با ورود به محدوده مکانی یک سازمان مهاجم می تواند سناریوهای مختلفی را پیاده سازی نماید. برای نمونه با استفاده از شبکه بیسیم داخلی و بررسی دادههای به اشتراک گذاشته شده که می تواند اطلاعات کارمندان باشد، حدس زدن کلمات عبور اصلی برای مهاجم سادهتر خواهد شد.
آزمون شبکه
معماری ایمن شبکه (تعریف درست Zoneها و قواعد دسترسی با توجه به تهدیدات موجود)
- پیکربندی درست دیواره آتش
- ایمن بودن تجهیزات شبکه (کلمه عبور، بروز بودن و غیره)
آزمون سیستم عامل
- بررسی کلیهی آسیب پذیریهای شناخته شده در هر سیستم عامل
- بررسی Minimize بودن سیستم ها
- بررسی ایمن بودن کلمات عبور
- سایر کنترلهای امنیتی تا حد زیادی وابسته به نوع سیستم عامل هاست
آزمون پایگاه داده
- مکانیزم Authentication مناسب
- تعریف درست مجوزها و کاربران در داخل DBMS
- ارتباط امن نرم افزار با DBMS
- بررسی آسیب پذیری ها و امکان Exploit آنها
بررسی امنیت مدیریت نشست (Session Management)
- Bind کردن IP به Session برای افزایش امنیت
- Timeoutهای درست
- بررسی مدیریت درست نشست در هنگام کار با صفحات مختلف (Back-Next)
بررسی ایمنی مدیریت خطاها و سیستم ثبت وقایع
- بررسی نحوه Exception Handling در نرم افزار و نشت اطلاعات به کاربر
- بررسی وجود مکانیزم Logging و ثبت وقایع برای رخدادهای مهم در سیستم
بررسی وجود و درستی مکانیزمهای Input Validation برای مقابله با حملات IVA
- بررسی ایمنی از لحاظ حمله SQL Injection
- بررسی ایمنی از لحاظ حمله Cross Site Scripting
- بررسی سایر حملات IVA شامل LDAP Injection ، XPath Injection و Command Execution
بررسی وجود مکانیزمهای امن برای تصدیق اصالت
- بررسی امنیتی پروتکل Authentication مورد استفاده
- بررسی ذخیره سازی ایمن کلمات عبور در پایگاه داده
- بررسی ایمنی الگوریتمهای Hash و رمزنگاری متقارن یا نامتقارن مورد استفاده
- بررسی خط مشی امنیتی در رابطه با کلمات عبور
- بررسی خط مشی امنیتی در رابطه با Access Control
- بررسی خط مشی امنیتی در رابطه با Authorization
سطوح ارزیابی امنیتی نرمافزار
آزمون امنیتی نرمافزار بر اساس استاندارد OWASP ASVS نسخه ۳٫۰٫۱ در سطوح امنیتی مختلف قابل انجام است.
سطح یک
نرمافزار مورد نظر در صورت ایمن بودن در برابر آسیبپذیریهای امنیتی نرمافزارها که به راحتی قابل کشف شدن هستند (شامل ۱۰ آسیبپذیری اول لیست OWASP و یا لیستهای مشابه)، استاندارد ASVS سطح ۱ (مبتدی) را دریافت میکند.
سطح ۱ معمولاً برای نرمافزارهایی مناسب است که در آنها اطمینان کمتری نسبت به نظارتهای امنیتی صحیح مورد نیاز است و یا برای تأمین یک آنالیز سریع بر روی نرمافزارهای سازمانی و همچنین برای کمک به ایجاد یک لیست اولویتبندی شده برای نیازمندیهای امنیتی به عنوان بخشی از یک پروژه چند فازه استفاده میشود.
نظارتهای سطح ۱ میتواند به صورت خودکار توسط ابزارها و یا به صورت دستی و بدون دسترسی به سورسکد انجام شود. ما سطح ۱ را به عنوان حداقل نیاز تمام نرمافزارها در نظر میگیریم.
اغلب تهدیدات نسبت به نرمافزارها از طرف مهاجمانی است که از تکنیکهای ساده و آسان برای شناسایی آسیبپذیریهایی که راحت کشف و یا راحت بهرهبرداری میشوند، استفاده میکنند. این برخلاف روش یک مهاجم مصمم است که انرژی زیادی برای حمله به یک نرمافزار مشخص صرف میکند. بنابراین، اگر اطلاعات پردازش شده توسط نرمافزار شما دارای ارزش بالایی است، شما قطعاً نباید به استاندارد سطح ۱ اکتفا کنید.
سطح دو
نرمافزار مورد نظر جهت ایمن بودن نسبت به بیشتر خطراتی که امروزه نرمافزارها با آن مواجه هستند، میبایست استاندارد ASVS سطح ۲ (استاندارد) را دریافت کنند. سطح ۲، اطمینان میدهد که مکانیزمهای امنیتی درستی بکار گرفته شده، این مکانیزمها مؤثر بوده و همچنین در داخل نرمافزار به درستی تعبیه شدهاند. سطح ۲ معمولاً برای نرمافزارهایی مناسب است که معاملات B2B یا Business2Business را پردازش میکند. این نرمافزارها میتوانند شامل این موارد باشند: نرمافزارهایی که اطلاعات مرتبط با بهداشت و درمان را ارزیابی میکنند، نرمافزار که مرتبط به کسبوکارهای حساس هستند، نرمافزارهایی که عملکرد آنها از حساسیت بالایی برخوردار بوده و یا مربوط به پردازش اموال هستند.
تهدیدات نسبت به نرمافزارهای سطح ۲ معمولاً مربوط به مهاجمان باانگیزه و دارای مهارت بالاست که بر روی یک هدف خاص تمرکز کرده و از ابزارها و روشهای مؤثر در کشف و بهرهبرداری از ضعفهای نرمافزار، استفاده میکنند.
سطح سه
سطح ۳، بالاترین سطح امنیتی در استاندارد ASVS است. این سطح معمولاً منحصر به نرمافزارهایی است که نیازمند سطوح قابل توجهی از تاییدات امنیتی هستند، مانند نرمافزارهایی که در زمینه نظامی، سلامت و امنیت، زیرساختهای حیاتی و غیره مورد استفاده قرار میگیرند. سازمانها برای نرمافزارهایی که وظیفه اجرای امور حیاتی را دارند و ایجاد مشکل در آنها میتواند تأثیر بسزایی در عملکرد و یا حتی بقای سازمان داشته باشد، نیازمند استاندارد سطح ۳ هستند.
یک نرمافزار اگر بهطور مناسبی نسبت به آسیبپذیریهای امنیتی پیشرفته ایمن باشد و همچنین از اصول طراحی امنیتی مناسبی برخوردار باشد، به استاندارد سطح ۳ (پیشرفته) دسترسی پیدا میکند. یک نرمافزار در سطح ۳ نیازمند آنالیز، معماری و همچنین برنامهنویسی دقیقتر نسبت به تمامی سطوح دیگر است. یک نرمافزار امن بهگونهای هدفمند (برای تسهیل کردن مقاومبودن، مقیاسپذیری و مهمتر از همه لایههای امنیتی) ماژول بندی شده و هر ماژول از مسؤولیتهای امنیتی مربوط به خود به صورت دقیق و کامل محافظت میکند. این مسؤولیتها شامل نظارت به منظور حصول از محرمانگی (مثلاً با رمزنگاری)، جامعیت (برای مثال اعتبارسنجی ورودی)، دسترسیپذیری، احراز هویت (از جمله بین سیستمها)، عدم انکار، مجوز دهی و بازرسی (loggong) است
متدولوژی های آزمون نفوذ متعددی برای ارزیابی امنیتی و آزمون نفوذ وجود دارد که بخشی از آنها نیازمند پرداخت هزینه عضویت ماهانه یا سالانه و بخشی از آنها به صورت رایگان ارائه میشوند. برخی از این متدولوژی های توسط OWASP ،ISECOM ،PS و NIST که از شناخته شده ترین استانداردهای ارائه شده در این زمینه هستند ارائه شده که شرحی کوتاه از هر کدام در ذیل تقدیم حضور می گردد:
مجموعه OWASP یا پروژه منبع باز امنیت سامانه های وب (Open Web Application Security Project) از شاخص ترین موسسات فعال بین المللی در بخشهای مختلف امنیت نرم افزار خصوصا امنیت سامانه های وب است. در زمینه تهیه و ارائه متدولوژی های آزمون نفوذ OWASP از دسامبر ۲۰۰۴ با ارائه نسخه اول OWASP Testing Guide که در حال حاضر به نسخه چهارم که در سال ۲۰۱۴ تهیه شده ارتقا یافته و در دسترس عموم قرار دارد از پیشگامان این عرصه است.
موسسه ISECOM نیز از ژانویه ۲۰۰۱ با ارائه دستورالعمل منبع باز متدولوژی آزمون امنیت (Open Source Security Testing Methodology Manual) یا OSSTMM که آخرین نسخه رایگان آن نسخه سه و نسخه چهارم آن به صورت پرداخت حق عضویت ارائه میگردند نقش مهمی در ترسیم سیاست های امنیتی سازمان ها برای ارائه و آزمون راهکارهای امنیتی بر عهده گرفته است.
موسسه ملی استاندارد و تکنولوژی NIST نیز با استاندارد NIST Special Publication 800-115 از سال ۲۰۰۸ و در چهار بخش اصلی برنامه ریزی Planning، کشف Discovery، نفوذ Attack و گزارش دهی Reporting جزو ارائه دهندگان استانداردهای آزمون نفوذ است.
از دیگر متدولوژی ها شناخته شده استاندارد اجرایی آزمون نفوذ (Penetration Testing Execution Standard) یا PTES است که اولین نسخه آن در سال ۲۰۰۹ توسط تیمی از محققین امنیتی به سرپرستی آقای نیکرسون عرضه گردیده و به صورت اجمالی شامل هفت مرحله است. این استاندارد با بهره گیری از دیگر استانداردها همچون استاندارد OWASP Testing Guide در بخشهای مختلف خصوصا در بخش آزمون سامانه های وب متدولوژی آزمون نفوذ نسبتا جامعی را ارائه میکند.
در پایان بررسی اجمالی این چهار استاندارد ذکر این نکته ضروری است که امکان شبیه سازی صد در صدی شرایط حملاتی که از سوی هکرها و نفوذ گران انجام می شود برای آزمون نفوذ گر عملا وجود ندارد. برخلاف متخصص آزمون نفوذ که باید تابع و متعهد به قوانین و قواعد حاکم بر قرارداد منعقد شده باشد، هکرها ملزم به تبعیت از هیچکدام از این قواعد نیستند. به طور مثال اجتناب از وقوع انواع مختلفی از مشکلات آزمون نفوذ از قبیل از کار افتادگی سیستم ها (Crash) و زمان غیر قابل دسترس بودن سیستم ها آزمون نفوذ قرار گرفته (Downtime) که برای متخصص آزمون نفوذ قانونمند و حرفه ای از اهمیت بالایی برخوردار است، اهمیت چندانی برای هکر ها خصوصا هکرهای تازه کار (Script Kiddies) و هکرهای تخریب گر (Crackers) که به قصد تخریب سیستم ها را مورد حمله قرار میدهند نخواهند داشت. از این رو امکان شبیه سازی کامل و دقیق حملات هکرها در آزمون های نفوذ به دلایل ذکر شده وجود نخواهد داشت و بهره گیری از دیگر روش های ایمن سازی در کنار آزمون نفوذ و عیب یابی برای حفظ امنیت و یکپارچگی سامانه های مختلف ضروری خواهد بود
ارزیابی امنیتی (Vulnerability Assessments)، که از منظرهای مختلف شباهت هایی به آزمون نفوذ دارد و یکی دیگر از روشهای موثر ایمن سازی از طریق سنجش امنیتی بخش های مختلف سیستم ها و سامانه هایی که نیازمند برخورداری از پایداری و امنیت بالایی هستند، است.
برخی از متخصصین امنیت بر این باورند که ارزیابی امنیتی پیش نیاز آزمون نفوذ بوده و باید بعد از استقرار سیستم امنیتی سازمان و انجام ارزیابی های امنیتی اقدام به آزمون نفوذ به عنوان آخرین مرحله سنجش و ارزشیابی امنیت کرد.
در این میان یکی از شاخص ترین تفاوتهای بین آزمون نفوذ و ارزیابی امنیتی، عدم تلاش برای نفوذ (Penetration)و بهره گیری از آسیب پذیری های کشف شده (Exploitation) در ارزیابی امنیتی برخلاف آزمون نفوذ است. در ارزیابی امنیتی معمولا با توجه به قرارداد منعقد شده ساختار آی تی سازمان با ابزارهای تخصصی دستی و اتوماتیک اسکن شده و نتایج حاصله به صورت مکتوب و مدون و گزارشات مدیریتی و فنی همراه با راهکارهای جلوگیری از تهدیدات یا کاهش آنها برای بهینه سازی های امنیتی در اختیار متقاضی قرار میگیرد.
از دیگر تفاوتها بین آزمون نفوذ و ارزیابی امنیتی، برخلاف آزمون نفوذ که با توجه به نوع و حساسیتهای سیستم ها معمولا به صورت دوره ای و هر شش ماه یا یک سال یک بار انجام میگردد، ارزیابی امنیتی باید به صورت مداوم و برنامه ریزی شده خصوصا در زمان هایی همچون تغییرات ساختاری در سیستم های نرم افزاری یا سخت افزاری نصب شده، تغییرات در تنظیمات شبکه یا سامانه های وب صورت میگیرد و یا هنگامی که آسیب پذیری های جدید کشف و منتشر میشوند برای اطمینان از عدم تحت تاثیر گرفتن ساختار شبکه و فناوری سازمان انجام گردد.
اصولی ترین روش بهره گیری از مزایای ارزیابی امنیتی برای سازمانها و شرکتها ادغام دائمی آن با برنامه فناوری سازمان و انجام مداوم آن با فاصله های زمانی کوتاه است.
مراحل اولیه برای آزمون نفوذ به شرح ذیل می باشد:
۱) مشخص کردن دقیق محدوده آزمون نفوذ
تعیین محدوده آزمون نفوذ با هدف تخمین زمان و هزینه انجام می شود و برای بالا بردن دقت در انجام کار حائز اهمیت است.
۲) بدست آوردن اطلاعات مفید دربارهی سیستم هدف:
استفاده از ابزارها، نرم افزارها و راهکارهای مهندسی اجتماعی برای بدست آوردن اطلاعات در مورد هدف، هرچه اطلاعات نسبت به سیستم هدف دقیق تر و کامل تر باشد حملات موفق تری را میتوان انجام داد ،این اطلاعات شامل بدست آوردن محدوده IP ودامنه سایت و…کمک شایانی در نوع حمله خواهد کرد.
۳) پویش سامانه یا سرویس برای یافتن آسیب پذیری ها:
در بسیاری از شرکتها و سازمانها سرویس هایی وجود دارد که پیکربندی آنها در حالت پیش فرض است یا دارای آسیب پذیری است که بروزرسانی و امن سازی نشده و این می تواند نقطه ورودی به شبکه سازمان باشد. پویش سیستمها و سرویس ها برای پیدا کردن چنین آسیب پذیری هایی انجام می شود. شبکه های بی سیم با مکانیزم احرازهویت ضعیف تهدیدی جدی برای سازمان خواهند بود.
۴) شناسایی سیستم ها و برنامه های کاربردی و احراز هویت آنها:
شناسایی کلیه تجهیزات، سیستم ها و منابع مهم شبکه در سازمان در این بخش انجام خواهد شد. سیستم ها و سامانه های مرتبط با هم مطابق معماری در اختیار واحد فناوری سازمان مورد بررسی قرار گرفته و ارتباطات مشخص خواهد شد، سپس درستی ارتباط و احرازهویت و دسترسی ها مورد بررسی قرار خواهند گرفت.
۵– ارائه گزارش مدیریتی و فنی:
گزارش مدیریتی جهت بررسی کلان وضعیت امنیت سامانه یا سرویس مورد آزمون قرار گرفته برای تصمیم گیری درباره آن ارائه خواهد شد همچنین وضعیت سیستم از نظر فنی همراه با گزارش دقیق آسیب پذیری و راهکارهای کاهش یا جلوگیری از تهدیدات ارائه خواهد شد.