در تست نفوذ بهرهبرداریها را در مقابل آسیبپذیریهایی که (گاهی با استفاده از یک ابزار مانند Metasploit ) کشف کردهایم، در تلاش برای دسترسی به سیستمهای مشتری اجرا میکنیم. همانطور که میبینید، بعضی از آسیبپذیریها در تست نفوذ، مانند ورود به سیستم با گذرواژههای پیش فرض، به راحتی قابل استفاده هستند.
تست نفوذ
مرحله پس از بهره برداری (post-exploitation) در تست نفوذ
تست نفوذدر مرحله پسا بهرهبرداری، درست بعد از بهرهبرداری آغاز میشوند. شما وارد سیستم شده اید، اما آیا این نفوذ واقعا برای مشتری مهم است؟ اگر یک سیستم موروثی بدون وصله را بشکنید که بخشی از یک دامنه نیست یا به نحوی دیگر به اهداف با ارزش بالا متصل شده است و این سیستم حاوی هیچ اطلاعاتی برای جذب مهاجم نیست،درتست نفوذ خطر این آسیبپذیری به مراتب کمتر از آن است که بتوانید از آن به عنوان یک کنترل کننده دامنه یا یک سیستم توسعه مشتری استفاده کنید.
پس از بهرهبرداری در تست نفوذ، اطلاعاتی در مورد سیستم تحت حمله جمعآوری میکنیم، فایلهای مهم را جستجو میکنیم، تلاش میکنیم امتیازات را در صورت لزوم افزایش دهیم و غیره. برای مثال، ممکن است هشهای رمزنگاری را برای دیدن اینکه آیا میتوانیم آنها را معکوس کنیم یا از آنها برای دسترسی به سیستمهای اضافی استفاده کنیم، رها کنیم. همچنین ممکن است سعی کنیم از دستگاه بهرهبرداری شده برای حمله به سیستمهایی که قبلا به آنها دسترسی نداشتیم، استفاده کنیم.
نشتی حافظه درتست نرم افزار موضوعی است که هم یک مشکل کارایی (به دلیل اتلاف حافظه) و هم یک مشکل امنیتی محسوب میگردد (به دلیل مصرف بیرویه حافظه که نهایتا منجر به پرشدن حافظه و پایین آمدن سرور میشود و این معضل در تست نرم افزار بطور مستمر مشخص شود). بررسی این مشکل در برنامهنویسی سیستمهای سطح پایین (تولید شده با زبانهایی همچون C و ++C) از اهمیت خاصی برخوردار است و یکی از مهم ترین مراحل بشمار می آید. چرا که به دلایلی همچون عدم وجود virtual machine در زبانهای سطح پایین و امکان استفاده مستقیم از اشاره گرها (pointer)، تشخیص این مشکل بسیار پیچیده است.
البته مشکل نشتی حافطه در زبانهای سطح بالایی همچون Java و #C نیز که در یک محیط sandbox اجرا میشوند، به دلیل برنامهنویسی نامطلوب میتواند رخ دهد و لذا برنامهنویسان باید دقت کافی در این زمینه را بنمایند.
مرحله بعدی در تست نفوذ، جمع آوری اطلاعات است. در طی این مرحله، منابع اطلاعاتی در دسترس را آزادانه تحلیل میکنید. این فرآیند به عنوان جمع آوری اطلاعات منبع باز (OSINT) شناخته شده است. همچنین از ابزارهایی مانند اسکنرهای پورت استفاده میکنید تا بدانید چه سیستمهایی در اینترنت یا شبکه داخلی و همچنین چه نرم افزار در حال اجرایی وجود دارد.
بر اساس دانش حاصل شده در مرحله جمعآوری اطلاعات در تست نفوذ ما در جایگاه مهاجمان فکر میکنیم و ، ما به سمت مدلسازی تهدید حرکت میکنیم. در تست نفوذ ما در جایگاه مهاجمان فکر میکنیم و برنامههای حمله را براساس اطلاعاتی که جمعآوری کردهایم، توسعه میدهیم. به عنوان مثال، اگر مشتری نرم افزار اختصاصی را توسعه دهد، یک مهاجم میتواند این سازمان را از طریق دسترسی به سیستمهای توسعه داخلی خود، که در آن کد منبع توسعه یافته و تست شده، و فروش اسرار تجاری شرکت به یک شرکت رقیب، از بین ببرد. براساس اطلاعاتی که در جمعآوری اطلاعات در تست نفوذ ما در جایگاه مهاجمان فکر میکنیم و به دست آوردهایم، استراتژیهایی برای نفوذ به سیستمهای مشتری ایجاد میکنیم.
تست نفوذ با مرحله پیشبرد مشارکت (pre-engagement) آغاز میشود که شامل گفتگو با مشتری در مورد اهداف تست نفوذ، نگاشت دامنه (وسعت و پارامترهای تست) و غیره است. وقتی تستر نفوذ و مشتری در مورد دامنه، فرمت گزارش و سایر موضوعات به توافق رسیدند، تست نفوذ واقعی آغاز میشود.
در مرحله جمعآوری اطلاعات در تست نفوذ، تستر نفوذ اطلاعات موجود در مورد کلاینت را جستجو میکند و راههای بالقوه اتصال به سیستمهای آن را شناسایی میکند. در مرحله مدل سازی تهدید (threat modeling) اگر یافته ها اجازه دهد مهاجم به سیستم وارد شود، تستر از این اطلاعات برای تعیین ارزش هر یافته و تأثیر آن بر مشتری استفاده میکند. در تست نفوذ این ارزیابی به تستر نفوذ اجازه میدهد تا برنامه عملیاتی و روشهای حمله را توسعه دهد.
تست نفوذ (penetration testing) عبارت است از شبیهسازی حملات واقعی جهت ارزیابی مخاطرات مربوط به نقض امنیتی بالقوه. در تست نفوذ، تسترها نه تنها آسیبپذیریهایی را که میتواند توسط مهاجمان مورد استفاده قرار گیرد، کشف میکنند، بلکه در صورت امکان، آسیبپذیریها را به منظور ارزیابی آنچه که ممکن است مهاجمان بعد از بهرهبرداری موفق به دست بیاورند، مورد استفاده قرار میدهند.
تست نفوذ
در مواقعی یک خبرنامه در مورد آسیب یک شرکت بزرگ توسط یک حمله سایبری منتشر میشود. اغلب مهاجمان از آخرین و بزرگترین zero-day ها (آسیب پذیریهای وصله نشده توسط ناشران نرم افزاری) استفاده نمیکنند.