همانطور که در مطالب پیشین شرح دادیم، طی 6 گام میتوان به نتیجه تست نفوذ که همان گزارش تست نفوذ میباشد دست یافت.
به دلیل آنکه گام سوم حساسترین و مهمترین گام در تست نفوذ به شمار میآید لازم است به مسائل بسیاری توجه داشت.
هنگامی که شما مشغول به تست نفوذ یک شبکه هستید باید شرایط آن را مدنظر قرار دهید و به این مورد که آیا شبکه زیر بار هست و یا در حال حاضر کارمندان یا مشتریان در حال سرویسگیری از سایت شبکه هستند یا خیر توجه کنید. زیرا شما میخواهید پردازشی روی آن انجام دهید بنابراین اگر شما نوعی از آسیب پذیری را در گام گذشته کشف کرده باشید و بخواهید آن آسیب پذیری را اکسپلویت کنید، نیاز به بررسی عمیق دارید.
نکته دیگر آنکه لازم است بررسی کنید پیامد اکسپلویت آسیب پذیری چه خواهد بود؟ اگر بخواهیم سادهتر به موضوع نگاهی بیندازیم این پرسش در ذهن به وجود میآید که آیا با اکسپلویت ما اختلالی در سرویس دهی پدید خواهد آمد؟
آیا ابزار یا اکسپلویتی که در اینترنت پیاده کردهایم را میتوانیم روی هر شبکهای تست کنیم؟
آیا استفاده از ابزارهای تست نفوذ یا به اصطلاح ابزارهای هک برای تست نفوذ در جاهایی که دارای سرویس دهی حساسی هستند، درست است یا خیر؟
به طورکل هر قرارداد تست نفوذ از بندهای قانونی مختلفی تشکیل یافته که بین تیم تست نفوذ و کارفرما نوشته و معین میشود. همچنین در این قرارداد مشخص میگردد که تیم تست نفوذ تا چه اندازه اجازه تست و نفوذ را دارد؟ دیگر آنکه اگر کارفرما دید کلی نسبت به این موضوع نداشته باشد لازم است تیم تست نفوذ این دید را به کارفرما بدهد و وی را آگاه نماید تا از مواجهه با مشکلات قانونی جلوگیری نمایند.
موضوع دیگری که لازم است در اینجا به آن اشاره کنیم این است که به اصطلاح استفاده از ابزارهای هک یا ابزارهای معروف تست نفوذ در همه جا صحیح نیست.
بسیاری از اوقات تیم تست نفوذ در حال تست گیری داخل شبکه یا به صورت whitebox هست و وقتی از ابزارهای خاص داخل شبکه استفاده میشود امکان اینکه خود ابزار backdoor باشد خیلی بالاست. بنابراین این نکته را باید مدنظر قرار دهیم که علاوه بر اینکه نیاز است تیم تست نفوذ از مهارت بالا و دانش کافی برخوردار باشند، لازم است بر طیف وسیعی از ابزارها نیز اشراف داشته باشند و بدانند آیا ابزارهایی که مورد استفاده قرار میدهند پیشامدی را برای شبکه ایجاد میکنند یا خیر؟
بنابراین عملیات و مسیر درستتر آن است که پیش از هر تست، تیم تست نفوذ یا Penetration tester هر ابزاری که میخواهد مورد استفاده قرار دهد را روی LAB خود مورد ارزیابی قرار دهد و از عواقب کار اطلاع را داشته باشد.
هنگامی که در حال Exploit هستیم این امکان وجود دارد که با مشکلاتی مانند این موارد که سرویس در شبکه مختل شود، وب سرور down شود یا وب اپلیکیشن ایراد پیدا کند و یک سرور در شبکه با اختلال مواجه شود برخورد کنیم. تمامی این موارد جزء عواقب استفاده از اکسلپویتها به شمار میآید که پیشتر به آنها اشاره کردهایم.
اما در اینجا لازم است یک نکته مهم را خاطر نشان کنیم، حتی اگر با مشکل هم مواجه شویم به عنوان یک Penetration Tester باید از دانش کافی روی تکنولوژیهای مختلف شبکه وب و … داشته باشیم تا بتوانیم سرویس را به حالت اولیه خود برگردانیم، این آرامش و داشتن اعتماد به نفس یک فاکتور بسیار مهم در شغل شما محسوب میشود زیرا باعث میشود در صورت پیش آمدن یک اتفاق بد، شما یک نقشه پشتیبان داشته باشید.
همچنین اگر سرویس حساسی مانند صرافی یا بانک و ..در حال تست شدن هستند باید بر روی یک Mirror آن تست انجام شود، زیرا اکسپلویت یا دستکاری در سرویسهای بلادرنگی مانند بانک و صرافی ممکن است موجب خسارتهای سنگین شود.
اکنون که متوجه نکات اولیه شدید به موضوع اصلی برمیگردیم.
ما در گام پیشین آسیب پذیری را کشف کردیم و اکنون زمان آن فرا رسیده است که ببینیم آیا میتوانیم آسیب پذیری مدنظرمان را اکسپلویت کنیم یا خیر؟
پاسخ این سوال به چند عامل دیگر بر میگردد. همان طور که میدانید آسیب پذیریها به چند دسته تقسیم میشوند.
critical
high
medium
low
اگر شما از اسکنرهای آسیب پذیری استفاده میکنید، به محض کشف آسیب پذیری، میتوانند میزان حساسیت را به شما گزارش کنند. برای قابل فهمتر شدن این موضوع به چند مثال مختلف اشاره خواهیم کرد.
آسیب پذیریcritical : در صورت کشف آسیب پذیری SQL injection بر روی وب، شما یک آسیب پذیری critical را کشف کردهاید چرا که با استفاده از قابلیت مشاهده دیتابیس، در صورتی که miss configuration وجود داشته باشد، امکان ریموت اکسس یا تغیر دیتا را خواهید داشت.
آسیب پذیری سطح High : این مورد زمانی وجود دارد که با قابلیت اجرای کد بر روی مرورگر یا امکان دزدیده شدن کوکی کاربر مانند XSS و همچنین با خواندن فایل کانفیگ از روی سایت LFI و خواندن منابع داخل سرور یا فرستادن درخواست توسط XXE روبرو هستیم.
آسیب پذیری Medium: اکسپلویت این نوع آسیب پذیری بسیار دشوار است زیرا در درجه اول نیاز به یک سری شرایط اولیه دارد. به عنوان مثال اگر SSL آسیب پذیر روی سرور استفاده شده باشد به ما اجازه sniff میدهد و ما باید در شبکه قرار بگیریم. همچنین اگر به ISP دسترسی داشته باشیم این نوع آسیب پذیریها اکسپلویت کردن بسیار سختی در پی دارند.
آسیب پذیری سطح LOW: این نوع آسیب پذیری معمولا در سطح information رخ میدهد. به عنوان مثال میتوان به قابلیت enumerate یوزرهای سایت یا ورژن سرویسهایی که روی سرور قرار دارند، اشاره کرد.
نکته : ما در سری مطالبی که در مورد مهندسی اجتماعی ارائه کردیم به توضیح روشهایی پرداختیم که مشخص میکرد ما نیازمند اکسپلویت کردن سرور سرویس اپلیکشن نیستیم و فقط آسیب پذیری انسانها مورد اکسپلویت قرار میگیرند. نتیجه این است که حتی اگر در شبکه سرور یا مجموعه شما هیچ آسیب پذیری شناخته شدهای وجود نداشته باشد ( بحث 0day مطرح نیست ) باز دلیل بر امن بودن شما نخواهد بود و سطح آگاهی امنیتی کاربران، کارمندان و مدیران تاثیر مستقیم روی امنیت شبکه دارد و در صورت اجرای سناریوی مهندسی اجتماعی هکر، آسیب پذیری به مراتب critical ارتقا پیدا کرده و وارد شبکه شما خواهد شد.
به طور کلی در مرحله اکسپلویت ما 2 سطح Critical و High را به دنبال اکسپلویت کردن بررسی میکنیم ولی نکته مهم این است که اکسپلویتها را باید به چه صورت بنویسیم یا پیدا کنیم؟
برای توسعه اکسپلویت بسته به نوع آسیب پذیری، شما باید شناخت و دانش ابتدایی نسبت به زبانهای اسکریپت نویسی داشته باشید.
به عنوان مثال اگر آسیب پذیری وب وجود دارد، شما میتوانید از زبان php python یا از زبانهایی که کتاب خانهها برای ارسال پکت به وب یا پویش وب را دارند استفاده کنید.
در سیستم عامل نیز بسته به نوع آسیب پذیری مانند Privilege escalation شما باید علاوه بر داشتن دانش درباره c++ از دانش سیستم عامل نیز بهرهمند باشید و بدانید که buffer overflow چیست و در چه شرایطی رخ داده است؟
و دیگر اینکه آدرس حافظه برای تزریق پیلود مورد نظر ما در سیستم عامل مختلف مانند ورژن ویندوز یا ورژن لینوکس به چه صورت هست؟
همچنین شما باید مکانیسمهای ابتدایی سیستم عامل را بایپس کنید تا بتوانید در صورت کشف یک سرریز بافر در سیستم عامل از آن برای بالا بردن سطح دسترسی یا privilege escalation استفاده نمایید.
پس مشخص شد که اکسپلویت نویسی خود نیازمند داشتن دانش کافی روی کشف آسیب پذیری، درک آسیب پذیری، دانش کافی برای سوء استفاده از آسیب پذیری، دانش کافی روی سیستم عامل برای دور زدن شرایط مختلف و همچنین نیازمند داشتن دانش کافی جهت دور زدن مکانیسمهای امنیتی مانند فایرول شبکه یا فایروال وب است و در ادامه نیز نیازمند دانش نوشتن ابزار را میطلبد.
به عنوان شخصی که تست نفوذ میکند باید حتما از دانش اولیه در این خصوص برخوردار باشید و در صورت کشف آسیب پذیری توسط اسکنر یا fuzzer باید بتوانید مطمئن شوید که آیا قادر به Exploit هستید یا خیر؟
زیرا زمانی که میخواهید به عنوان رهبر تیم تست نفوذ یا شخصی که تست نفوذ کرده به مدیر تست نفوذ یا کارفرما نتیجه کار خود را شرح دهید، باید یک POC یا proof of concept را از آسیب پذیری که کشف کردهاید به آنها نمایش بدهید. بنابراین استفاده از اکسپلویت یا دانش پیاده سازی آن بسیار برای شما حیاتی است.
همچنین به عنوان شخصی که چه کار امنیتی میکنید و یا چه تست نفوذ انجام میدهید و یا یک مجموعه را در دست دارید باید اخبار روز در خصوص امنیت را دنبال نمایی. زیرا هکرها هیچگاه منتظر نمیمانند تا مایکروسافت یا هر کمپانی دیگری یک پچ Patch امنیتی بدهند و بعد شروع به استفاده از اکسپلویتها کنند. زیرا فاصله بین منتشر شدن اکسپلویت یا خبر آسیب پذیری تا پچ شدن برای شرکت و کمپانیهای بزرگ زمان بسیار حساسی است که تیمهای Red Team وظیفه دارند تا خبرها را دنبال کرده و در صورت مشاهده آسیب پذیری آن را به Blue team یا Purple team و همچنین برای انتقال به Blue Team اقدام کنند.
اما در این بین تیم Blue team وظیفه دارد اگر Patch منتشر شده است، اقدامات سریعی را انجام دهد و اگر این اتفاق نیفتاده است یک mitigation را برای شبکه اتخاذ کند.
همچنین تیم میتواند با suspend کردن یک سرویس و Downgrade کردن ورژن سرویس یا محدود کردن به IP یا پشت فایروال بردن یک سرویس، این توانایی را داشته باشند تا در صورتی که اکسپلویت میشود تا حد زیادی خطر را کاهش دهند.
اخبارهای اکسپلویت را از کجا دنبال کنیم؟
https://thehackernews.com
gbhackers.com
0day.today
exploit-db.com
http://www.zone-h.org/archive/special=1
https://cve.mitre.org/
استفاده از بستر توییتر و مطالعه اخبار پیرامون امنیت به شما این کمک را خواهد کرد تا سریعتر بتوانید از اخبار هکها و یا انتشار اکسپلویتها مطلع شوید.
در کنار اطلاع از اخبار امنیت و دنبال کردن محققان امنیتی، استفاده از راهکار Breach Attack and simulation نیز توصیه میشود و مزیت آن نیازمند پیادهسازی حملات و اکسپلویت از جانب شما نیست.
همچنین منبع تمامی اخبار و اکسپلویتها در دارک وب موجود میباشد.
در ادامه به معرفی ابزارهای پرکاربرد در اکسپلویت اشاره خواهیم کرد.
این مورد فریم ورک بسیار قدرتمند در تست نفوذ برای اسکن پورت آسیب پذیری در پلتفورمهای وب شبکه IoT و غیره به شمار میآید که بسیار پرکاربرد بوده و قابل توسعه است. ضمن آن که قابلیت شخصی سازی را نیز در اختیار شما قرار میدهد.
این مورد نیز یک متا اسپلویت گرافیکی با قابلیت پیاده سازی حملات به صورت گرافیکی را دارد و برای پیاده سازی حملات به راحتی مورد استفاده قرار میگیرد.
این مورد نیز یک فریم ورک بسیار قدرتمند در تست نفوذ به شمار میآید که برای اسکن پورت آسیب پذیری در پلتفورمهای وب شبکه و … مورد استفاده قرار میگیرد. ضمن آن که نسخه رایگان ندارد و ورژن قدیمی آن که کرک شده است، قابل دسترسی میباشد.
فریم ورک بسیار قدرتمندی در تست نفوذ برای اسکن و اکسپلویت اتوماتیک به شمار میآید و نسخه مجانی ندارد.
تمامی اکسپلویتهایی که منتشر میشود به مجموعه اکسپلویتهای Exploitpack اضافه میشود و جهت تست نفوذ بسیار پرکاربرد میباشد.
ابزاری جهت کشف اکسپلویتهایی که در شبکه و تجهیزات وجود دارد و قابل ارائه به صورت سرویسهای ابری با پرداخت هزینه کمتر برای پیدا کردن آسیب پذیری در شبکه، یکی از روشهای محبوب برای افزایش امنیت شبکه میباشد.
Exploit KIT
شامل مجموعه ابزارها و اکسپلویتهای 0day میباشد که توسط یک هکر توسعه داده میشود و میتوانید آنها را از Dark web به صورت هفتگی اجاره کنید. اما اگر از چنین پنلهایی روی سیستم شخصی استفاده میکنید، بسیار خطرناک هستند و اعتماد به سالم بودن اکسپلویت بسیار سخت میباشد.
این مورد نیز جزء ابزاری جهت شناسایی CMS و شناسایی آسیب پذیری در CMS های معروفی مانند WordPress, drupal, opencard, joomla و … را ساپورت میکند.
ابزاری است جهت Exploit و Post Exploit در اندروید.
یک ابزار پرکاربرد جهت Exploit آسیب پذیری SQL injection در وب میباشد که با زبان پایتون توسعه داده شده است و قابلیت توسعه در پلاگینها Tamper برای دور زدن فایروالهای وب را به شما میدهد.
یک ابزار بسیار پرکاربرد جهت اسکن ( فازر) برای کشف آسیب پذیری xss میباشد و همچنین قابلیت استفاده از بایپسهای عمومی در آن تعبیه شده، طبق دیکشنری بایپسها را چک میکند.
یک ابزار بسیار قدرتمند جهت پیاده سازی سناریوهای مهندسی اجتماعی قابلیت hook ابزار پیاده سازی سناریوهای مختلف پاپ اپ جهت افزایش درصد موفقیت در مهندسی اجتماعی را به ما میدهد. همچنین قابلیت توسعه و تغییرات برای دور زدن آنتی ویروس برای کد JS hooker را نیز در اختیار ما قرار میدهد.
یک فریم ورک بسیار قدرتمند در اکسپلویت دستگاه IoT میباشد و همانند Metasploit قابل توسعه میباشد.
همچنین خیلی از framework ها و ابزارهای مختلف جهت اکسپلویت سیستم عاملها و برنامهها به کار گرفته میشوند. شما نیز میتوانید از Github برای پیدا کردن آنها نیز استفاده کنید. همچنین Tactic و technique and procedure نیز از سال 2013 توسط شرکت MITRE که مایتر تلفظ میشود راهاندازی شده است. تقریبا در حال حاضر 200 حمله در ماتریس مایتر دسته بندی شدهاند که منبع بسیار عالی برای اشخاصی که میخواهند تست نفوذ کنند یا در گروههای آفند و پدافند قرار دارند به شمار میآید. توسط این منبع است که شما میدانید چه حملاتی را باید پیاده سازی کنید و شبکه خود را نسبت به آن ارزیابی نمایید. برای مطالعات بیشتر و در اختیار داشتن منابع بیشتر نیز میتوانید از آموزشهای رایگان سایت ATTACKIQ نیز استفاده کنید.
بررسی روشهای امنیتی در این خصوص
در تمام شرایط سیستم عاملهای خود را آپدیت نگه دارید ( سرور، کلاینت، موبایل، embedded device )
سعی کنید تیم آفند و پدافند را در سازمان خود در نزدیکترین همکاری نگه دارید و از تیم purple برای هماهنگی بیشتر بین این دو تیم استفاده کنید.
برای ارتقا امنیت کسب و کار خود از باگ بانتی استفاده کنید.
اطلاع رسانی در تمام ردههای سازمانی به صورت مرتب انجام شود.
استفاده از SIEM, SPLUNK ,WAF , FIREWALL , EDR , … در صورتی سبب بهبود امنیت میشود که به درستی در شبکه قرار بگیرند و همچنین miss configuration نداشته باشند.
برای توسعه اکسپلویت نیز میتوانید از دورههای زیر استفاده نمایید.
استفاده از SIEM, SPLUNK ,WAF , FIREWALL , EDR , … در صورتی سبب بهبود امنیت می شود که به درستی در شبکه قرار بگیرند و همچنین miss configuration نداشته باشند.
برای توسعه اکسپلویت می توانید از دوره های
Offensive Security AWE (Advanced Windows exploitation)
SANS SANS SEC760: Advanced Exploit Development for Penetration Testers