
در این بررسی فنی، قصد داریم یک بدافزار پیشرفتهی اندرویدی را تحلیل کنیم که خودش رو بهعنوان یک اپلیکیشن معتبر جا میزند و در پسزمینه اقدام به سرقت گستردهی اطلاعات میکند. این اپلیکیشن رو یکی از همکارام به من نشون داد و همین باعث شد علاقهمند بشم که از نظر فنی بررسیش کنم. جدیداً هم توی ایران خیلی شایع شده و با توجه به نوع ارائه و تبلیغش، خیلیها ناخواسته در دامش میافتن. ایدهش توی انتخاب متن پیام هم جالبه؛ مخصوصاً وقتی با موضوع ساخت و ادیت عکس با هوش مصنوعی ترکیب میشه، چون این موضوع برای خیلی از مردم جذابه و اگر کسی آگاهی فنی نداشته باشه، حتی APK بودن این «عکسها» هم براش سؤالبرانگیز نمیشه.

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

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

بعدش یک صفحه درخواست پرداخت میاد با مبلغ خیلی کم تا برای کاربر شک برانگیز نباشه و با رمز دوم ثابت اطلاعات پرداختش رو ثبت کنه

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

اولین کاری که اپ انجام میده، چک کردن محیط دیباگ بودنه. بعدش boot time رو بررسی میکنه تا مطمئن بشه روی یه گوشی واقعی نصب شده نه یه ماشین مجازی. یعنی اگه بخوای روی محیط تست بررسیش کنی، ممکنه رفتار متفاوتی داشته باشه.
به دلایل مختلفی مثل چک کردن دیباگ، لوکیشن سیمکارت، نرمافزارهای نصب شده، و استفاده از WebView، هر کسی که این اپ رو نصب کنه ممکنه تجربه متفاوتی داشته باشه. تکنیک هوشمندانهای برای فرار از تشخیص عملکرد.
یکی از جالبترین قابلیتها اینه که میتونه بعد از نصب، آیکون و اسمش رو به مرورگر کروم تغییر بده. این باعث میشه کاربر فکر کنه یه اپ عادی نصب کرده یا نتونه پیداش کنه.
برخلاف خیلی از اپهای اندرویدی که بخش عمده منطقشون بهصورت کد جاوا یا کاتلین داخل فایلهای DEX قرار داره، منطق اصلی این بدافزار داخل فایلهای Native با پسوندso. پیادهسازی شده. این فایل ها مستقیماً برای معماری پردازنده (ARM / ARM64) کامپایل میشن.
فایل APK رمزنگاری شده و با نرمافزارهای معمولی مثل zip یا rar باز نمیشه. یه لایه امنیتی اضافه برای جلوگیری از بررسی ساده.
حتی بعد از اجرا، اپ میتونه آیکونش رو از صفحه نمایش مخفی کنه، که یعنی کاربر نمیتونه راحت پیداش کنه تا حذفش کنه.
برای بدست آوردن آدرسی که برنامه بهش داده ارسال و دریافت میکنه، دو راه وجود داره:
راه اول: نگاه کردن به سورس کد
آدرس به صورت Base64 انکود ذخیره شده. بعد از دیکد کردن باز هم ناخواناست و معلوم میشه که با کلید RSA مجدداً انکریپت شده. میشه دیکریپتش کرد ولی کاری سخت و طولانیه.
راه دوم: اینترسپت کردن ریکوئستها
راه حل سادهتر... با ابزارهایی مثل Burp Suite یا اجرای اپ روی ماشین مجازی میشه ریکوئستها رو اینترسپت کرد و دید که به کجا ریکوئست میزنن.
سوال: اگه بدست آوردن آدرس خیلی سادهست، پس چرا انقدر رمزنگاری شده؟
این آدرسها برای اینکه ما پیداشون نکنیم رمزنگاری نشدن. بلکه با هدف اینکه آنتیویروسها و ابزارهای اسکن نتونن این آدرس مشکوک رو پیدا کنن، ساخته شدن.
حتی آدرس سایت WebView هم مستقیم توی کد نیست و بعد ارتباط با سرور دریافت میشه. یکی از آدرسها برای مثال:
https://c978e75f17.tc-spin.site/SendData


نام بسته: com.chvi.pool
نام نمایشی: "هوش مصنوعی"
نسخه: 3.2.2
حداقل نسخه اندروید: 24 (اندروید 7.0)
SHA-1: F259581A8973643975D439C988CD809BDCDDFD30
SHA-256: E7E644DE499DFA95BEECB6798D5185A31E0A35B91A38498DE2750C87C9E7376F

این بدافزار تقریباً به همه چیز توی گوشی دسترسی میخواد:
<uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.READ_SMS"/>
خطر: میتونه کدهای تایید (OTP) رو بخونه و به سرقت ببره. اگه این اپ نصب باشه، میتونه با خوندن پیامکها به همه حسابهاتون دسترسی پیدا کنه.
<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
خطر: میتونه لیست کامل مخاطبین رو بدزده و برای کمپینهای فیشینگ بیشتر استفاده کنه.
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
خطر: میتونه بدون اطلاع تماس بگیره (مثلاً با شمارههای پولی) یا اطلاعات IMEI و شماره تلفن رو بدزده.
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
خطر: میتونه ببینه چه اپهایی نصب دارید، به حسابهای کاربری دسترسی پیدا کنه، و خودش رو از محدودیتهای باتری معاف کنه تا همیشه فعال بمونه.

<service android:name="com.chvi.pool.services.FirebaseService" android:enabled="true" android:exported="false">
برای دریافت پیامهای push از طریق Firebase - احتمالاً برای دریافت دستورات از سرور هکر.
<service android:name="com.chvi.pool.services.FGService" android:foregroundServiceType="specialUse">
اپ به عنوان یه سرویس Foreground اجرا میشه که به سختی بسته میشه و همیشه فعاله.
<service android:name="com.chvi.pool.services.CoreService" android:stopWithTask="false" android:foregroundServiceType="remoteMessaging"/>
خطر حیاتی: stopWithTask="false" یعنی حتی اگه اپ رو ببندید، این سرویس همچنان فعاله!

<receiver android:name="com.chvi.pool.receivers.SystemEventsReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> ... </intent-filter> </receiver>
خطر: این receiver روی همه رویدادهای سیستمی گوش میده - راهاندازی مجدد گوشی، آپدیت شدن خود اپ، ریبوت. یعنی هر بار که گوشی رو روشن کنید، بدافزار خودکار فعال میشه.
<receiver android:name="com.chvi.pool.receivers.SmsReceiver" android:permission="android.permission.BROADCAST_SMS" android:priority="999"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
خطر فوقالعاده: priority="999" یعنی این receiver اولین کسیه که پیامکها رو دریافت میکنه - حتی قبل از اپ پیامک خود سیستم! میتونه پیامک رو بخونه و حتی جلوی نمایش اون رو بگیره.

<activity android:label="Chrome" android:icon="@drawable/chrome" android:name="com.chvi.pool.SettingsActivity" android:enabled="false">
این activity به نام و آیکون کروم هست ولی در واقع بخشی از بدافزار هست android:enabled="false" یعنی در ابتدا غیرفعاله ولی میتونه بعداً فعال بشه.


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