شرح کلی
نوع: PUA (بدافزارهای بالقوه ناخواسته)
اسامی بدافزار:
PUA.Android.Notifyer.Adware
درجه تخریب: متوسط
میزان شیوع: متوسط
PUA) potentially Unwanted Application) چیست؟
بدافزارهایی که اغلب شامل برنامههای تبلیغاتی (Adware) یا نصب toolbar و یا اهداف دیگر هستند، اما در عمل به اندازه سایر بدافزارها مخرب نیستند. این دسته از بدافزارها ممکن است فعالیتهایی انجام دهند که مورد تأیید یا انتظار کاربر نیست و مخرب باشند ولی برخی از کاربران، فواید استفاده از این قبیل برنامهها را بیشتر از معایبشان میدانند و استفاده از آنها را بنا به اختیار خود بدون اشکال تلقی میکنند.
خانواده بدافزاری Notifyer چیست؟
تبلیغ افزار Notifyer در پس زمینه با استفاده از سرویسهای ارسال اعلان، برای کاربر اعلانهای تبلیغاتی نمایش میدهد. در صورت کلیک بر روی هر یک از اعلانها در تلفن همراه کاربر، صفحات تبلیغاتی در مرورگر باز میشوند.
توضیحات فنی
نام این برنامه “نوای محرم و مداحی عاشورا” است و از سرویس تبلیغاتی با نام پوشه برای نمایش اعلانها و لینکهای تبلیغاتی خود استفاده میکند. پوشه (Pushe) يک سرويس ارسال اعلان push notification و مربوط به شركتي ايراني به نام روناش با آدرس اينترنتي ronash.co و pushe.co است. این سرویس برای توسعهدهندگان موبايل و وب در جهت نمایش اعلان در برنامههایشان تعبیه شده است تا بتوانند برای كاربران برنامههای خود، بنابر قوانین وضع شده در شرکت، اعلانهايي را ارسال كنند. توسعهدهندگان برنامهها از طريق پنل كاربری كه اين شركت در اختيار آنها قرار ميدهد، اقدام به ارسال اعلان به مشتريان برنامههای خود میکنند اما این اعلانها بدون اعلام و تایید کاربر و به ویژه بدون بررسیهای لازم که تحت چه عنوانی و با ارائه چه مطالبی هستند، میتواند آزاردهنده و یا مخرب باشند.
بعد از اجرای برنامه، بخشهای مختلف مربوط به خود برنامه، با فراخوانی یکسری فایلهایی که در فولدر assets برنامه قرار دارد، اجرا میشوند. برای بخشهای مختلف برنامه، میبایست به آدرسهایی که در برنامه مشخص شدهاند وصل شد تا اجرا شوند. به طور مثال به کاربر پیغام میدهد که برای پخش ویدیوهای برنامه، باید فایل پخشکننده آنها از آدرس “https[:]//myket.ir/app/com.devi.mxplayer/?lang=fa ” دانلود شود (درحال حاضر هیچ اپلیکیشنی در این آدرس وجود ندارد).
از طریق کانال تلگرامی “https[:]//t.me/myappforyou” میتوان با توسعه دهنده این برنامه ارتباط برقرار کرد و در صورتی که برنامه تلگرام در گوشی کاربر نصب نباشد، کاربر با این پیغام که “تلگرام در گوشی شما نصب نیست” مواجه میشود.
در راستای بررسی ایستای برنامه، با توجه به تنظیمات فایل Manifest.xml، در مورد مجوزها و اجزای برنامه و نیز بعد از بررسی کد برنامه، به راحتی میتوان مشاهده کرد که این برنامه از سرویس ارسال اعلانات پوشه بهره گرفته است. همچنین، نوعی که برای ارسال اعلانهای خود استفاده میکند “اعلان با محتوای دلخواه (json)” بوده که به معنای ارسال محتوای دلخواه به شکل json به برنامه است. بر طبق سرویس ارسال اعلان پوشه به گوشی کاربران، در این نوع اعلان، ارسال محتوا (عنوان، متن، آیکون، عکس و …) به کاربر امکانپذیر است.
همچنین، برنامه از موقعیت مکانی کاربر جهت ارسال اعلانات (تبلیغات) هدفمند استفاده میکند. token مورد استفاده این برنامه در پوشه به صورت زیر است:
<meta-data android:name="co.ronash.pushe.token" android:value="PUSHE_48483076454"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION”/ >
- ارسال و دریافت اطلاعات به صورت Json:
<service android:name=".pushejsonservice"/>
<receiver android:name=".pushejsonservice$pushejsonservice_BR" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="moharam.madahi.mv"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="moharam.madahi.mv"/>
</intent-filter>
</receiver>
- دریافت مجوز boot سیستم برای دوباره فعال شدن خودکار برنامه پس از boot و همچنین راه اندازی مجدد سرویس پوشه به هنگام راهاندازی مجدد سیستم:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".pushejsonservice$pushejsonservice_BR" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="moharam.madahi.mv"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="moharam.madahi.mv"/>
</intent-filter>
</receiver>
- قابلیت دریافت بهروزرسانی برنامه توسط سرویس پوشه؛ با استفاده از این سرویس، توسعه دهنده میتواند برنامه خود را بهروزرسانی کرده، قابلیتهای بیشتری به آن اضافه کند و به راحتی نیز برنامه جدید را جایگزین برنامهی قبلی کند.
<receiver android:name="co.ronash.pushe.receiver.UpdateReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<data android:path="moharam.madahi.mv" android:scheme="package"/>
</intent-filter>
</receiver>
- با استفاده از سرویس پوشه میتوان کد json را نیز روی دستگاه قربانی اجرا و یک سری اطلاعات را از گوشی کاربر استخراج کند مانند: اطلاعات مربوط به IP، شهر، اپراتور و دیگر اطلاعات کاربر.
a.add(new AbstractMap.SimpleEntry("http://4.ifcfg.me/json", "ip"));
a.add(new AbstractMap.SimpleEntry("http://ifcfg.me/json", "ip"));
a.add(new AbstractMap.SimpleEntry("http://ipinfo.io/json", "ip"));
a.add(new AbstractMap.SimpleEntry("http://ip-api.com/json/?callback=yourfunction", "query"));
a.add(new AbstractMap.SimpleEntry("https://api.ipify.org?format=json", "ip"));
a.add(new AbstractMap.SimpleEntry("http://icanhazip.com/", ""));
a.add(new AbstractMap.SimpleEntry("http://ip.ronash.co/geoip", "ip"));
- از قابلیتهای دیگری که اپلیکیشن به واسطه استفاده از سرویس پوشه به آنها دسترسی پیدا میکند:
- به دست آوردن اطلاعات بسیار مهم از گوشی کاربر مانند: deviceId ،UUID، مشخصه یکتا برای هر تعداد از سیم کارتهای فعال گوشی.
- بهدست آوردن اطلاعات مربوط به شبکه گوشی کاربر و بررسی اینکه فعال باشد.
android.net.ConnectivityManager.getActiveNetworkInfo
android.net.NetworkInfo.isConnectedOrConnecting
android.net.wifi.WifiManager.getConnectionInfo
android.net.ConnectivityManager.getNetworkInfo
android.net.NetworkInfo.isConnected
android.net.NetworkInfo.getState
- همچنین، در این برنامه از کتابخانه آماده “AriaLib” استفاده شده است. کار کلی این بخش:
- AriaCustomShareList: با استفاده از این بخش، توسعه دهنده میتواند این برنامه را جزو لیست برنامههایی در گوشی کاربر که قابلیت اشتراک متن یا فایل را دارند، قرار دهد. به این ترتیب، کاربر به محض اینکه بخواهد متن یا فایلی را به اشتراک بگذارد، این برنامه نیز جزو لیست برنامههای انتخابکننده اصلی گوشی کاربر باز میشود و کاربر برنامهای را برای اشتراک انتخاب میکند.
- AriaMarkets:
-باز کردن صفحه برنامه در کافه بازار، ایران اپس، کندو، مایکت، پارس هاب
-باز کردن صفحه نظردهی به برنامه در کافه بازار، ایران اپس، کندو، مایکت، پارس هاب
-باز کردن صفحه برنامههای توسعهدهنده در کافه بازار، ایران اپس، کندو، مایکت، پارس هاب
- AriaMultipleSharing: با استفاده از این کلاس میتوانید هر تعداد فایل را به صورت همزمان به اشتراک بگذارید. این فایلها از هر نوع فرمتی نیز میتوانند انتخاب شوند. برای مثال، اشتراک همزمان 5 یا 10 یا هر تعداد عکس به برنامههایی که از این امکان پشتیبانی میکنند مثل تلگرام، لاین، زاپیا و …
- همچنین، به دست آوردن اطلاعات گوشی کاربر با استفاده از B4a) B4a ابزاری قدرتمند در زمینه برنامهنویسی موبایل است که برنامهنویسان میتوانند در برنامههای خود از امکانات آن بهره بگیرند).
- به دست آوردن اطلاعاتی همچون لیست زیر از گوشی کاربر با استفاده از کلاس b4a.phone.CallLogWrapper
۱. getAllCalls: به دست آوردن لیست کامل تماسهای گوشی کاربر بر اساس مشخصات آنها (شماره، ID، مدت زمان مکالمه، اسم، روز و…)
۲. GetEmails: آدرسهای ایمیل مخاطبین را به عنوان کلید و انواع ایمیل را به عنوان مقادیر آنها باز میگرداند.
۳. GetPhones: تمام شمارههای تلفن مخاطبین را به عنوان کلید و انواع تلفن ذخیره شده برای آنها را به عنوان مقادیر باز میگرداند.
۴. GetPhoto: در صورت وجود، عکس پیوست شده برای هر مخاطب در گوشی کاربر را باز میگرداند و در صورت عدم وجود عکس مخاطب، مقدار Null را برمیگرداند.
۵. getAllContacts: لیست مخاطبین گوشی کاربر را بر میگرداند.
۶. FindByMail: لیست ایمیلهای دریافتی و یا ارسالی کاربر را که فرستنده یا گیرنده آنها با لیست مخاطبین گوشی هماهنگی دارد، بررسی میکند. در صورت تطابق، اسم و آدرس ایمیل شخص را بر میگرداند.
۷. GetLine1Number: شماره تلفن اولی که مربوط به هر شخص است و در سیم کارت ذخیره شده است را بر میگرداند.
روش مقابله و پاکسازی سیستم
برای اطمینان خاطر از عدم آلودگی دستگاه، آنتیویروس پادویش را نصب و فایل پایگاه داده آن را بهروز نگه دارید و اسکن آنتیویروس را انجام دهید.
روشهای پیشگیری از آلوده شدن گوشی:
۱. از دانلود و نصب برنامه از منابع و مارکتهای موبایلی نامعتبر خودداری کنید.
۲. هنگام نصب برنامههای موبایلی، به مجوزهای درخواستی دقت کنید.
۳. از فایلها و اطلاعات ذخیره شده در گوشی پشتیبانگیری مداوم انجام دهید.
۴. از نسخههای غیررسمی برنامهها استفاده نکنید. برنامههایی مانند تلگرام و اینستاگرام نسخههای غیررسمی زیادی دارند و بیشتر آنها از طریق کانالهای تلگرامی انتشار مییابند.