HackTheBox Mobile Challenges (قسمت پنجم. SeeTheSharpFlag)

I have made a password verification app. If I can remember the password, the app will tell me it is correct. See if you can guess my password.

پس از دانلود و extract کردن فایل های چالش می بینیم که چالش تنها حاوی یک فایل APK می باشد:

بهتره که در مرحله اول، اپلیکیشن رو در محیط شبیه ساز بررسی کنیم:

خب. می بینیم که برنامه یک ورودی می گیرد و آن را بررسی می کند.

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

آهااااا! این یه اپلیکیشن زامارینه. به این راحتیا نمیشه عملیات مهندسی معکوس روش انجام داد.

بیاید ببینیم که کلا یه اپلیکیشن زامارین چجوری Pack و آماده سازی میشه:

https://cihansol.com/blog/index.php/2021/08/09/unpacking-xamarin-android-mobile-applications/
https://cihansol.com/blog/index.php/2021/08/09/unpacking-xamarin-android-mobile-applications/

پس کد های اپلیکیشن های XAMARIN ابتدا کامپایل و به فایل dll تبدیل می شوند. پس طبیعیه که با یه ابزار ساده مثل JAD-X نشه این اپلیکیشن هارو مهندسی معکوس کرد. چون ساختارشون به کلی با JAVA فرق می کنه. حالا چجوری میتونیم مهندسی معکوسشون کنیم؟

در مرحله اول با apktool اپلیکیشن رو دیکامپایل می کنیم. فایل های dll در لوکیشن unknown/assemblies قرار دارند:

برای مشاهده محتویات فایل های dll می توانیم از ابزار dnSpy استفاده کنیم که یکی از قدرتمند ترین ابزار ها برای دیباگ کردن اپلیکیشن های بر پایه #C هست:

عه!!! اینا که خالی ان!!! بیاید Header های فایل هارو بررسی کنیم ببینیم قضیه از چه قراره:

این دیگه چیه؟َ!

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

حالا باید چیکار کنیم؟! کاری نداره! از این اسکریپت پایتون برای decompress کردن فایل SeeTheSharpFlag.dll استفاده می کنیم:

https://github.com/x41sec/tools/blob/master/Mobile/Xamarin/Xamarin_XALZ_decompress.py

حالا فایل رو با dnSpy باز می کنیم:

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

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

این هم از فلگ ?

منتظر نظرات و انتقادات شما هستم

در قسمت های بعدی، به بررسی سایر چالش های موبایل در HackTheBox خواهیم پرداخت ??