مبانی مطلق در آزمون تست نفوذ
در آزمون نفوذ به عنوان متخصص امنیت باید تمام روش ها و یا حفره های امنیتی را که یک هکر می تواند از آنها برای دور زدن کنترل های امنیتی سوء استفاده و به سیستم های کامپیوتری نفوذ کند را شبیه سازی کنیم و در صورت وجود ضعف های امنیتی جهت رفع آن ها اقدام مناسب را انجام دهیم تا از نفوذ هکرها و افراد بیگانه به سیستم جلوگیری شود.
قابل ذکر است که هدف یک هکر می تواند هر چیزی باشد، از سیستم های بزرگ تا سیستم های کوچک از جمله سیستم های دولتی، بانک ها، کامپیوتر های شخصی، وبسایت ها، سرویس های شبکه و غیره... در اینجاست که باید به عنوان یک متخصص امنیت (هکر کلاه سفید) وارد میدان شوید و تمام راه های ممکن برای رخنه کردن به سیستم توسط یک نفوذگر (هکر کلاه سیاه) را کشف کنید.
باید به این نکته توجه شود، عملیات آزمون نفوذ عملا بیش از یک عمل ساده پویش با استفاده از ابزار های خودکار و سپس تهیه گزارش است. این موضوع را رفته رفته در این کتاب بیشتر درک خواهید کرد. در هر صورت تبدیل شدن به یک فرد متخصص و حرفه ای در زمینه آزمون نفوذ و رسیدن به سطح قابل قبول در این زمینه به سالیان سال تلاش و تمرین نیاز دارد.
خوشبختانه درحال حاضر دید افراد به موضوع امنیت عوض شده است و دیگر با دید سطحی به آن نگاه نمی شود. به همین دلیل شاهد هستیم برای آزمون های نفوذ استاندارد دستورات کاری معینی وضع می شود که Penetration Testing Execution Standard یا PTES نمونه ای از آن است، که منشوری از اطلاعات افراد مختلف درباره ی یک آزمون نفوذ واقعی است. به هر حال اگر شما در حوزه ی امنیت تازه کار یا با فاز های PTES ناآشنا هستید، برای یادگیری و اگر میل به اطلاعات بیشتر درباره استاندارد آزمون نفوذ دارید می توانید به وبسایت Pentest-Standard.Org رجوع نمایید. با این حال توضیح مختصری درباره ی فاز های PTES در این مقاله آورده شده است.
فاز های آزمایش امنیت استاندارد
فازها مختلف PTES بدین دلیل تعریف شده اند، که بتوان بواسطه آنها تمام مسائل امنیتی را ارزیابی کرد. این فازها دارای مزیت های بسیاری هستند بطوریکه اگر سیستم با مشکل امنیتی مواجه شد بتوان براحتی آن را کشف و رفع کرد. اما باید همیشه به خاطر داشت که "در دنیای رایانه ها، امنیت هیچگاه صد در صد نیست" لذا هیچ گاه نمی توانیم به مشتری امنیت صد در صدی را تضمین دهیم. اما همواره سعی کنید تمام ضعف های امنیتی شناخته شده را برطرف کنید تا سطح امنیت به حد قابل قبولی برسد. به هر حال فازهای یاد شده بسته به نوع سازمان یا سیستم مخاطب که مورد آزمون نفوذ قرار می گیرد، به هفت قسمت با سطوح مختلف تقسیم می شود.
- فاز اول: توافق های قبل از قرارداد
- فاز دوم : جمع آوری اطلاعات
- فاز سوم : مدل سازی یک تهدید
- فاز چهارم : تحلیل آسیب پذیری ها
- فاز پنجم : اکسپلویت کردن آسیب پذیری
- فاز ششم : پس از اکسپلویت کردن سیستم
- فاز هفتم : گزارش نویسی
فاز اول: توافق های قبل از قرارداد
منظور از توافق های قبل از قرارداد مسائل و مواردی است که قبل از بستن قرارداد باید برای کار فرما توضیح بدهید و بر روی آنها توافق کنید و نظریات احتمالی کارفرما را نیز جویا شوید و آنها را در بعضی از مسائل وارد برنامه آزمون نفوذ کنید. هنگامی که می خواهید سیستمی را مورد آزمایش قرار بدهید، باید با مشتری قرارداد بسته و حوزه کاری خود را شرح دهید. سپس شرایطی را که کارفرما برای شما شرح می دهد وارد قرارداد نمایید. تعهدهای مطرح شده در قرارداد بسیار مهم هستند، چرا که این مرحله نیز به عنوان فرصتی است تا به مشتری بفهمانید در یک آزمون نفوذ چه عملیاتی انجام می شود و چه انتظارهای از شما می تواند وجود داشته باشد. بیشتر تیم های حرفه ای که در زمینه ی آزمون نفوذ فعالیت می کنند برای بستن قرارداد و انجام مذاکرات دارای یک شخص خاص هستند که که به مسائل حقوقی نیز آشناست و انجام مذاکرات بر عهده ی اوست.
فاز دوم : جمع آوری اطلاعات
در قسمت جمع آوری اطلاعات، تمام اطلاعات مورد نیاز برای حمله با استفاده از شبکه های اجتماعی، گوگل هکینگ، footprinting، و غیره به دست می آید. یکی از مهم ترین مهارت های یک متخصص امنیت یا نفوذگر، توانایی بدست آوردن اطلاعات در مورد هدف است، از قبیل اینکه قربانی چگونه رفتار می کند، چه اطلاعاتی در اختیار دارد و نهایتا اینکه چگونه باید به آن حمله کرد.
این اطلاعات دید مناسبی را راجع به انواع کنترل های امنیتی مورد استفاده در سیستم هدف بدست متخصص می دهد. مثلا اینکه سیستم عامل هدف چیست، آیا ماشین هدف قابل اکسپلویت شدن (بهره برداری کردن) هست، آیا سیستم هدف از دیوار آتش استفاده می کند و غیره. نکته قابل ذکر این است که در زمان جمع آوری اطلاعات باید در قدم اول مکانیسم های امنیتی را شناسایی کنید و در قدم بعد به آرامی در سیستم هدف به کاوش بپردازید.
به عنوان نمونه یک سازمان خصوصی را در نظر بگیرید. این سازمان فقط به مجموعه خاصی از IP ها اجازه استفاده از سرویس هایش را می دهد و اگر شما عضو آن مجموعه نباشید اجازه دسترسی برای شما صادر نمی شود و از ارتباط شما با آن سازمان ممانعت به عمل می آید. بدین ترتیب قادر به انجام هیچ فعالیت دیگری نیستید.
بنابراین همیشه پیشنهاد می شود، ابتدا هدف را با دقت بررسی کرده و در مورد مکانیزم های امنیتی موجود اطلاعات جمع کرده و در گام آخر استدلال نمایید که ماشین قربانی قابل نفوذ است یا خیر. آنگاه اقدامات بعدی را برای ورود به آزمون نفوذ انجام دهید. شایان ذکر است که بسیاری از پروژه ها در همین گام نخست با شکست رو به رو می شود، چونکه موارد امنیتی رعایت شده در سیستم هدف قابل دور زدن نیستند.
اگر بخواهیم از دید یک متخصص امنیت به این موضوع نگاه کنیم، باید گفت که مسدود کردن افراد بر اساس آدرس IP آن ها ایده خوبی در برنامه های مبتنی بر وب به شمار می رود. شایان ذکرست که همین مکانیزم امنیتی با اندکی تفاوت در دیوارهای آتش به کار می رود. تفاوت در اینجاست که دیوارهای آتش مبتنی بر وب شما را بر اساس کارهای مجاز یا غیرمجاز تعریف شده (Rule) بلاک یا مسدود خواهند کرد.
تصور کنید که ما قصد داریم یک برنامه تحت وب را مورد نفوذ قرار دهیم. اما سیستم هدف دارای یک مکانیزم امنیتی قوی است که طبق یک سری قوانین خاص از حملات علیه آن جلوگیری می کند. به عنوان مثال وقتی سیستم را پویش می کنید، اگر تعداد درخواست های شما از حد نصاب تعریف شده در دیوار آتش فراتر باشد، این دیوارهای آتش مبتنی بر وب، شما را به عنوان هکر شناسایی کرده و با بلوکه کردن آدرس IP شما از درخواست های آتی ممانعت بعمل می آورد.
اما هنوز هم راه هایی برای دور زدن این مکانیزم امنیتی وجود دارد. به عنوان مثال می توانید پویش اولیه را با استفاده از محدوده ای از آدرس های IP که به شما و تیم شما ارتباطی ندارد انجام دهید. این عمل را می توان با استفاده از شبکه های مجازی خصوصی به سادگی انجام داد.
فاز سوم : مدل سازی یک تهدید
در مدل سازی تهدیدات، بر پایه اطلاعات بدست آمده از فاز جمع آوری اطلاعات، به صورت قدم به قدم به آنالیز و شناسایی آسیب پذیری های موجود پرداخته می شود. هدف می تواند شبکه، سرویس، برنامه های کاربردی و غیره باشد. نوع اطلاعاتی را که برای مورد حمله قرار دادن هدف مورد نیاز است در این فاز دریافت می کنیم.
به عنوان مثال یک کامپیوتر شخصی را به عنوان دشمن شبیه سازی کنید. در فاز جمع آوری اطلاعات باید تمام جنبه های سیستم هدف مورد بررسی قرار گیرد. از قبیل اینکه سیستم عامل هدف چیست، چه برنامه هایی بر روی آن نصب شده است، آیا سیستم دارای دیوار آتش و آنتی ویروس است و امثالهم. پس از جمع آوری این اطلاعات مهم وارد قسمت سوم یعنی مدل سازی تهدید می شوید.
در این فاز باید بررسی کنید که آیا سیستم عامل هدف اصلا قابل نفوذ است یا خیر؟! اگر در این فاز سیستم عامل قربانی را قابل نفوذ تشخیص دادید، باید بهترین راه برای حمله به قربانی را مشخص کنید. شایان ذکر است که این فاز یکی از فاز های طاقت فرسا PTES است.
فاز چهارم : تحلیل آسیب پذیری ها
بعد از یافتن بهترین روش برای حمله، باید چگونگی دسترسی به هدف را مد نظر داشت. در طی فاز تحلیل آسیب پذیری باید اطلاعات خود را با اطلاعاتی که در مراحل قبل بدست آوردید ترکیب کرده تا بهترین بردار حمله را در اختیار داشته باشید.
فاز تحلیل آسیب پذیری، شامل پویش پورت ها و آسیب پذیری ها، جمع آوری داده ها توسط Banner Grabbing و اطلاعات جمع آوری شده در طی فاز اول می باشد.
فاز پنجم : اکسپلویت کردن آسیب پذیری
اکسپلویت کردن آسیب پذیری در یک سیستم شاید یکی از هیجان انگیزترین بخش های آزمون نفوذ باشد. به طور کلی برنامه های موجود بر روی سیستم های ما مجموعه ای از قوانین را دنبال می کنند تا یک عمل خاص (مد نظر برنامه نویس) را انجام دهند. اکسپلویت کردن یک برنامه در واقع راهی است جهت انجام دادن کارهای مخرب (مد نظر هکر)بر روی سیستم قربانی؛ حتی اگر سیستم از اجرای آن فرمان ها منع شده باشد.
در واقع یک برنامه فقط کاری را که برای آن برنامه نویسی شده است انجام می دهد. نفوذگر می تواند از حفره های امنیتی (در صورت وجود) در برنامه سوء استفاده کند و دستورات و فرامین مطلوب خود را روی سیستم قربانی اجرا نماید. درهرحال یافتن این حفره ها نیازمند یک ذهن خلاق است و شما باید از وجود یا عدم وجود این حفره ها در سیستم قربانی حصول اطمینان کنید تا در موفقیت آزمون نفوذ به مشکل بر نخورید.
فاز ششم : پس از اکسپلویت کردن سیستم
این فاز پس از نفوذ به یک یا چند ماشین و گرفتن دسترسی از آنها آغاز می شود و تمامی فرآیند هایی که هکر یا نفوذگر بعد از نفوذ به ماشین قربانی انجام می دهد از قبیل دانلود فایل از سیستم قربانی، بارگزاری کردن یک بدافزار در ماشین هدف و... جزوء فعالیت هایی است که در این فاز صورت می گیرد. در این فاز علاوه بر نکات ذکر شده، ارزش ماشین های مورد نفوذ قرار گرفته شده در راستای اینکه دسترسیتان را بر روی آن ها حفط کنید یا خیر تعیین می شود.
حالا سوال پیش می آید که کامپیوترها چه ارزشی می توانند داشته باشند؟! در جواب این سوال می توان گفت، ارزش هر کامپیوتر بر مبنای حساسیت اطلاعات ذخیره شده در آن است. این فاز یکی دیگر از فازهای مهم برای نفوذگر است، چرا که روش های مورد استفاده در این بخش به نفوذگر برای شناسایی و مستند سازی حساسیت داده ها کمک می کند.
فاز هفتم : گزارش نویسی
این فاز به مراتب مهم تر از بقیه فازهاست، چرا که باید به مشتری گزارش کامل کار خود را از آزمون نفوذ تحویل بدهید. در این گزارش شرحی از کارهای انجام شده (عملیات نفوذ)، چگونگی انجام آنها و از همه مهم تر چگونگی مقابله با نفوذهای انجام شده و برطرف نمودن آسیب پذیری های موجود می آید.