بوت تو روت ۱ - حل ماشین Empire: Breakout

شنبه, ۷ خرداد ۱۴۰۱، ۱۲:۰۰ ب.ظ

خب بالاخره امتحان شیمی امروز هم تموم شد و میریم برا اولین بوت2روت .

صفحه دانلود این ماشین :‌ https://www.vulnhub.com/entry/empire-breakout,751/

سطح این ماشین رو تو سایتش نوشته بود easy ولی خدایی برای من سخت بود چون مبتدی ام و برای حلش از راه حل های روی اینترنت کمک گرفتم که در آخر لینکشون رو میزارم .

بریم سراغ کار . با کالی لینوکس قراره چالش رو حل کنیم و روی Virtual box هم ماشین مجازی چالش رو بالا آوردیم :

 

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

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

همین الان به کیس یا لپ تاپتون نگاه کنید . یه سری پورت سخت افزاری روش میبینید . پورت یعنی درگاه . مثل پورت USB پورت HDMI و ... اینا پورت های سخت افزاری هستند که مثل یه درگاهی هستند که وسایل دیگه رو به کامپیوترتون وصل میکنید . این وسایل از طریق همین درگاه با سیستم شما ارتباط میگیرن . کامپیوترا یه جور پورت دیگه هم دارن که پورت های فیزیکی و سخت افزاری نیستن بلکه منطقی و به صورت نرم افزاری هستند . یک کامپیوتر 65535 تا پورت منطقی داره . هر کدوم از این پورت ها به یک سرویس خاصی تو سیستم وصله هر سرویسی هم یه خدمات خاصی ارایه میده . مثلا سرویس http که خیلی هم معروفه تو وب یک پروتکلی هستش برای انتقال اطلاعات بین کلاینت و سرور که توی فضای اینترنت کد صفحات html از طریق همین پروتکل برای مرورگر کاربر ارسال میشه (از سمت سرور)‌. خب سرویس http روی پورت شماره ۸۰ کار میکنه به صورت پیشفرض . یعنی ما اگه میخوایم یک خدماتی از سرویس http یک سرور بگیریم بنابراین باید به پورت ۸۰ اون سرور وصل بشیم چون http روی این پورت خدمات میده . مثل این میمونه پورت ۸۰ اون سروره درگاهی هستش برای ارتباط با سرویس http که روی سرور نصب شده .

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

 

یکی از معروف ترین تکنیک های اسکن پورت های باز روش Syn Stealth هست . نمیدونم با دست دهی سه مرحله ای پروتکل TCP یا همون Three way handshaking آشنا هستید یانه . ولی به طور خلاصه بگم اگه یه کامپیوتری بخواد از طریق ارتباط TCP وصل بشه به یه کامپیوتر دیگه ، طی سه مرحله این ارتباطشون برقرار میشه :

 

فرض کنید اون کامپیوتر سمت چپ که کاربر هستش میخواد وصل بشه به یک پورت خاصی روی کامپیوتر سمت راست که سرور هست . این سه مرحله انجام میشه :

۱- کاربر یک بسته Syn میفرسته (میگه سلام)

۲ - سرور اگه اون پورتش باز باشه و ارتباط بتونه برقرار باشه ، یک بسته Syn / Ack میفرسته (میگه علیک سلام)

۳ - بعد دیگه اوکی شده ارتباط . برا تایید پیامی که از سمت سرور اومد کامپیوتر کاربر هم یه Ack در مرحله ۳ بهش میده و به خوبی و خوشی ارتباط میگیرن باهم .

 

حالا این پورته باز بود . برا همین تونستن وصل بشن . اگه اون پورت مورد نظر بسته باشه همین که کاربر با فرستادن بسته syn به سرور درخواست ارتباطشو میده ، سرور دیگه بهش نمیگه علیک سلام . یه بسته RST براش میفرسته (یعنی برو در خونه خودتون بازی کن بچه) . این یعنی پورت بستس .

ما اینجوری میتونیم بفهمیم کدوم پورتا روی سیستم هدف بازه کدوم بسته . کافیه به ازای هر کدوم از پورت ها ، یه بسته syn بفرستیم به اون پورت . اگه syn/ack اومد یعنی بازه . اگه rst اومد یعنی بستس .

 

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

 

hossein@sheller:~$ nmap -sS 192.168.1.104

 

سوییچ sS- مشخص کننده نوع اسکن syn stealth که توضیح دادیم هستش و اون آی پی جلوش هم میگه رو کدوم آی پی اسکن انجام بده . نهایتا میبینید که اسکن انجام شده و پورت های 80 ، 139 ، 445 ، 10000 و 20000 باز هستند .

پورت ۸۰ جالبه . همینطور که میدونید پورت ۸۰ مربوط به پروتکل http هستش که وب سرور ها ازش استفاده میکنند . پس احتمالا این ماشین یه وب سرور http اجرا کرده . بیاید با مرورگر بهش وصل بشیم ببینید چه خبره :

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

بیاید یکم تو مرحله اسکن کردن پورت ها بیشتر پیش بریم ببینید چیز جالب تری فعلا پیدا میکنیم یا نه . ابزار nmap یه قابلیت خیلی خوب دیگه هم داره و اونم اینه که علاوه بر شناسایی پورت های باز میتونه حدس بزنه چه سرویسی و با چه ورژنی روی اون پورت داره اجرا میشه . این تشخیص رو فک کنم با تکنیکی به اسم banner grabbing انجام میدن که میتونید روش تحقیق کنید. nmap با سوییچ sV- اینکارو میکنه :

