احسان امجدی
کارشناس امنیت اطلاعات و ارتباطات

آموزش متااسپلویت (Metasploit) به زبان ساده + Remote Shell ویندوز

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

قبلا در وب سایت توسینسو با مفهوم متااسپلویت و ماهیت فریمورک Metasploit صحبت کردیم. در ادامه تصمیم داریم تا به ادامه بحث گذشته بپردازیم و با جزئیات بیشتری به ابعاد پلت فرم Metasploit و استفاده از Exploit ها بپردازیم.

بدون شک یادگیری اساسی و اصولی متااسپلویت (Metasploit) با استفاده از مقاله امکانپذیر نیست و شما یا باید کتاب آن را به خوبی مطالعه کنید و یا در دوره آموزشی متاسپلویت حرفه ای شرکت کنید ، پیشنهاد می کنم حتی با وجود مطالعه این مقاله ، حتما برای یادگیری تخصصی Metasploit به لینک های زیر نیز مراجعه کنید :

انتخاب Exploit

برای مشاهده لیست Exploit ها و استفاده از آن ها فقط کافیست که در کنسول msf  فرمان "show exploit" را تایپ نمایید:

وب سایت توسینسو

اما استفاده از دستور "search" برای پیدا کردن آن چیزی که بدنبالش هستید، کار شما را راحت تر خواهد کرد. فقط کافیست که عبارت "search" را تایپ کرده اطلاعاتی که را بدنبالش هستید، در ادامه تایپ کنید. برخی اوقات این روش باعث میشود خیلی سریهتر exploit ای را که میخواهید پیدا کنید.

نکته: اگر شما با خطای "[!] database not connected or cache not build, using slow search" روبرو شدید، کاری که باید انجام دهید اینست که PostSQL Database قبل از اجرای کنسول msf، اجرا کنید. برای اجرای Database در محیط دستوری ترمینال، عبارات زیر را تایپ کنید:

Service postgresql start
Service metasploit start
Msfconsole

