ویرگول
ورودثبت نام
حمید رضا شاکری
حمید رضا شاکریبیشتر برنامه نویس فلاتر ولی همه چی میزنم
حمید رضا شاکری
حمید رضا شاکری
خواندن ۵ دقیقه·۳ روز پیش

از APK جعلی تا سرقت مالی: بررسی فنی یک بدافزار اندرویدی فیشینگ

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

نحوه کار

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

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

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

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

ویژگی های جالب

۱. تشخیص محیط دیباگ و شبیه‌سازی

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

۲. رفتار متغیر برای هر کاربر

به دلایل مختلفی مثل چک کردن دیباگ، لوکیشن سیم‌کارت، نرم‌افزارهای نصب شده، و استفاده از WebView، هر کسی که این اپ رو نصب کنه ممکنه تجربه متفاوتی داشته باشه. تکنیک هوشمندانه‌ای برای فرار از تشخیص عملکرد.

۳. تغییر آیکون و اسم به کروم

یکی از جالب‌ترین قابلیت‌ها اینه که میتونه بعد از نصب، آیکون و اسمش رو به مرورگر کروم تغییر بده. این باعث میشه کاربر فکر کنه یه اپ عادی نصب کرده یا نتونه پیداش کنه.

۴. کد نیتیو کامپایل شده

برخلاف خیلی از اپ‌های اندرویدی که بخش عمده منطقشون به‌صورت کد جاوا یا کاتلین داخل فایل‌های DEX قرار داره، منطق اصلی این بدافزار داخل فایل‌های Native با پسوندso. پیاده‌سازی شده. این فایل ها مستقیماً برای معماری پردازنده (ARM / ARM64) کامپایل می‌شن.

۵. فایل APK رمزنگاری شده

فایل 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

دسترسی‌های خطرناک

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

این بدافزار تقریباً به همه چیز توی گوشی دسترسی میخواد:

1. دسترسی به پیامک‌ها (SMS)

<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) رو بخونه و به سرقت ببره. اگه این اپ نصب باشه، میتونه با خوندن پیامک‌ها به همه حساب‌هاتون دسترسی پیدا کنه.

2. دسترسی به مخاطبین

<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

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

3. دسترسی به تماس‌ها

<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

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

4. دسترسی‌های سیستمی خطرناک

<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"/>

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

سرویس‌های مخرب

FirebaseService

<service android:name="com.chvi.pool.services.FirebaseService" android:enabled="true" android:exported="false">

برای دریافت پیام‌های push از طریق Firebase - احتمالاً برای دریافت دستورات از سرور هکر.

FGService (Foreground Service)

<service android:name="com.chvi.pool.services.FGService" android:foregroundServiceType="specialUse">

اپ به عنوان یه سرویس Foreground اجرا میشه که به سختی بسته میشه و همیشه فعاله.

CoreService

<service android:name="com.chvi.pool.services.CoreService" android:stopWithTask="false" android:foregroundServiceType="remoteMessaging"/>

خطر حیاتی: stopWithTask="false" یعنی حتی اگه اپ رو ببندید، این سرویس همچنان فعاله!

Receivers مخرب

SystemEventsReceiver

<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 روی همه رویدادهای سیستمی گوش میده - راه‌اندازی مجدد گوشی، آپدیت شدن خود اپ، ریبوت. یعنی هر بار که گوشی رو روشن کنید، بدافزار خودکار فعال میشه.

SmsReceiver

<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‌های فریبنده

<activity android:label="Chrome" android:icon="@drawable/chrome" android:name="com.chvi.pool.SettingsActivity" android:enabled="false">

این activity به نام و آیکون کروم هست ولی در واقع بخشی از بدافزار هست android:enabled="false" یعنی در ابتدا غیرفعاله ولی میتونه بعداً فعال بشه.

نتیجه اجرای اپ داخل سند باکس

نتیجه گیری

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

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

ویروسبدافزارapkاندروید
۸
۲
حمید رضا شاکری
حمید رضا شاکری
بیشتر برنامه نویس فلاتر ولی همه چی میزنم
شاید از این پست‌ها خوشتان بیاید