کمیته رکن چهارم – اجرای فرایند تست نفوذ کمک قابل توجهی به تیمهای امنیتی در شناسایی آسیبپذیریهای موجود در یک سیستم رایانهای، شبکه و برنامههای کاربردی تحت وب نموده و یک ارزیابی کامل از راهکارهای دفاعی و میزان مقاومت آنها در برابر رخنههای امنیتی و همچنین یکسری رویکردهای پیشنهادی جهت کاهش مخاطرات هک سیستم را ارایه میدهد.
تست نفوذ چیست؟
تست نفوذ فرآیند شناسایی آسیبپذیریهای امنیتی در یک برنامه کاربردی با ارزیابی سیستم یا شبکه با استفاده از تکنیکهای مخرب مختلف مورد استفاده توسط هکرها است. نقاط ضعف یک سیستم در این فرآیند از طریق یک حمله شبیهسازی شده مجاز مورد سوءاستفاده قرار می گیرد. هدف از این تست، ایمنسازی دادههای مهم از هکرهایی است که قصد دسترسی غیرمجاز به سیستم دارند. تست نفوذ به عنوان پن تست نیز شناخته میشود و تست نفوذ کننده، نیز به عنوان یک هکر اخلاقی شناخته می شود.
آسیبپذیریها چگونه ایجاد میشوند؟
- خطاهای طراحی و توسعه: ممکن است در زمان تولید سختافزارها و نرمافزارها، یکسری آسیبپذیریهایی که دادههای سازمانها را در معرض نفوذ قرار میدهند ایجاد شوند.
- پیکربندی ضعیف سیستمها: عدم پیکربندی صحیح سیستمهای رایانهای، منجر به ایجاد حفرههای امنیتی، نفوذ مهاجمان سایبری و در نتیجه سرقت اطلاعات حساس میشود.
- خطاهای انسانی: حذف نکردن اسناد و مدارک دورریختنی با استفاده از روشهای اصولی، خطاهای کدنویسی، تهدیدات داخلی، وارد نمودن کلمات عبور در وبسایتهای فیشینگ، کلیک بر روی لینکهای فیشینگ، امکان دسترسی افراد به اطلاعات محرمانه و غیره از جمله عوامل انسانی هستند که منجر به نشت و سرقت اطلاعات میشوند.
- قابلیت اتصال: هکرها به راحتی میتوانند به سیستمهای سازمانی متصل به شبکههایی که از ایمنی چندان زیادی برخوردار نیستند دسترسی داشته باشند.
- پیچیدگی: برخلاف تصور عموم، احتمال دسترسی به یک سیستم پیچیده که دارای امکانات و قابلیتهای پیشرفتهای هم هست بیشتر میباشد.
- کلمه عبور: با وجود توصیهها و هشدارهای ایمنی در رابطه با انتخاب و حفظ کلمات عبور، بسیاری از کاربران همچنان از کلمات عبور ساده و قابل حدس استفاده نموده و آنها را به راحتی در اختیار دیگران قرار میدهند.
- ورودیهای کاربران: مجرمان سایبری بهراحتی میتوانند مسیرهای ورودی دریافت داده از کاربران را در سیستمها شناسایی نموده و پس از اجرای حملاتی مثل تزریق SQL، سرریز بافر و غیره به سیستمها نفوذ کنند.
- مدیریت: ممکن است در صورت عدم وجود تیمهای متخصص و بودجه لازم، امکان مدیریت صحیح و کامل مخاطرات وجود نداشته باشد.
- فقدان آموزشهای لازم: عدم برگزاری دورههای آموزشی کارآمد و ارایه دانش لازم به کارمندان نقش قابل توجهی در بروز خطاهای انسانی و سایر آسیبپذیریهای امنیتی دارد.
- ارتباطات: امکان دسترسی به اطلاعات محرمانه و سرقت دادههای مهم از طریق کانالهایی مثل شبکههای همراه، اینترنت و تلفن برای هکرها وجود دارد.
ابزارها و سازمانهای ارایهدهنده تست نفوذ
ابزارهای خودکار معمولاً با استفاده از رویکردهای رمزنگاری و تشخیص نامهای کاربری و کلمات عبور حفرههای امنیتی موجود در سیستم را شناسایی میکنند. این ابزارها همچنین قابلیت اسکن کدهای مخربی که در برنامههای کاربردی منجر به بروز آسیبپذیریهای امنیتی میشوند را دارند.
مزایای یک ابزار تست نفود ایدهآل شامل موارد زیر است.
- نصب، پیکربندی و اجرای آن راحت باشد؛
- سیستم را به راحتی اسکن کند؛
- قابلیت دستهبندی آسیبپذیریها را براساس اولویت و میزان مخاطراتی که ممکن است ایجاد کنند داشته باشد؛
- مجهز به فناوری خودکارسازی اعتبارسنجی آسیبپذیریها باشد؛
- کدهای مخربی را که پیش از این ایجاد و کشف شدهاند دوباره بررسی و ارزیابی کند؛
- قابلیت تولید گزارشهای دقیق و با جزئیات کامل را داشته باشد.
سپس نیروهای داخلی که آموزشهای لازم را هم در این رابطه کسب نمودهاند یا کارشناسان و متخصصین امنیتی باید تستهای مورد نیاز را اجرا کنند.
ابزارهای تست نفوذ توصیه شده
- Acunetix
Acunetix WVS یک بسته کامل را که شامل مجموعهای از امکانات کاربردی و مفید است و به راحتی نیز قابل استفاده میباشد در اختیار مهندسان نرمافزار و کارشناسان امنیت سایبری قرار میدهد.
- Intruder
یک اسکنر آسیبپذیری قدرتمند با قابلیت خودکارسازی تست نفوذ است که آسیبپذیریهای امنیت سایبری در محیط دیجیتال سازمان را شناسایی نموده و مخاطرات امنیتی موجود را گزارش میدهد. این ابزار نقش کاربردی در پیشگیری از نفوذهای امنیتی دارد.
امکانات کلیدی:
- قابلیت اجرای بیش از ۹ هزار بررسی خودکار در سطح زیرساخت فناوری اطلاعات سازمان شما؛
- بررسی وضعیت لایه وب و زیرساخت مثل آسیبپذیریهای تزریق SQL و تزریق اسکریپت بین درگاهی؛
- اسکن خودکار سیستم در صورت شناسایی تهدیدات جدید؛
- قابلیت ادغام با AWS، آژور، گوگل کلود، مایکروسافت تیمز، جیرا، API و غیره؛
- طرح آزمایشی رایگان ۳۰ روزه.
شرکتهای توصیه شده برای اجرای تست نفوذ
- Software Secured
تیمهای توسعه در سازمانهای ارایهدهنده نرمافزار به صورت سرویس با استفاده از خدمات «تست نفوذ به صورت سرویس» شرکت Software Secured میتوانند نرمافزارهایی امن به مشتریانشان تحویل دهند. Software Secured امکان اجرای تستهای مکرر بر روی قطعه کدهای ثابت را برای سازمانهایی که کدهای حجیم تولید میکنند فراهم مینماید. بنا بر نتایج تحقیقات و ارزیابیها، چنین تستهایی نسبت به تستهای نفوذی که فقط یکبار در سال انجام میشوند حداقل دو برابر بیشتر خطاهای امنیتی را شناسایی میکنند.
امکانات کلیدی:
- اجرای ترکیبی از تست خودکار و دستی و چرخش منظم اعضای تیم برای ارایه دیدگاههای جدید و تازه؛
- اجرای مکرر تستهای جامع در سال؛
- دسترسی پیوسته به سرویسهای مشاورهای و کارشناسان امنیت سایبری؛
- اجرای مدلسازی تهدید، تست منطق کسبوکار و تست زیرساخت.
سایر ابزارهای رایگان:
- Nmap
- Nessus
- Metasploit
- Wireshark
- OpenSSL
سرویسهای تجاری:
- Pure Hacking
- Torrid Networks
- SecPoint
- Veracode
چرا باید تست نفوذ را اجرا کنیم؟
امروزه اجرای حملات باجافزاری بر علیه سازمانهای بزرگ بسیار متداول شده و از محبوبیت بسیار زیادی در بین مجرمان سایبری برخوردار است. برای مثال در سال ۲۰۱۷ میلادی عوامل باجافزار WannaCry سیستمهای رایانهای بسیاری از سازمانهای بزرگ را از کار انداخته و از قربانیان درخواست باجهای سنگین کردند. یکی از راهکارهای دفاعی کاربردی جهت حفاظت از سیستمهای اطلاعاتی در برابر نفوذهای امنیتی و حملات باجافزاری اجرای منظم تستهای نفوذ در شبکههای سازمانی است .
چه زمانهایی تستهای نفوذ باید انجام شوند؟
- حفاظت از دادههای مالی یا ایمنسازی آنها در زمان انتقالشان از طریق شبکه یا در بین سیستمهای مختلف؛
- در صورت تقاضای مشتریان برای دریافت تست نفوذ به عنوان بخشی از چرخه انتشار نرمافزار ؛
- ایمنسازی دادههای کاربران؛
- شناسایی آسیبپذیریهای امنیتی در یک برنامه کاربردی؛
- شناسایی حفرههای امنیتی در سیستم؛
- ارزیابی پیامدهای تجاری ناشی از حملات سایبری موفق؛
- پیروی از استانداردها و قوانین امنیتی در سازمان؛
- پیادهسازی یک راهکار امنیت سایبری کارآمد در سازمان.
حریم خصوصی کاربران و حفظ امنیت دادهها از جمله مهمترین نگرانیهای امروزی تیمهای امنیتی هستند. از این رو سازمانها باید مشکلات و آسیبپذیریهای امنیتی موجود در رایانهها و شبکههای داخلیشان را شناسایی نموده و سازوکارهای دفاعی مناسب را طراحی کنند.
در تست نفوذ چه مواردی باید تست شوند؟
- نرمافزارها (سیستمعاملها، سرویسها، برنامههای کاربردی)؛
- سختافزارها؛
- شبکه؛
- فرایندها؛
- رفتار کاربران نهایی.
انواع تست نفوذ
انواع تستهای نفوذ شامل دو گروه دستهبندی متفاوت هستند. در ادامه هر یک از این گروهها را مورد بررسی قرار میدهیم.
گروه اول
- تست مهندسی اجتماعی: عامل اصلی آسیبپذیریهای امنیتی خطاهای انسانی و روشهای مهندسی اجتماعی هستند. از این رو همه کارمندان باید از سیاستها و استانداردهای امنیتی پیروی نموده و از ارایه هر گونه اطلاعات حساس از طریق تلفن یا ایمیل جداً خودداری کنند. یکی از روشهای اجرای بازرسیهای امنیتی، شناسایی رفتارهای نادرست کارمندان و اصلاح آنها از طریق انجام تستهای مهندسی اجتماعی است. این تستهای نفوذ از طریق تلفن یا اینترنت و بر روی یکسری از کاربران، فرایندها و اعضای تیم پشتیبانی انجام میشوند. در این فرایند فرد مدنظر باید متقاعد به ارایه یکسری اطلاعات حساس مثل کلمات عبور، اطلاعات کاری مهم و غیره شود.
- تست برنامههای کاربردی: میتوانید با استفاده از روشهای نرمافزاری آسیبپذیریهای امنیتی برنامههای کاربردی تحت وب و نرمافزارهای موجود در محیط هدف را بررسی نموده و مشخص کنید که آیا یک برنامه کاربردی دچار آسیبپذیریهای امنیتی هست یا خیر.
- تست نفوذ فیزیکی: امکان بررسی تجهیزات فیزیکی شبکه و نقاط دسترسی جهت شناسایی رخنههای امنیتی و همچنین حفاظت از دادههای حساس توسط روشهای امنیتی فیزیکی قوی وجود دارد. تست نفوذ فیزیکی ارتباط چندان زیادی با تست نرمافزاری ندارد.
- تست سرویسهای شبکه: این تست بسیار رایج است و جهت شناسایی حفرههای امنیتی موجود در شبکه، به صورت محلی یا از راه دور انجام میشود.
- تست سمت کلاینت: این تست با هدف شناسایی آسیبپذیریهای موجود در نرمافزارهای سمت کلاینت و سوءاستفاده از آنها اجرا میگردد.
- شمارهگیری جنگی (war dial) از راه دور: در این روش مودمهای موجود در محیط جستجو و شناسایی میشود. سپس اجرا کننده تست سعی میکند از طریق جستجوی فراگیر یا حدس کلمه عبور به سیستمهای متصل به این مودمها نفوذ کند.
- تست امنیت بیسیم: این تست جهت شناسایی نقاط اتصال باز یا شبکههای وایفای که از ایمنی چندان بالایی برخوردار نیستند انجام میشود.
گروه دوم
- تست نفوذ جعبه سیاه: در این روش اجرا کننده تست، سیستم هدف، شبکه یا فرایندها را بدون دانش قبلی و برمبنای یکسری اطلاعات سطح بالا از ورودیها مثل نام سازمان یا نشانی وب ارزیابی نموده و تلاش میکند که به سیستم مدنظر نفوذ یابند. در این تست هیچ کدی مورد بررسی قرار نمیگیرد.
- تست نفوذ جعبه سفید: در این روش، آزمونگر کلیه اطلاعات مربوط به محیط (سیستمها، شبکهها، سیستمعامل، آیپیها، کدها و غیره) را در اختیار دارد. او کدها را بررسی نموده و خطاهای طراحی و توسعه را شناسایی میکند. این تست یک شبیهسازی از یک حمله امنیتی داخلی است.
- تست نفوذ جعبه خاکستری: در این روش، اجراکننده تست اطلاعات کمی درباره محیط هدف دارد. این مدل یک شبیهسازی از حملات امنیتی بیرونی است.
تکنیکهای تست نفوذ
تکنیکهای تست نفوذ شامل تست نفوذ دستی، تست نفوذ با استفاده از ابزارهای خودکار و ترکیب دو روش دستی و خودکار است. شناسایی همه آسیبپذیریها با استفاده از ابزارهای خودکار کار چندان آسانی نیست. اجراکنندگان تستهای نفوذ باید براساس مهارت و دانشی که از سیستمهای تحت نفوذ دارند و اسکن دستی آنها، حملات شبیهسازی را اجرا نموده و تمام آسیبپذیریها را تشخیص دهند. بررسیهای دستی شامل اجرای روشهای مهندسی اجتماعی، ارزیابی، طراحی، منطق کسبوکار و همچنین اعتبارسنجی کدها هستند.
فرآیند تست نفوذ
اولین کاری که اجرا کننده تست نفوذ انجام میدهد، تشخیص آسیبپذیریهای موجود در سیستم است. اقدامات اصلاحی بر مبنای این آسیبپذیریها انجام میشوند و تست نفوذ بارها تکرار میشود تا زمانی که سیستم همه تستها را با موفقیت طی کند. این فرایند شامل جمعآوری دادهها، ارزیابی آسیبپذیری، اجرای حمله و تحلیل نتایج و آماده کردن گزارش است.
در مرحله جمعآوری دادهها از روشهای مختلف مثل جستجوی گوگل برای کسب اطلاعات درباره سیستم مدنظر استفاده میشود. همچنین میتوانید از فنون تحلیل کد صفحات وب برای کسب اطلاعات بیشتر درباره سیستم، نسخه پلاگینها و نرمافزارها استفاده کنید. ابزارها و سرویسهای رایگان بسیار زیادی هم موجود هستند که اطلاعات کاربردی درباره پایگاههای داده، نسخه نرمافزارها، نرمافزارهای مورد استفاده و پلاگینهای شخص ثالث مختلف موجود در سیستمهای هدف را به شما ارایه میدهند. در مرحله دوم میتوانید بر اساس اطلاعات جمعآوری شده از مرحله اول نقطه ضعفهای امنیتی و نقاط نفوذ سیستم هدف را شناسایی کنید. در مرحله اجرای حمله کارشناسان مجرب تست نفوذ و با استفاده از نقاط نفوذ شناسایی شده در مرحله قبل، میتوانند حملات شبیهسازی را بر ضد سیستمها اجرا کنند. مرحله آخر نیز شامل آمادهسازی گزارشهای کامل برای انجام اقدامات اصلاحی است. همه آسیبپذیریهای شناسایی شده و روشهای اصلاحی پیشنهادی در این گزارشها ثبت میشوند. میتوانید متن گزارش آسیبپذیری را متناسب با نیازهای سازمان و در یکی از قالبهای HTML، XML، PDF یا Word انتخاب کنید.
مواردی از بررسیها در تست نفوذ
هدف اصلی از اجرای تست نفوذ، شناسایی حفرههای امنیتی سیستم است. در این بخش یکسری از مواردی که نیازمند تستهای نفوذ هستند را مورد بررسی قرار میدهیم.
- آیا برنامه کاربردی تحت وب قابلیت شناسایی حملات اسپم صورت گرفته از طریق فرمهای تماس را دارد.
- سرور پروکسی از سیستم در برابر حملات بیرونی و دسترسی هکرها به اطلاعات محرمانه جلوگیری میکند. بررسی کنید آیا ترافیک شبکه تحت نظارت تجهیزات پروکسی قرار دارد یا خیر.
- مطمئن شوید که ترافیک ورودی و خروجی ایمیل به خوبی فیلتر شده و ایمیلهای ناخواسته مسدود میشوند.
- کلاینتهای ایمیل معمولاً مجهز به فیلترهای داخلی هستند. باید آنها را متناسب با نیازتان پیکربندی کنید. میتوانید قوانین پیکربندی را به متن، بدنه یا عنوان ایمیل اعمال نمایید.
- فایروالها در قالب برنامههای نرمافزاری و ابزارهای سختافزاری از دسترسی غیرمجاز به یک سیستم و ارسال دادهها به خارج از شبکه جلوگیری میکنند. تنظیمات فایروالهایتان را بررسی نموده و صحت عملکردشان اطمینان یابید.
- سعی کنید به همه سرورها، رایانهها، چاپگرها، دستگاههای شبکه و سایر تجهیزات فیزیکی سیستمتان نفوذ کنید.
- از رمزنگاری کلیه نامهای کاربری و کلمات عبور و انتقال آنها از طریق کانالهای امن مثل https اطمینان کسب کنید.
- اطلاعات ذخیره شده در کوکیهای وبسایت را بررسی کنید. توجه کنید که این اطلاعات نباید به صورت خوانا ذخیره شوند.
- بررسی کنید آیا راهکارهای دفاعی تأثیری در رفع آسیبپذیریها دارند یا خیر؟
- اطمینان یابید که هیچ پورت بازی در شبکه وجود ندارد.
- همه دستگاههای تلفن را بررسی کنید.
- امنیت شبکه وایفای را محک بزنید.
- همه متدهای HTTP را بررسی کنید. متدهای PUT و Delete نباید بر روی یک سرور وب فعال باشند.
- بررسی کنید آیا کلمات عبور از استادنداردهای تعیین و تنظیم کلمه عبور پیروی میکنند یا خیر؟
- نام کاربری نباید Admin یا administrator باشد.
- پس از چند تلاش ناموفق برای ورود به یک برنامه کاربردی، صفحه ورود باید مسدود گردد.
- پیامهای خطا باید کلی بوده و اطلاعات دقیقی «نام کاربری اشتباه است» یا «کلمه عبور اشتباه است» مثل ارایه نکنند.
- بررسی کنید آیا ورودیهایی مثل کاراکترهای ویژه، تگهای HTML و اسکریپتها کنترل و مدیریت میشوند یا خیر.
- پیامهای هشدار یا خطا، نباید حاوی اطلاعات داخلی سیستم باشند.
- در صورت بروز مشکل در عملکرد یک صفحه وب، پیامهای خطای مخصوصی باید به کاربران نمایش داده شود.
- استفاده از رکوردهای رجیستری را بررسی کنید. اطلاعات حساس نباید در رجیستری حفظ شوند.
- همه فایلها باید پیش از بارگذاری به سرور اسکن شوند.
- در هنگام برقراری ارتباط با پیمانههای داخلی مختلف برنامههای کاربردی، دادههای حساس نباید از طریق نشانی وب ارسال شوند.
- هیچ نام کاربری یا کلمه عبور نباید برای طولانی مدت در سیستم وجود داشته باشد.
- همه فیلدهای ورودی را با رشتههای ورودی طولانی (شامل فاصله و بدون فاصله) بررسی کنید.
- بررسی کنید آیا قابلیت بازنشانی کلمه عبور، ایمن هست یا خیر.
- آسیبپذیری برنامههای کاربردی را در برابر تزریق SQL بررسی کنید.
- آسیبپذیری برنامههای کاربردی را در برابر تزریق اسکریپت بین درگاهی بررسی کنید.
- اعتبارسنجیهای مهم باید در سمت سرور انجام شوند و نه با استفاده از جاوا اسکریپت و در سمت کلاینت.
- منابع مهم سیستم تنها باید در اختیار افراد و سرویسهای مجاز باشند.
- همه گزارشهای دسترسی باید با دقت و توجه فراوان و با دسترسیهای مناسب حفظ شوند.
- مطمئن شوید که پس از خروج کاربر، نشست فعال خاتمه مییابد.
- مطمئن شوید که مرور دایرکتوری در سرور غیرفعال باشد.
- همه نسخههای پایگاه داده و برنامههای کاربردی باید به روز باشند.
- دستکاری نشانی وب را امتحان نموده و مطمئن شوید که برنامههای کاربردی تحت وب هیچ اطلاعات حساسی را نمایش نمیدهند.
- نشت حافظه و سرریز بافر را بررسی کنید.
- بررسی کنید آیا ترافیک ورودی شبکه برای تشخیص حملات تروجانی اسکن میشود یا خیر.
- ایمن بودن سیستم در برابر حملات جستجوی فراگیر (مثل روش آزمون و خطا برای شناسایی کلمات عبور و سایر اطلاعات حساس) را بررسی کنید.
- ایمن بودن سیستم را در برابر حملات محرومسازی از سرویس بررسی کنید.
- آسیبپذیری برنامههای کاربردی در برابر حملات تزریق اسکرپیت HTML را بررسی کنید.
- آسیبپذیری در برابر حملات اکتیوایکس و COM را بررسی کنید.
- مقاومت سیستم در برابر حملات جعل (جعل آیپی، آدرس ایمیل، جعل ARP، جعل ارجاعدهنده، جعل شناسه تماسگیرنده، مسومسازی شبکههای به اشتراکگذاری فایل، جعل جیپیاس و غیره) را بررسی کنید.
- مقاومت سیستم در برابر حمله با رشتههایی دارای قالب کنترل نشده را بررسی کنید. چنین حملاتی میتوانند منجر به از کار افتادگی برنامه کاربردی یا اجرای کدهای مخرب بر روی آن شود.
- مقاومت سیستم در برابر حمله تزریق XML(که از آن برای تغییر منطق اصلی برنامه کاربری استفاده میشود) را بررسی کنید.
- حملات متعارفسازی (canonicalization) را امتحان کنید.
- بررسی کنید که آیا صفحه خطا اطلاعاتی که برای هکرها کاربردی باشند را نمایش میدهند یا خیر.
- بررسی کنید که آیا دادههای مهمی مثل کلمات عبور در فایلهای خاصی ذخیره میشوند یا خیر.
- بررسی کنید که آیا یک برنامه کاربردی دادههایی بیش از آنچه که تقاضا شده را ارایه میدهد یا خیر.
- موارد ذکر شده از جمله اقدامات سادهای هستند که در هنگام اجرای تست نفوذ انجام میشوند. صدها روش پیشرفته تست نفوذ وجود دارد که میتوانید آنها را به صورت دستی یا با کمک ابزارهای خودکارسازی اجرا کنید.
منبع: فراست