خوب گفتیم که با تایپ عبارت "search" و در ادامه، اطلاعاتی که را بدنبالش هستید، میتوانید Exp;loit مورد نظر خود را جستجو کنید. Metasploit این امکان را بشما میدهد تا از راه های مختلفی، exploit مورد نظر خود را جستجو کنید؛ توسط پلت فرم، توسط (CVE ( Common Vulnerabilities and Exposures و اعداد bugtrack. برای مشاهده تمام سوئیچ های ممکن دستور "search"، عبارت "help search" را تایپ کنید:

وب سایت توسینسو

برای جستجو بر اساس نام، کافیست عبارت “search" و در ادامه نامی که مورد نظرتان است را تایپ کنید. برای مثال بررسی میکنیم که آیا metasploit، Exploit ای در رابطه با آسیب پذیری امنیتی مایکروسافت " MS13-069" دارد یا خیر:

وب سایت توسینسو

برای مشاهده شماره CVE ID خاصی داریم:

وب سایت توسینسو

برای مشاهده تمام CVE ID های امسال (لیست کوتاه شده) داریم:

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

برای مشاهده اطلاعات Exploit از برنامه خاصی، فقط از نام آن استفاده میکنیم:

وب سایت توسینسو

هنگامی که بخواهید در رابطه با Exploit ای، اطلاعات بیشتری را کسب کنید، باید با استفاده از دستور "info"، در ادامه نام کامل مسیر آن را کپی/پیست کنیم:

وب سایت توسینسو

این دستور اطلاعات کامل را در رابطه با آسیب پذیری یاد شده نمایش میدهد:

وب سایت توسینسو

در اطلاعات داده شده، نام نویسنده، معرفی مختصر(بطور پیش فرض نشان داده نمیشود و برای آن باید سوئیچ خاصی قائل شد)، توضیحاتی در رابطه با Exploit و وب سایت های مرجع برای این exploit نشان داده میشود. همانطور که در شکل بالا دیده میشود، شما میتوانید یک جفت سوئیچ (Basic Option) برای این Exploit قائل شوید که در بخش بعد در رابطه با آن صحبت خواهیم کرد.

اما قبل از آن که بخواهیم در رابطه با آپشن های Exploit مان صحبت کنیم، باید بتوانیم از خود آن استفاده لازم را ببریم. هنگامی که ما میدانیم که Exploit ای را در اختیار داریم، میتوانیم خیلی ساده با استفاده از دستور "Use" بهمراه نام Exploit، آن را اجرایی کنیم. مجددا مسیر و نام Exploit را کپی/پیست میکنیم:

وب سایت توسینسو

بسیارخوب؛ ما اکنون در حال استفاده از Exploit مان هستیم، اما آپشن های آن را چگونه اجرایی کنیم؟ در بخش بعد مفصل در اینباره صحبت میکنیم.

گرفتن Remote shell

در دو قسمت پیش نگاه مختصری بر یکی از Exploit های ساده در لینوکس کالی داشتیم، اما در این قسمت قصد داریم تا با کمک دو قسمت گذشته، همان کارها را در مورد Exploit 08-067 که یکی از محبوبترین Exploit های ویندوز است، انجام دهیم. پس بدون مقدمه اضافی، بسراغ مراحل انجام کار میرویم:

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


آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

2. حالا دستور "show options" را تایپ کنید:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

بخاطر داشته باشید که بصورت پیش فرض، مقصد بر روی "Automatic targeting" تنظیم شده است. در این حالت نتایج با همدیگر ترکیب میشوند ولی برخی اوقات لازم است برای کارکرد بهتر Exploit، هدف را دقیقا مشخص کرد.

3. اگر شما میخواهید هدف خاصی را برای کار خود انتخاب کنید، دستور "Show targets" را تایپ کنید:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

4. سپس با وارد کردن دستور "<set target <ID" هدف واقعی را مشخص کنید.

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

5. مجددا دستور "Show options" را وارد کنید:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

هرچند که در اکثر موارد نیازی به استفاده از Advanced option در Exploitها نیست اما در صورت تمایل میتوانید از آن ها نیز استفاده کنید. برای این کار فقط کافیست دستور "show advanced" را تایپ کنید:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

تا اینجا توانستیم یک Exploit را انتخاب کنیم و پارامترهای انتخابی آن را تنظیم کنیم. در بسیاری از Exploit ها باید یک Payload نیز تنظیم شود.

 برداشتن payload

تا حالا به این موضوع فکر کرده اید که اگر بتوانید به یک سیستم نفوذ کنید ولی نتوانید با آن کاری انجام دهید، چقدر خنده دار خواهد بود؟ payload ها بشما این امکان را میدهند تا بتوانید کاری موثر بر روی سیستم مورد نفوذ قرار گرفته انجام بدهید. Metasploit بهمراه تعداد زیادی از payload های متفاوت ارائه شده است که میتوانید از هرکدام از آن ها استفاده کنید. برای دیدن آن ها فقط کافیست دستور"show payloads" را تایپ کنید.

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

بجای این دستور میتوانید از فرمان "set payload" بهمراه دوباره فشردن کلید tab استفاده کنید. در این صورت metasploit از شما سوال میپرسد که آیا میخواهید لیست Payload های موجود را مشاهده کنید؟ اکثر payload ها با فرمتی از "Operating System/Shell Type" قرار داده شده اند که در زیر میتوانید مشاهده کنید:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

با آسودگی تمام سیستم عامل صحیح سیستم مقصد را انتخاب کرده و سپس Payload را که میخواهید بر دارید. Shell ها محبوبترین نوع payload ها هستند که اکثرا مورد استفاده قرار میگیرند. همانطور که قبلا نیز گفته شد، Shell ها بر دو نوع regular remote shell و Meterpreter shell هستند.

اگر ما برای اجرای از راه دور فرمان ها فقط یک remote terminal shell را بخواهیم باید از shell استاندارد استفاده کنیم. اما اگر بخواهیم قابلیت دستکاری session و اجرای دستورات توسعه یافته به حمله اضافه شود، آنوقت باید از Meterpreter shell استفاده کنیم(در بخش بعد بطور مفصل درباره آن صحبت خواهیم کرد).

راه های مختلفی برای ارتباط برقرار کردن payload ها با سیستم مورد حمله وجود دارد. در اینجا ما از Shell های reverse-tcp استفاده میکنیم چرا که هنگامی که بر روی سیستم هدف اجرا میشوند، به سیستم دستور میدهند تا به سیستم کالی ارتباط برقرار کند. بزرگترین مزیت این روش آنست که سیستم قربانی ارتباط را با کالی شروع میکند

و این باعث میشود تا فایروال جلوی ارتباط را نگیرد در حالی که اگر ارتباط از طرف بیرون شبکه برقرار شده باشد، به احتمال زیاد فایروال جلوی آن را بگیرد.حالا که مفهوم payload را متوجه شدیم، میخواهیم از آن استفاده کنیم. این کار با استفاده از دستور "set" انجام میشود.

6. در مورد مثالمان از Meterpreter shell برای یک سیستم با پلت فرم ویندوز استفاده میکنیم و آن را مجبور خواهیم کرد تا از طریق پروتکل TCP با ما ارتباط برقرار کند:

آموزش متااسپلویت (Metasploit) قسمت 2 : Remote shell از ویندوز XP

خوب؛ حالا payload ما تنظیم شده است. فقط کافیست تا آپشن های (گزینه های اختیاری) آن را نیز تنظیم کنیم که در قسمت بعد در رابطه با آن صحبت خواهیم کرد.در قسمت پیش در رابطه با exploit ها و استفاده از Payload صحبت کردیم.

در این نکته به عنوان بخش دوم از آموزش گرفتن Remote shell از ویندوز XP قصد داریم تا ضمن تکمیل صحبت ها و جمع کردن مطلب، در رابطه با تنظیم گزینه های اختیاری (Options) در Payload انتخاب شده در مرحله پیش صحبت کنیم.

قرار دادن آپشن های payload

Payload ها آپشن هایی دارند که درست به همان طریقی که آپشن های Exploit را تنظیم میکردیم، قرار داده میشوند. معمولا این کار شامل تنظیم آدرس IP و پورت برای Exploit به منظور برقراری ارتباط با هدف است. این کار نیز با دستور "set" انجام میپذیرد. با توجه به مرحله بندی در قسمت پیشین، آن را در اینجا ادامه میدهیم:

7. دستور "show options" را برای مشاهده تنظیماتی که Payload به آن ها احتیاج دارد، وارد میکنیم:


آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

همانطور که مشاهده میکنید، با اجرای این دستور، بخش جدیدی با نام "payload options" به نتیجه اضافه شده است. در اینجا ما سه گزینه برای انتخاب و قرار دادن در کنار Exploit در اختیار داریم؛ "EXITFUNS"، "LHOST" و "LPORT". میگذاریم گزینه های EXITFUNS و LPORT در حالت پیش فرضشان باقی بمانند.

8. LHOST را تنظیم میکنیم. بعبارتی آدرس IP سیستم کالی خودمان را در دستور قرار میدهیم:


آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

حالا آپشن Payload ما نیز تنظیم شده است.حال میتوانیم به بالا برویم و Exploit خودمان را اجرا کنیم.

اجرای Exploit

بهتر است قبل از اجرای Exploit، با اجرای دستور "show options" برای آخرین بار از صحت همه تنظیمات انجام شده مطمئن شویم:

آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

اگر به شکل دقت کرده باشید متوجه خواهید شد که چیزی را فراموش کردیم که انجام دهیم. بله ما آدرس IP سیستم هدف (RHOST) را هنوز وارد نکرده ایم! در مثال پیش در رابطه با Unreal Exploit این کار بدرستی انجام شده بود اما در مثال جدید و هنگامی که Exploit مان را عوض کردیم، یادمان رفت که مجددا آدرس IP سیستم هدف را ارزش دهی کنیم. هنگامی که شما همزمان با Exploit های مختلف کار میکنید یا بطور همزمان به سیستم های مختلفی حمله کرده اید، بوجود آمدن این اشتباهات امری دور ذهن نیست. بنابراین دوباره چک کردن تنظیمات به نظر کاری عاقلانه میآید.

9. آپشن RHOST را با تایپ عبارت زیر تنظیم میکنیم:



آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

مجددا برای آخرین بار آپشن ها را چک میکنیم؛ همه چیز به نظر مرتب میآید:

آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

همانطور که میبینید، Payload ما انتخاب شده است و تمام آپشن های مورد نیاز نیز در جای خودشان ارزش دهی شده اند.با خیال راحت میتوانیم exploit را اجرا کنیم:

10. برای این کار به سادگی هر چه تمام تر دستور"Exploit" را وارد میکنیم:


آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

Exploit ما اجرا شد و در صورتی که اجرای payload موفقیت آمیز باشد و صد البته exploit کار کند، ارتباط ریموت ما برقرار شده است.

برقراری ارتباط با Remote Session

هنگامی که ما یک exploit موفقیت آمیز را داشته باشیم، قادر خواهیم بود تا تمام session های ایجاد شده در سیستم هدف را مشاهده کنیم. برای بررسی این که چه Session هایی ایجاد شده اند، دستور "sessions" را تایپ کنید. هر Session ای که ایجاد شده باشد، به همراه آدرس IP، نام کامپیوتر و اکانت سیستم هدف، نشان داده میشود:

آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

حالا میتوانیم بصورت تعاملی به session مورد نظر ارتباط برقرار کنیم. برای این منظور دستور "<#sessions –i <ID" ر به همان طریقی که در انتهای شکل بالا نمایش داده شده است، وارد میکنیم. هنگامی که به session ارتباط برقرار کردیم، باید سعی شما بر این باشد تا بتوانید در محیط دستوری Meterpreter اعمال تغیرات کنید.

آموزش متااسپلویت (Metasploit) قسمت 3 : Remote shell از ویندوز XP

همانطور که میدانید در این محیط دست شما برای انجام تغیرات بر روی سیستم باز تر است. در بخش بعد بطور مفصل در رابطه با Meterpreter shell صحبت خواهیم کرد. اما برای حسن ختام این آموزش و بررسی صحت انجام کار، فرمان "shell" را تایپ کنید؛ در این صورت مشاهده خواهید کرد که شما بر روی ویندوز هدف یک ارتباط Remote shell برقرار کرده اید.


احسان امجدی
احسان امجدی

کارشناس امنیت اطلاعات و ارتباطات

احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...

14 اسفند 1393 این مطلب را ارسال کرده

نظرات