رقابت با ترول، با چاشنی هکینگ

سلام

در این پست یک مثال کامل از حمله به برنامه های تحت وب، سرویس های FTP, SSH، بروت فورس، تغییر فایل های سیستم و ... را به صورت عملی مشاهده می کنید.

این پست نمونه ای از مسابقات CTF یا همان Capture The Flag است که می بایست فایل proof.txt موجود در root/ را به دست آورید. این رقابت توسط vulnhub طراحی شده که به شما یک ماشین مجازی در ویرچوال باکس می دهد (موجود در این لینک) و شما می بایست از راه دور به آن حمله کنید. هیچ گونه دسترسی فیزیکی ای مجاز نیست. سطح آن مبتدی بوده و بنابراین برای تمام علاقمندانی که می خواهند خود را به چالش بکشند، توصیه می شود.(سعی کنید قبل از خواندن ادامه ی پست خودتان این مسیر را طی کنید) عکس ها و سناریوی حمله را از این لینک برداشتم و کار ترجمه ی آن با خودم، یعنی تمدن بوده است. ممنون از رعایت کپی رایت :)

pic0

یک ماشین آسیب پذیر جالب به اسم ترول پیدا کردم که این ماشین با هکر، ترول می کند! ما این ماشین را در Virtual Box بوت کردیم و با Nmap عمل پویش و اسکن روی آن را انجام دادیم.

نتیجه ی اسکن: سه پورت FTP، SSH ، HTTP روی آن فعال بود. کار اسکن را با Nmap و آرگومان A- انجام دادیم و بنابراین جزئیات بیشتری از پورت های باز به دست آوردیم. همانگونه که در عکس زیر مشاهده می کنید، پورت ۲۱ مربوط به FTP این اجازه را می داد که به صورت ناشناس (Anonymous) و بدون پسورد به آن وصل شویم. همچنین فایل lol.pcap در آن وجود داشت. در پورت شماره ی ۸۰ مربوط به سرویس HTTP نیز یک دایرکتوری به نام secret بود.

pic1

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

pic 2

خوب... جالبه! بیایید فولدر secret را باز کنیم. شاید به دایرکتوری جالب و مفیدی رسیدیم. چی؟!! یک ترول دیگر.

pic3

بنابراین چیز مفیدی در برنامه ی وب پیدا نشد و به سراغ سرویس FTP رفتیم. از قبل می دانستیم که امکان لاگین کردن در حالت Anonymous وجود دارد و فایل lol.pcap قابل دسترسی است. پس بیایید این فایل را برداریم:

04

ما از دستور ls استفاده کردیم تا چک کنیم که آیا درون آن فایل دیگری وجود دارد و یا خیر و تنها به همان فایل رسیدیم:

pic 5

از دستور Get برای دانلود فایل استفاده کردیم.

pic 6

بعد از آن پکت ها را با استفاده از ابزار Wireshark ضبط و capture کردیم. سپس شروع به چک کردن تمام اتصالات TCP کردیم و متوجه فایلی به نام secret_stuff.txt شدیم که در آن جابه‌جا شده بود.

pic 7

انتقال فایل به درستی انجام شد و به معنای این بود که روی پروتکل FTP قرار دارد. بنابراین فیلتری را با استفاده از ftp-data و به منظور فیلتر کردن اتصالات اعمال کردیم. همان گونه که در زیر مشاهده می کنید، تنها سه اتصال پیدا شد:

pic 8

در یکی از اتصالات، پیام  “you almost found the sup3rs3cretdirlol” را پیدا کردیم. دایرکتوری که در آن به پیام اشاره شده بود.

pic 9

ما دایرکتوری را باز  و فایل دیگری به اسم roflmao را پیدا کردیم.

pic 10

این فایل را دانلود کردیم. بیایید این فایل را به منظور پیدا کردن یک ترول دیگر(!) چک کنیم.

فایل bin را اجرا کردیم و در آن “Find address 0x0856BF” وجود داشت. این آدرس را در کجا باید پیدا می کردیم؟

pic 11

ما این آدرس را در مرورگر وارد کردیم و یک دایرکتوری با دو زیردایرکتوری باز شد:

good_luck و  this_folder_contains_the _password.

pic 12

ابتدا فایل good_luck را باز کردیم و در آن فایل which_one_lol.txt file را پیدا کردیم. این فایل شامل یک سری نام کاربری بود که شاید مربوط به به SSH می شد.

pic 13

سپس دایرکتوری دوم را چک کردیم که مسلما pass.txt در آن وجود داشت.

pic 14

ما فایل پسورد را باز کردیم. رمز عبور (:_Good_job بود.

pic 15

خوب حالا چی؟ ما نام کاربری و رمز عبور را داشتیم. بنابراین بروت فورس را اجرا کردیم. برای این کار از ابزار Hydra استفاده کردیم. همان گونه که در زیر مشاهده می کنید، فایل user.txt را در Username List و (:_Good_job را در Password قرار دادیم.

pic 16

حمله را شروع کردیم اما نتوانستیم با آن پسورد لاگین کنیم. دنبال این بودیم که مشکل اعتبارسنجی را بفهمیم. بعد از گذشت مدتی متوجه شدیم که فولدری که شامل نام Pass.txt بوده یک فولدر حاوی رمز عبور بوده. بنابراین این بار مقدار Pass.txt را در فیلد Password از Hydra قرار دادیم و فهمیدیم که پسورد مقدار Pass.txt بوده است.

pic 17

حمله را شروع کردیم و بووم! به درستی لاگین کرد. نام کاربری overflow و رمز عبور Pass.txt بود.

pic 18

با موفقیت با SSH لاگین کردیم.

pic 19

کار بعدی ای که باید انجام می دادیم، پیدا کردن فایل ها با قابلیت نوشتن جهانی در سیستم بود. بنابراین از دستور زیر استفاده کردیم:

find / -perm -2 -type f 2>/dev/null

pic 20

فایل های زیادی پیدا شد. اما یکی از آن ها خارج از انتظار بود. یک فایل پایتون با مجوز نوشتن در آن بود. این فایل در محل lib/log/cleaner.py/ قرار داشت.

pic 21

فایل cleaner.py را باز کردیم.

ما تابع موجود در آن را با تابع خودمان عوض کردیم. این تغییرات شامل اضافه کردن این دو خط بود:

os.system(‘cp /bin/sh /tmp/sh’) 
os.system(‘chmod 4777 /tmp/sh’)

در مورد اول bin/sh را در tmp/sh کپی کردیم و در مورد دوم قابلیت اجرا (executable) را به آن اضافه کردیم.

pic 23

بعد از ذخیره سازی فایل پایتون، از نسشت SSH خارج شدیم و دوباره وارد سیستم شدیم. سپس دایرکتوری جاری را به tmp/sh/ تغییر دادیم و دستور whoami را به منظور هویت سنجی کاربر اجرا کردیم. خروجی root بود!

pic 24

حالا ما در دایرکتوری root/ قرار داشتیم و توانستیم فایل proof.txt را به دست آوریم. این به معنای پایان کار بود.

pic 25

کار ترول به پایان رسید!