Trojan.Android.Fakeapp.MinerPay

شرح کلی

نوع :تروجان (Trojan)
درجه تخریب: متوسط
میزان شیوع: متوسط

تروجان(Trojan) چیست؟

تروجان‌ها نوعی از بدافزار محسوب می‌شوند که خود را در قالب یک نرم‌افزار سالم و قانونی نشان می‌دهند و بسیار شبیه نرم‌افزارهای مفید و کاربردی رفتار می‌کنند. اما هنگامی ‌که اجرا می‌شوند، خرابی‌های زیادی را برای سیستم ایجاد می‌کنند. نرم‌افزارهای دانلود شده از اینترنت، جاسازی شدن در متن HTML، ضمیمه شدن به یک ایمیل و … از جمله راه‌های ورود تروجان‌ها به سیستم هستند. تروجان‌ها برخلاف ویروس‌ها و کرم‌های کامپیوتری قادر به تکثیر خود نیستند.

بدافزار Fakeapp چیست؟

خانواده Fakeapp معمولا به عنوان برنامه‌های قانونی و مفید خود را به کاربر معرفی می‌کنند. هدف واقعی این خانواده اغلب کسب درآمد از طریق نمایش تبلیغات، هدایت کاربران برای نصب برنامه‌های دیگر، عضویت کاربر برای بهره‌مندی از خدمات اشتراک برنامه، ارسال و دریافت پیامک خدمات ارزش افزوده و دانلود و قرار دادن برنامه‌های دیگر در گوشی کاربر است. این برنامه‌ها بر خلاف ادعای خود عمل می‌کنند، به عنوان مثال برنامه‌ای از این خانواده بدافزاری، که به عنوان یک آنتی ویروس خود را معرفی می‌کند، سایر برنامه‌های شناخته شده آنتی ویروس را بدافزار معرفی می‌کند. در ادامه دو نمونه از خانواده‌های این بدافزارها به نام‌های FakeMinerPay و FakeMinerAd مورد بررسی قرار می‌گیرند .

توضیحات فنی

برنامه “Bitfunds” از نوع FakeMinerPay و برنامه “Bit Plus” از نوع FakeMinerAd می‌باشند:

  • برنامه Bitfunds

    نام پکیج برنامه com.task.cryptocloudpro می‌باشد و با هدف استخراج ارز دیجیتال به کاربر معرفی می‌شود.این بدافزار وانمود می‌کند که ارزهایی مانند بیت کوین (BTC)، بیت کوین کش (BCH) و اتریوم (ETH) را استخراج می‌کند و با ایجاد یک محیط شبیه‌سازی استخراج ارز دیجیتال، کاربر را متقاعد می‌کند یک برنامه معتبر است. همچنین، کاربران را وادار می‌کند تا برای افزایش ظرفیت استخراج ارز دیجیتال حساب خود، اقدام به خریداری اشتراک نمایند. اما در عمل، کاربر نه تنها با این برنامه هیچ ارز دیجیتالی استخراج نمی‌کند، بلکه هزینه‌ای جهت استفاده از خدمات اشتراک برنامه بدون دریافت هیچ قابلیت یا ارز دیجیتالی متحمل می‌شود. این برنامه اخیراً از روی فروشگاه گوگل پلی حذف شده است ولی همچنان بر روی برخی فروشگاه‌های دانلود اپلیکیشن متفرقه موجود است.

در اکتیویتی اصلی برنامه، ابتدا اکتیویتی howitwork فراخوانی می‌شود که درمورد چگونگی کار برنامه توضیحاتی به کاربر نمایش می‌دهد. پس از آن، اکتیویتی MainActivity با هدف استخراج برای سه ارز دیجیتال اصلی و اکتیویتی LoginActivity هم برای ورود به برنامه فراخوانی می‌شوند. در صورتی که کاربر از قبل ثبت نام انجام داده باشد، با دریافت ایمیل و پسورد وارد برنامه می‌شود و در غیر این صورت، با کلیک بر دکمه SignUp وارد اکتیویتی SignUpActivity می‌شود. بعد از راه اندازی برنامه، ابتدا اتصال به شبکه بررسی می‌شود. زمانی که کاربر بر روی دکمه “start mining” کلیک می‌کند، “شمارنده ماینر” با یک فاصله زمانی 3 ثانیه، نمایش داده می‌شود که در واقع فرآیند استخراج ارز را برای کاربر شبیه‌سازی می‌کند، در صورتی که برای تحقق این روال در حالت واقعی استخراج ارز دیجیتال، برنامه می‌بایستی به یک استخر ماینر متصل شود.

