در این پست آموزشی از وبسایت امنیت اینترنت کنشتک یکی از CTF ها به نام Bob: 1.0.1 را با هم حل میکنیم.
اول از همه چیز به این مهم بپردازیم که CTF چیست؟
CTF کوتاه شده Capture The Flag به معنی پرچم را پیدا کن و یک نوع مسابقه امنیت اینترنت است. سه نوع رایج این مسابقات عبارتاند از : Jeopardy, Attack-Defence و mixed که در سطحهای مختلفی برگزار میشود. علاقمندان امنیت سایبری میتوانند در این مسابقات بصورت انفرادی یا گروهی شرکت کنند تا با مهارتهای خود بتوانند به پرچمی که سازنده یا سازندگان CTF مخفی کردهاند دست پیدا کنند. خیلی ساده میتوان این مسابقه را به یک معما تشبیه کرد و باید پاسخ که در اینجا پرچم است را پیدا کنید، و برای پیدا کردن پرچم به دانش امنیت سایبری نیاز خواهید داشت.
اگر علاقمند هستید که خودتان هم مراحل زیر را تست کنید، میتوانید ماشین مجازی bob را از آدرس https://www.vulnhub.com/entry/bob-101,226/ دانلود و روی نرمافزار ماشین مجازی سیستمتان نصب کنید. مطمئنا میدانید که برای حل CTF نیاز دارید یک ماشین دیگر مانند لینوکس (کالی گزینه خوبی است) یا ویندوز داشته باشید و این دو ماشین باید در یک شبکه باشند. بهتر است یک ماشین مجازی دیگر روی نرمافزارتان نصب کنید، بدین ترتیب دو سیستم عامل روی نرمافزار ماشین مجازی خواهید داشت، که بعنوان آزمایشگاهتان میتوانید از آن استفاده کنید.
برای حل این CTF از این به بعد تمام کار ما روی ماشین مجازی کالی خواهد بود. در این تمرین ما از دستورات خط فرمان لینوکس بسیار استفاده کردیم.
برای ابتدا ما باید شروع به گردآوری اطلاعات کنیم. در قدم اول نیاز داریم که IP ماشین Bob را داشته باشیم. ابزارهای فراوانی برای اسکن IP در شبکه وجود دارند.
با استفاده از دستور ifconfig در کالی آدرس ماشین فعلی را میگیریم تا محدوده مورد جستجو را مشخص کنیم. سپس از دستور nmap به شکل زیر استفاده میکنیم:
nmap -sP 192.168.1.*
همچنین میتوانید از دستور netdiscover نیز استفاده کنید.
netdiscover
نتیجه : 192.168.122.16
بسیار عالی اکنون IP را در مرورگر کالی وارد میکنیم و باید این صفحه را ببینیم:
اکنون با دستور nmap -A 192.168.122.16 شروع به اسکن سرویسهای باز و پیمایش فایل روی ماشین Bob میکنیم. نتیجه :
با توجه به نتایج بالا میدانیم که سرویس روی درگاه 80 است و فایل robot.txt را پیدا کرده که شامل login.php, /dev_shell.php /lat_memo.html, /passwords.html میشود. توجه کنید که ما با وارد کردن IP ماشین Bob و دیدن وبسایت روی مرورگر همان اول کار متوجه شدیم که درگاه ۸۰ باز است.
توجه ما الان بیشتر روی ۴ فایل مشخص شده در robots.txt است. بعد از باز کردن هم ۴ فایل روی مرورگر، فایل /dev_shell.php توجهامان را جلب میکند. بنظر میرسد میتوانیم با دستور وارد کردن به نتایج خوبی برسیم. پس با سادهترین دستور یعنی ls شروع میکنیم تا ببینیم چه نتیجهای برمیگردد:
بسیار خب هیچی، بعد از وارد کردن دستور pwd هم همین نتیجه بالا را گرفتم. سپس به سراغ راه دیگری رفته و اینبار دستور ls; را تست کردم و نتیجه این شد :
بسیار خب، این هم نتیجه نداد، پس باید بیشتر تلاش کنیم، دستورات و روشهای بیشتری را امتحان میکنیم. برای تست دستور cd خالی را وارد کردیم و نتیجه این بار امیدوار کننده بود:
بله هیچ نتیجهای نداریم، و همین نسبت به نتایج قبلی امیدوار کنندهتر است. این نتیجه یعنی میتوانم روی همین دستور کار کنیم. در ادامه همین دستور از پایپ استفاده میکنیم. دستور این مرحله : cd | ls و نتیجه :
بسیار عالی است، فایل خیلی خوبی را پیدا کردیم : dev_shell.php.bak اما عجله نمیکنیم و سعی میکنیم بیشتر روی cd | کار کنیم. اینبار دستور cd | ls /home رو تست میکنیم و نتیجه:
عالی نیست؟ پس ۴ کاربر با نامهای کاربری bob، elliot، jc و seb وجود دارند. خب چرا نگاهی به فایل passwd نیندازیم؟ میخواهیم دستور cd | cat /etc/passwd را امتحان کنیم:
بسیار خب، چیز خاصی دستگیرمان نشد، الان برگردیم یک مرحله عقب و داخل پوشههای کاربران را بگردیم. در این مرحله از هر حرکت و پیمایش در پوشهها تصویر قرار نمیدهیم. دستور این مرحله cd | ls /home/bob است و سپس همین دستور را برای کاربران دیگر هم امتحان میکنیم و با دستورات cd و ls و ls -la داخل پوشه ها حرکت میکنیم تا فایل مهمی پیدا کنیم.
بعد از تست هر کدام از پوشههای کاربران به فایل theadminisdumb.txt رسیدیم آن را با cat میخوانیم، دستور زیر را نگاه کنید:
cd | cat /home/elliot/theadminisdumb.txt
و نتیجه:
بسیار عالی اکنون رمزعبور یکی از کاربرها را بدست آوردیم، پس باید برای هر کدام جداگانه تست کنیم: دستور این مرحله :
ssh [email protected]
با دستور بالا و نتیجهای که گرفتیم، متوجه شدیم که درگاه پیشفرض ssh را از ۲۲ تغییر دادهاند. در این مواقع یک راه پیمایش درگاه با استفاده از nmap است، اما وقتی مسیر dev_shell.php را داریم و دستوراتمان نتیجه میدهد چرا راه را طولانی کنیم؟ میدانیم که تنظیمات سرویس ssh در مسیر /etc/ssh/sshd_config است، تنها کاری که باید انجام دهیم اجرای دستور زیر است:
cd | cat /etc/ssh/sshd_config
با خواندن فایل فهمیدیم که درگاه ssh به 25468 تغییر پیدا کرده است. بنابراین دستور زیر را اینبار امتحان میکنیم:
ssh [email protected] -p 25468
خب همانطور که در تصویر بالا مشخص است، با نام کاربری bob و رمزعبور Qwerty نتوانستیم وارد سرور شویم. کاربرهای دیگر را امتحان میکنیم. تست روی کاربر jc جواب داد و توانستیم وارد سرور شویم:
بسیار خب وارد شدیم. هدف ما هک کردن حساب bob است، و تا اینجای کار خوب پیش آمدیم. ما با استفاده از ls و سپس cd پوشههای این کاربر را جستجو کردیم و به فایل خاصی نرسیدیم. سرانجام با استفاده از دستور cd /home و سپس ls شروع به جستجو در پوشهها و فایلهای کاربر bob کردیم و فایلهای خوبی پیدا شد :
توجه کنید ابتدا پوشه desktop و سپس بقیه را بررسی کردیم و فایل خاصی در آنها پیدا نکردم، از تمام مراحل تصویر قرار نمیدهیم که بیاندازه شلوغ نشود. شما حتما داخل تمام پوشه ها را نگاه کنید.
اکنون دو فایل به نامهای login.txt.gpg و staff.txt داریم و یک پوشه Secret. با دستور زیر سعی میکنیم فایل login.txt.gpg را باز کنیم.
gpg -d login.txt.gpg
اکنون Passphrase میخواهد که نداریم:
به سراغ دو یافته دیگر میرویم. با دستور زیر فایل staff را میخوانیم:
cat staff.txt
اما اطلاعات مهمی نصیبمان نمیشود. پس با دستور cd وارد پوشه Secret میشویم و داخل این پوشه را پوشه به پوشه بررسی ميکنیم (با دستورهای cd و سپس ls) تا به فایل notes.sh میرسیم. تصویر زیر را ملاحظه کنید:
بظاهر کلید اینجا مخفی است، از کجا متوجه شدیم؟ چون فایلها و پوشهها را بررسی کردیم و در نهایت به اینجا رسیدیم. به نشانهها دقت میکنیم و حدس اول این است که اولین حرف هر جمله را کنار هم بگذاریم HARPOCRATES. این کلمه عبور را برای فایل login.txt.gpg امتحان میکنیم:
فایل با موفقیت رمزگشایی شد، نام کاربری bob و رمزعبور b0bcat_. با دستور زیر ادامه میدهیم:
su bob
رمزعبور را وارد میکنیم و با موفقیت با نام کاربری bob وارد سیستم میشویم. وارد home کاربر میشویم و ls میگیریم. سپس وارد پوشهها شده و آنها را برای پیدا کردن پرچم یا flag جستجو ميکنیم. اما متاسفانه پرچم را پیدا نکردیم. بعد از کمی جستجو به دستور sudo -l میرسیم که سطح دسترسیهای bob را بررسی میکنیم. با رمزعبور bob میتوانیم با root وارد شویم.
کافی است دستور su را وارد و سپس رمزعبور bob را وارد کنیم. با آدرس cd / وارد مسیر root میشویم و ls میگیریم. پرچم اینجاست.
شما میتوانید راه حلهای دیگری را برای بدست آوردن پرچم در این CTF پیدا کنید.