دقت کنید الان ستون SERVICE  و VERSION داخل نتیجه اسکن هستند که اطلاعات خیلی مفصلی راجع به همون پورت ها به ما دادن .

نکته جالبو دیدید ؟‌ روی پورت های ۲۰۰۰۰ و ۱۰۰۰۰ هم سرویس HTTP داره اجرا میشه !!

بنابراین احتمالا به اون پورت ها هم میتونید با مرورگرمون وصل بشیم ببینیم با چی رو به رو میشیم . برای اینکار آدرس آی پی ماشین رو توی مرورگرمون مینویسیم و با دو نقطه جلوش پورت اتصال رو مشخص میکنیم . مثلا http://192.168.1.104:20000 این یعنی میخوایم کانکشن http بزنیم به این آی پی روی پورت ۲۰۰۰۰ . مرورگر اگه اون دو نقطه آخرش رو نزارید و پورت رو مشخص نکنید خودش پیشفرض برای http پورت ۸۰ رو در نظر میگیره که پیشفرضشه .

به به یه صفحه لاگین . همین الان بهتون بگم فکر بروت فورس و کرک و اینا رو از ذهنتون بیرون کنید . تست کردم متاسفانه به ازای هر چندتا تست غلظ پسوورد آی پی مونو بلاک میکنه بیچاره میشیم .

فعلا تا همینجا اینو پیدا کردیم خودش خیلی پیشرفته . نگهش میداریم بعدا به دردمون میخوره . خب اطلاعات بیشتری برای لاگین نیاز داریم . چیکار کنیم ؟

 

متوجه شدیم که اگه داخل صفحه قبلی (یعنی صفحه پیشفرض apache) یک inspect element میگرفتیم یک کامنت مرموز داخلش بود . ببینیم :

کامنت سبز رنگ اون پایین توی سورس رو ببین ...

don't worry no one will get here, it's safe to share with you my access. Its encrypted :)

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.

 

خب ظاهرا چیز به درد بخوری رو بهمون گفته ولی متاسفانه ظاهرا به صورت رمزی نوشته شده . ایده ای ندارید این چه الگوریتمیه و باید چیکارش کرد ؟‌

فقط کاراکتر های ><+-[] و . داخلشه . بیاید تو گوگل سرچ کنیم متنشو ببینیم به چیزی میرسیم یا نه :

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

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

.2uqPEfj3D<P'a-3

 

این احتمالا یه پسوورده . یه پسوورد برای لاگین به همون صفحه ای که قبلتر پیدا کردیم . تبریک الان یه پسوورد داریم . اما ... یوزرنیم هم نیاز داریم . با یوزرنیم های معروف مثل admin , root , administrator هم تست کردم هیچکدومش نشد . پس باید یکم تو اسکنینگ عمیق تر بشیم تا بتونیم یه یوزرنیم بدست بیاریم از یه جا .

اگه یادتون باشه پورت ۴۴۵ و ۱۳۹ هم باز بودن که مربوط به پروتکل smb هستند خود nmap هم داخل اسکن دومیه گفته بهمون (Samba همون سرور پروتکل smb هستش . خیلی خلاصه بخوام بگم کار پروتکل smb چیه ، در واقع smb یه پروتکلی هستش برای به اشتراک گذاشتن فایل ها و منابع سخت افزاری مثل پرینتر در شبکه .این پروتکل مال مایکروسافته و تو ویندوز ها کاربرد داشت و داره ولی بعدا برای لینوکس ها هم اومد و الان داخل سیستم های لینوکسی هم استفاده میشه . برای اطلاعات بیشتر به پی وی گوگل مراجعه شود (NaCl) .

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

hossein@sheller:~$ enum4linux -a 192.168.1.104

سوییچ a- یعنی هر اسکنی که بلدی رو کن . این ابزار چیزای مختلفی رو اسکن میکنه . a- یعنی all همه چیو بزن اسکن کن هرچی خلاصه میشه درآورد از smb سیستم هدف درار برامون . 

نتیجه خیلی درازی میده ولی یه بخش نتیجش خیلی جذابه :

 

دیدید ؟‌ یه یوزرنیم به نام cyber برامون پیدا کرد . بریم این یوزرنیم رو با اون پسووردی که قبلا به دست آوردیم تست کنیم تو اون صفحه لاگینه .

خب الان یعنی مثلا من نمیدونستم جوابش چی میشه و تستش کردم . واای کار داد .

بله وارد شد :

میبینید که وارد پنل مدیریتی شدیم . حتی این پنل یه دسترسی خط فرمان هم به سرور بهمون میده . کافیه اون دکمه خط فرمان (عکس خط فرمانه)‌ رو از پایین منو انتخاب کنیم :

اینم خط فرمان .

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

 

فعلا تو این پست بیشتر کار رو رفتیم و دسترسی اولیه رو گرفتیم . تو قسمت دوم این پست ادامه میدیم و میرسیم به روت . خودتون اگه ماشینو دارید ادامشو سعی کنید برید .

 

 برا امتحان سلامت بهداشت من دعا نکنید راضی نیستم . لینک walkthrough کامل ماشین : https://resources.infosecinstitute.com/topic/empire-breakout-vulnhub-ctf-walkthrough/

فعلا خداحافظ

موافقین ۱ مخالفین ۰

چ جالب

منتظر بعدیشم هستم

مرسی .
خیلی زود
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">