اکتیویتی AddWalletAddressActivity
این اکتیویتی برای اضافه کردن آدرس کیف پول کاربر جهت برداشت ارز دیجیتال استخراج شده می‌باشد. اولین بار با کلیک کاربر بر روی دکمه “withdraw” مطابق تصویر زیر، آدرس کیف پول و نوع آن را از کاربر درخواست می‌کند. این برنامه برای فیلد آدرس کیف پول هیچ اعتبارسنجی به جز خالی نبودن مقدار آن قرار نداده است در صورتی که آدرس کیف پول بسته به نوع آن، آدرس منحصر به فردی دارد و دارای طول مشخص می‌باشد. همچنین، کاربر امکان تغییر آدرس کیف پول خود را ندارد و تنها برای یک بار، امکان وارد کردن آدرس کیف پول خود را در برنامه دارد. برنامه‌های معتبر معمولا برای فیلد آدرس کیف پول محدودیت‌هایی مانند حداقل و حداکثر تعداد کاراکتر وارد شده، تعریف محدوده مشخص از کاراکترها و مواردی از این قبیل را قرار می‌دهند و همچنین امکان تغییر آدرس کیف پول را دارند. نبودن امکان تغییر آدرس کیف پول و نبود اعتبارسنجی برای فیلد آدرس کیف پول می‌تواند دلیل بر عدم اعتبار و ناتوانی برنامه در استخراج ارز دیجیتال باشد.

اکتیویتی PaymentCodeActivity
چندین طرح مختلف برای افزایش میزان سرعت استخراج ارز دیجیتال و کاهش محدودیت برداشت از آن با قیمت‌های مختلف به کاربر معرفی می‌شود. در این اکتیویتی برای خرید طرح‌های پیشنهادی بسته به نوع ارز دیجیتال (بیت کوین، بیت کوین کش و اتریوم) کاربر را به درگاه پرداخت معمولی هدایت نمی‌کند، بلکه آدرس کیف پول و کد QR مربوط به آن را در اختیار کاربر قرار داده تا کاربر معادل قیمت، طرح مربوطه را به حساب کیف پول توسعه دهنده ارز دیجیتال واریز نماید (مطابق شکل زیر). با توجه به اینکه این برنامه قادر به استخراج واقعی ارز دیجیتال نیست، کاربر برای سرویسی که وجود ندارد متحمل پرداخت هزینه اشتراک شده است و بعد از آن از کاربر می‌خواهد تا تصویر اسکرین شات پرداخت موفق خود را به ایمیل مندرج شده در این قسمت به همراه ایمیل و آیدی ثبت نام شده در برنامه ارسال کند تا بعد از بررسی پرداخت به حساب کاربر منظور شود.

سرویس FirebaseMessagingService 
پکیج فایربیس برای ذخیره داده، احراز هویت، تعداد دفعات نصب برنامه در گوشی کاربران و مواردی از این قبیل به کار می‌رود. سرویس با اکشن com.google.firebase.MESSAGING_EVENT اجرا می‌شود یعنی در صورت رویداد ارسال یا دریافت پیام این سرویس فراخوانی می‌شود. با استفاده از آن اقدام به جمع آوری اطلاعات گوشی مانند برند گوشی، نام مدل، نام پکیج و … کرده و از این اطلاعات در راستای احراز هویت کاربران، نمایش اعلانات به کاربر و نمایش تبلیغات با استفاده از گوگل پلی بهره می‌برد.

• برنامه “Bit Plus” 

نام پکیج این برنامه cryptominer.bitcoinminer می‌باشد که با هدف استخراج ارز دیجیتال به کاربر معرفی می‌شود. این برنامه کاربران را وادار می‌کند تا برای افزایش ظرفیت استخراج ارز دیجیتال حساب خود فیلم تبلیغاتی مشاهده کنند، در حالی که هیچ ارز دیجیتالی استخراج نمی‌کند. این اپلیکیشن به دلیل دارا بودن کلیک‌های تبلیغاتی تقلبی از نوع FakeMinerAd می‌باشد.

در اکتیویتی اصلی cryptominer.bitcoinminer.ui.main.MainActivity، متد زیر برای محاسبه و نمایش شمارنده ماینینگ برنامه که نشان دهنده تعداد بیت کوین‌هایی است که در حال استخراج می‌باشد، فراخوانی می‌شود. درفایل پایگاه داده برنامه، متغیر BitPlusPreference تعریف شده که کلید “CounterKey” برای مقدار شمارنده تعداد ارز دیجیتال استخراج شده در نظر گرفته شده است. با استفاده از متد coroutine، مقدار شمارنده را در اکتیویتی برنامه کنترل می‌کند.

