آشنایی با Penetration Testing یا تست نفوذ

Penetration Testing

16 فروردین 1400
آشنایی با Penetration Testing (تست نفوذ)

تست نفوذ یا Penetration Testing چیست؟

penetration testing یا تست نفوذ که با نام Pen Test نیز شناخته می شود یکی از رایج ترین و استانداردترین روش های تست امنیت و نفوذ برنامه های تحت وب است. Pen Test حملات شبیه سازی شده را از درون و بیرون وب سایت، روی آن اجرا می کند تا بفهمیم چه قسمت هایی از وب سایت ما دارای ضعف امنیتی هستند. توصیه می شود که تمام وب سایت های دنیا از Pen Test استفاده کنند تا قبل از هکرها به ضعف امنیتی سایت خود پی ببرند و سریعا آن را تصحیح کنند.

مسئله اصلی اینجاست که بسیاری از برنامه های تحت وب داده های حساس کاربران را درخواست کرده و آن ها را در پایگاه داده خود ذخیره می کنند. این موضوع برنامه های تحت وب را تبدیل به معدنی از اطلاعات ارزشمند می کند بنابراین هکرها علاقه زیادی به پایگاه های داده نشان داده اند. وضعیت زمانی وخیم می شود که عمومی بودن برنامه های تحت وب را نیز در نظر بگیریم! ما با انجام pen test اهداف زیر را دنبال می کنیم:

  • تشخیص آسیب پذیری های یک سیستم که از قبل ناشناخته بودند.
  • بررسی کارآمدی قوانین امنیتی وب سایت در حال حاضر
  • تست کردن مولفه های امنیتی فعال در یک سایت مانند firewall و DNS
  • تشخیص ضعیف ترین قسمت های برنامه
  • تشخیص بخش های مناسب سایت برای نشت داده

انواع تست نفوذ

هر تست نفوذ می تواند به دو شکل اصلی انجام شود: شبیه سازی یک حمله درونی (internal) و شبیه سازی یک حمله بیرونی (external). ما در این بخش هر دو روش را توضیح داده و آن ها را با هم مقایسه خواهیم کرد.

روش اول، Internal Pen Test

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

  • یکی از کارکنان شرکت یا افرادی که به قوانین امنیتی و رمزهای عبور دسترسی دارد به داده ها حمله می کند.
  • حملات مهندسی اجتماعی
  • حملات phishing
  • حملات با استفاده از سطح دسترسی (User Privileges)

تست این جنبه خاص وظیفه شما (توسعه دهنده و مدیر سایت) است. باید مطمئن شوید کارکنان شما قابل اعتماد هستند و برای هر کدام از آن ها سطح دسترسی خاصی را تعریف کنید.

بنابراین حملات درونی سعی می کنند بدون داشتن مجوز ها و اعتبارات کافی، از درون سیستم به داده ها دسترسی پیدا کنند یا تغییراتی را در ساختار سیستم ایجاد کنند. وظیفه internal pen test این است که چنین مسیر هایی را قبل از افراد خرابکار پیدا کند.

روش دوم، External Pen Test

این دسته از حملات از خارج از شبکه و سیستم شما انجام می شوند و دیگر ربطی به کارکنان شما ندارند. در این حالت tester ها که به نام ethical hacker نیز شناخته می شوند هیچ اطلاعاتی از سیستم شما ندارند چرا که جزئی از سیستم نبوده و درون آن قرار ندارند. برای انجام این نوع از تست ها ما آدرس IP سرور خود را به آن ها می دهیم و آن ها سعی می کنند انواع حملات مختلف را روی سیستم ما انجام بدهند. این حملات روی firewall ها و DNS ها و همچنین IDS (سامانه تشخیص نفوذ) انجام می شوند.

تست نفوذ برای وب سایت ها چطور انجام می شود؟

تست نفوذپذیری برنامه های تحت وب معمولا روی پروسه راه اندازی و محیط برنامه تمرکز می کند تا اینکه بخواهد به ساختار درونی برنامه بپردازد. این عملیات شامل جمع آوری اطلاعات راجع به برنامه هدف و پیدا کردن میزبان آن است. این نوع از تست ها در چند مرحله زیر انجام می شوند:

مرحله اول، شناسایی فعال و غیرفعال: اولین مرحله در تست نفوذ وب سایت ها مرحله جمع آوری اطلاعات است. tester (کسی که حملات را روی سایت شما تست می کند) در این مرحله سعی می کند هدف خودش را شناسایی کند. این کار با دریافت هر نوع اطلاعاتی راجع به هدف انجام می شود چرا که هر اطلاعاتی می تواند به ما در شناسایی نقاط حمله کمک کند. در شناسایی غیرفعال (passive reconnaissance) tester سعی می کند بدون درگیری با هدف، اطلاعات موجود و آماده را به دست بیاورد. این مرحله معمولا با استفاده از وب سایت هایی مانند گوگل و بررسی زیردامنه ها، لینک ها، نسخه های قبلی سایت و امثال آن انجام می شود.