public final void y() {
d.e(this, "context");
d.e("CounterKey", "key");
SharedPreferences sharedPreferences = getSharedPreferences("BitPlusPreference", 0);
d.d(sharedPreferences, "context.getSharedPrefere…me, Context.MODE_PRIVATE)");
b.a = sharedPreferences.getInt("CounterKey", 0);
z();
if (this.u) {
b b2 = this.r;
if (b2 != null) {
Button button = b2.e;
d.d(button, "binding.startMiningButton");
Object object = a.a;
button.setBackground(getDrawable(2131165324));
b b3 = this.r;
if (b3 != null) {
Button button1 = b3.e;
d.d(button1, "binding.startMiningButton");
button1.setText(getResources().getString(2131624048));
this.s = b.a.f;
this.t = f.q(f.a(i0.b), null, null, new a(this, null), 3, null);
return;
}
d.i("binding");
throw null;
}
d.i("binding");
throw null;
}
b b1 = this.r;
if (b1 != null) {
Button button = b1.e;
d.d(button, "binding.startMiningButton");
Object object = a.a;
button.setBackground(getDrawable(2131165323));
b b2 = this.r;
if (b2 != null) {
Button button1 = b2.e;
d.d(button1, "binding.startMiningButton");
button1.setText(getResources().getString(2131624045));
a1 a11 = this.t;
if (a11 != null)
f.d(a11, null, 1, null);
this.s = b.a.e;
return;
}
d.i("binding");
throw null;
}
d.i("binding");
throw null;
{

اکتیویتی cryptominer.bitcoinminer.ui.withdraw.WithdrawActivity 
در این اکتیویتی دو مقدار از کاربر گرفته می‌شود که همگی به صورت تقلبی هستند و در عمل هیچ عملیاتی با وارد کردن مشخصه‌ها صورت نمی پذیرد:

1.آدرس کیف پول کاربر برای برداشت بیت کوین به ظاهر استخراج شده.

2.مقدار مورد نظر کاربر برای برداشت از بیت کوین‌های به ظاهر استخراج شده.

اکتیویتی cryptominer.bitcoinminer.ui.vip_mining.VipMiningActivity
کاربر برای دریافت بیت کوین بیشتر، روی دکمه “100satoshi collect” کلیک کرده و بعد از به پایان رسیدن شمارش معکوس (شمارش معکوس در این قسمت با استفاده از کتابخانه ir.samanjafari.easycountdowntimer پیاده‌سازی شده است) تبلیغات در قالب ویدیو با استفاده از کتابخانه com.unity3d.services.ads.adunit به کاربر نمایش داده می‌شود.

در نهایت فیلم تبلیغاتی برای کاربر نمایش داده می‌شود. در این برنامه در صورت مشاهده فیلم طی مدت زمان مشخص شده، کاربر می‌تواند به برنامه بازگشته و مبلغ جایزه یعنی “satoshi 100” را در حساب خود دریافت کند و در صورت کلیک کاربر بر روی تبلیغات، کاربر به صفحه برنامه در گوگل پلی جهت دانلود برنامه هدایت می‌شود.

public void f() {
z(false);
if (UnityAds.isReady("Rewarded_Android")) {
UnityAds.show(this, "Rewarded_Android");
return;
}
int i = b.a;
d.e(this, "context");
d.e("CounterKey", "key");
SharedPreferences sharedPreferences = getSharedPreferences("BitPlusPreference", 0);
d.d(sharedPreferences, "context.getSharedPrefereme, Context.MODE_PRIVATE)");
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("CounterKey", i + 100);
editor.apply();
B();
{

چندین راه تشخیص اپلیکیشن‌های استخراج ارز دیجیتال واقعی از تقلبی

۱. نظرات نوشته شده داخل فروشگاه را بخوانید. توجه داشته باشید که بسیاری از نظرات مثبت با پنج ستاره در این برنامه‌ها تقلبی است و توسط توسعه دهنده خریداری شده است. بنابراین حتما نظرات منفی یا یک ستاره را مطالعه نمایید تا مشکلات برنامه را پیش از پرداخت هزینه بدانید.
۲. آدرس کیف پول خود را اشتباه وارد کنید. تحقیقات نشان داده که اکثر این برنامه‌ها، قسمت آدرس کیف پول را اصلا بررسی نمی‌کنند و هر کاراکتری که در آن وارد شود را درست در نظر می‌گیرند.
۳. زمانی که برنامه در حال استخراج ارز است، دستگاه خود را راه اندازی مجدد (restart) کنید، برنامه‌‌های تقلبی ارز دیجیتال در این حالت مقدار ارز استخراج شده را صفر می‌کنند.
۴. خواندن مقررات حریم خصوصی کاربران در برنامه. یکی از این برنامه‌ها، توضیح داده که این اپلیکیشن بیشتر جنبه سرگرمی و آموزشی دارد و تعهدی نسبت به پرداخت به کاربران را ندارد.

روش مقابله و پاک‌سازی سیستم

۱. این بدافزار توسط آنتی‌ویروس پادویش شناسایی می‌شود.
۲. گوشی‌های خود را به روز نگه دارید، در حالت ایده آل آنها را تنظیم کنید تا به صورت خودکار به روز شوند.
۳. به مجوزهای دسترسی برنامه تمرکز کنید. اگر به نظر می‌رسد آنها برای عملکردهای برنامه بیش از اندازه هستند، از نصب برنامه خودداری کنید.
۴. دقت کنید که برنامه‌های خود را از مارکت‌های معتبر دانلود و یا خریداری کنید و از کانال‌های تلگرامی، اینستاگرام و وب سایت‌های نامعتبر آنها را دانلود نکنید. همچنین، برروی لینک‌های مشکوکی که از طریق sms دریافت می‌کنید، کلیک نکنید.