از طرف دیگر در شناسایی فعال (active reconnaissance) مستقیما با هدف درگیر شده و سعی می کنیم اطلاعاتی را از آن بگیریم. برای انجام این کار ابزارهای مختلفی وجود دارد:

  • Nmap Fingerprinting: در این مرحله با استفاده از ابزار رایگان Nmap network scanner اطلاعاتی را راجع به زبان های استفاده شده در آن سایت و سیستم عامل آن را به دست بیاورید. همچنین اطلاعاتی را در مورد نرم افزار سرور و نسخه آن و پورت های باز و سرویس های در حال اجرا به دست می آورید.
  • Shodan Network Scanner: این ابزار به شما کمک می کند تا اطلاعات خوبی را در رابطه با سرور به دست بیاورید. این اطلاعات معمولا شامل geolocation (اطلاعات جغرافیایی سرور)، نرم افزار استفاده شده در سرور و پورت های باز خواهد بود.
  • DNS Forward And Reverse Lookup: این روش به شما اجازه می دهد که IP های زیردامنه (subdomain) های شناسایی شده را به راحتی پیدا کند. البته می توانید از ابزار Burp Suite استفاده کنید تا این عملیات به صورت خودکار انجام شود.
  • DNS Zone Transfer: شما می توانید با استفاده از دستور nslookup سرور های DNS وب سایت مورد نظر را پیدا کنید.

تعداد این ابزارها بسیار زیاد است و نمی توانیم تمام آن ها را در این مقاله توضیح بدهیم. شما می توانید با یک جست و جوی ساده با انواع و اقسام ابزارهای penetration testing آشنا بشوید.

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

ابزار Nmap یا Network Mapper یکی از ابزارهایی است که علاوه بر اسکن شبکه، می تواند حملاتی را نیز روی آن انجام بدهد. این ابزار ماژولی برای اسکریپت نویسی دارد که می تواند برای شناسایی آسیب پذیری ها و شناسایی در های پشتی (backdoor) استفاده شود و حملاتی در این زمینه را نیز اجرا می کند.

ابزار Wireshark یکی از محبوب ترین تحلیل کنندگان شبکه در فضای وب است. این ابزار می تواند پروتکل های شبکه را به صورت عمیق بررسی کرده و ترافیک را به صورت زنده زیر نظر بگیرد و سپس تحلیل های مختلفی را روی ترافیک ضبط شده اجرا کند. داده های جمع آوری شده می توانند بعدا به صورت XML یا PostScript یا CSV یا فایل متنی ساده استخراج شوند تا بعدا توسط ابزارهای دیگر تحلیل های بیشتری را روی آن ها انجام بدهیم.

ابزار Metasploit در اصل یک فریم ورک است و مانند دیگر برنامه های این بخش نیست. شما می توانید با استفاده از این فریم ورک ابزارهای مناسب کار خود را تولید کنید. معمولا از Metasploit در زمینه های زیر استفاده می شود:

  • انتخاب و هدف قرار دادن اکسپلویت مورد نظرتان
  • انتخاب و پیکربندی payload مورد استفاده
  • انتخاب و پیکربندی طرح encoding
  • اجرای اکسپلویت

ابزار Burp Suite تا به حال چندین بار در این مقاله ذکر شده است و دلیل آن هم جامع بودنش می باشد. این ابزار مجموعه ای کامل از ابزارهای مختلف برای تست نفوذپذیری و امنیت برنامه ها است. ابزارهایی که درون این برنامه قرار دارد برای انجام تمام مراحل تست نفوذ کافی هستند؛ Intercepting proxy و Application-aware spider و اسکنر حرفه ای و Repeater tool تنها چند مورد از ابزارهای موجود در این پکیج است.

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

ابزار Vega برای امنیت برنامه های تحت وب

ابزار Vega یک ابزار رایگان برای تست نفوذ پذیری برنامه های تحت وب است. این ابزار می تواند به شما کمک کند تا قبل از هکرها حملات SQL Injection ها  یا حملات XSS را در وب سایت خود شناسایی کنید. این ابزار برای کاربران ویندوز، مک و لینوکس در دسترس است. اطلاعات بیشتر در وب سایت رسمی Vega موجود است.

نوشتن تست های خاص برای این ابزار مسئله ای پیچیده است و نیاز به دوره خودش را دارد اما برای تست های ساده بدین شکل عمل کنید:

  • برنامه Vega را باز کرده و روی علامت + در بالا و سمت چپ صفحه کلیک کنید.
  • در صفحه باز شده و در فیلد Enter a Base URI for scan آدرس وب سایت مورد نظر خودتان را وارد نمایید و گزینه next را انتخاب کنید.
  • در این صفحه لیستی از انواع و اقسام ماژول های تست مانند ماژول های XSS را مشاهده خواهید کرد. هر کدام را که تمایل دارید فعال کنید و دوباره Next را برای صفحات بعدی انتخاب کنید.
  • در نهایت گزینه Finish را انتخاب کنید. در صورتی که پیام هشداری در رابطه با redirect شدن آدرس وارد شده دریافت کردید، گزینه Yes را انتخاب کنید.
  • اسکن سایت چند لحظه طول کشیده و پس از آن گزارشی درباره نتایج یافت شده به شما ارائه می گردد.

امیدوارم این مقاله شما را با کلیت بحث تست نفوذ آشنا کرده باشد.


منبع: وب سایت های tutorialspoint و relevant

نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.