Adware.Android.HiddenApp.Calender

شرح کلی

نوع: تبلیغ افزار (Adware)
اسامی بدافزار:
Adware.Android.HiddenApp.Calender
درجه تخریب: متوسط
میزان شیوع: متوسط

تبلیغ افزار (Adware) چیست؟

تبلیغ افزارها بدافزارهای تبلیغاتی هستند که موجب ‫نمایش تبلیغات یا ظاهر شدن بنرهای ‫متعددی در سیستم شده و شما را ‫تشویق به خرید محصولات یا استفاده ‫از سرویس‌های خود می‌کنند. برنامه نویسان این نوع از بدافزارها، از طریق اضافه کردن کدهای مربوط به سرویس‌های ارسال اعلان به برنامه‌های خود برای نمایش تبلیغات و کسب درآمد بیشتر استفاده می‌کنند. آنها با قرار دادن برنامه های خود در مارکت‌های اندرویدی سعی در ترغیب افراد بیشتری برای استفاده از اپلیکیشن‌های خود دارند.

خانواده بدافزاری HiddenApp چیست؟

تبلیغ افزار HiddenApp در پس زمینه با استفاده از سرویس‌های ارسال اعلان‌، برای کاربر اعلان‌های تبلیغاتی نمایش می‌دهد. در صورت کلیک بر روی هریک از اعلان‌ها کدهای مخرب در تلفن همراه کاربر بدون اطلاع او اجرا می‌شود. این تبلیغ‌افزار همچنین سعی در دانلود سایر برنامه‌های آلوده یا مشکوک بر روی تلفن همراه کاربر را نیز دارد. علاوه بر این، این تبلیغ‌افزار مانند یک botnet عمل می‌کند و برای رسيدن به اهداف بدخواهانه خود، از سرور C&C سامانه‌های ارائه دهنده خدمات ارسال اعلان به تلفن‌های همراه اندرويدی (pushe ,cheshmak) به عنوان مركز كنترل و فرمان خود استفاده می‌کند.

توضیحات فنی

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

یک نمونه از receiverهای ارسالی:

("android.intent.action.DATE_CHANGED","android.intent.action.TIMEZONE_CHANGED","android.intent.action.TIME_SET","android.intent.action.SCREEN_ON","android.intent.action.TIME_TICK")

برنامه با دریافت هریک از این پیام‌ها از سمت سیستم عامل اندروید، بررسی می‌کند که سرویس در چه وضعیتی است. به دلیل اینکه سیستم عامل اندروید سرویس‌های بلااستفاده در پس زمینه را خاتمه (kill) می‌دهد، برنامه‌نویسان برای حالت‌های خاصی که کاربر از گوشی خود استفاده‌ای ندارد از کلاس Alarmmanager استفاده می‌کنند تا سرویس برنامه‌شان در پس زمینه همچنان در حال اجرا باقی بماند. این کلاس برای ایجاد نوعی تایمر نگهبان استفاده می‌شود و زمانی که سرویس در حال اجرا نباشد، مجدداً آن را بررسی و راه اندازی (“BROADCAST_RESTART_APP”) می‌کند.

در بررسي كد، مشخص شد كه اين بدافزار دارای دو كلاس مرتبط با رسيدگي به موارد مربوط به دريافت اعلان است. يک كلاس به نام MyPushListener است كه از كلاس PusheListenerService مربوط به سرويس pushe ارث‌بری می‌کند و ديگری CheshmakFirebaseMessagingService است كه از كلاس‌های cheshmak ارث بری مي‌كند و بيشتر عمليات مخرب خود را در همين دو كلاس و با استفاده از داده‌های موجود در JSON دريافتي تصميم‌گيری و اجرا مي‌نماید. JSON ارسالي توسط اعلان، حاوی دو پارامتر key با valueهای مختلف است که هریک به منظور رخداد عملیات خاصی بوده و تنها در صورتی اجرایی می‌شود که کاربر بر روی اعلان کلیک کند. اعلان‌های ارسالی از سمت سرویس pushe، باعث اجرای موارد زیر می‌شوند:

  • بررسی اسم پکیج برنامه؛ هدف از این بررسی دستیابی به اطلاعات کلی درباره برنامه‌ای است که روی سیستم نصب شده‌ است. در صورتی که مقدار بازگشتی ورژن APK مدنظر نباشد یا به‌روز نباشد، فایل APK به‌روز شده را با توجه به آدرس مشخص شده در پارامتر “link” دانلود کرده و در دایرکتوری دانلود در External_storage قرار می‌دهد.
  • کاربر را به صفحه مشخصی در برنامه instagram ارجاع می‌دهد.

private void b(String paramString)

  {

    paramString = new Intent("android.intent.action.VIEW",     Uri.parse(paramString));

    paramString.setPackage("com.instagram.android");

    paramString.addFlags(268435456);

    try

    {

      paramString.addFlags(268435456);

      startActivity(paramString);

      return;

    }

    catch (ActivityNotFoundException paramString)

    {

      paramString.printStackTrace();

    }

  }

  • هدف، نمایش یک “عکس” به آدرس موجود در پارامتر “strlink” برای کاربر است.

private void a(String paramString1, String paramString2)

  {

    System.out.println("imgshow");

    Intent localIntent = new Intent();

    localIntent.setClass(this, imgshow.class);

    localIntent.putExtra("strimglink", paramString1);

    localIntent.putExtra("strlink", paramString2);

    localIntent.setFlags(268435456);

    startActivity(localIntent);

  }

  • نمایش یک dialog تبلیغاتی به کاربر.
  • در ابتدا وجود برنامه تلگرام “org.telegram.messenger” را در لیست برنامه‌های نصب شده برروی گوشی کاربر بررسی می‌کند. در صورت نصب بودن تلگرام، کاربر را به سمت یک صفحه مشخص در تلگرام ارجاع داده و آن را باز می‌کند. اینکه کاربر به چه صفحه‌ای لینک خواهد شد، در پارامتر (paramstring) به عنوان ورودی ارسالی به تابع ()Uri.parse وجود دارد. این موضوع نه تنها برای نسخه رسمی تلگرام اتفاق می‌افتد بلکه لیست سایر نسخه‌های غیر رسمی تلگرام در گوشی کاربر نیز چک می‌شود. در صورت وجودشان برای باز کردن لینک مشخص، همانند قبل اقدام می‌شود.

private void g(String paramString)

  {

    Intent localIntent = new Intent("android.intent.action.VIEW", Uri.parse(paramString.toString()));

    localIntent.setPackage("org.telegram.messenger");

    if (!c("org.telegram.messenger"))

    {

      if (c("com.hanista.mobogram")) {

        paramString = "com.hanista.mobogram";

      }

      for (;;)

      {

        localIntent.setPackage(paramString);

        break;

        if (c("ir.persianfox.messenger"))

        {

          paramString = "ir.persianfox.messenger";

        }

        else if (c("ir.ilmili.telegraph"))

        {

          paramString = "ir.ilmili.telegraph";

        }

        else if (c("com.mehrdad.blacktelegram"))

        {

          paramString = "com.mehrdad.blacktelegram";

        }

        else if (c("com.baranak.turbogramf"))

        {

          paramString = "com.baranak.turbogramf";

        }

        else if (c("com.telegram.hame.mohamad"))

        {

          paramString = "com.telegram.hame.mohamad";

        }

        else if (c("ir.felegram"))

        {

          paramString = "ir.felegram";

        }

        else

        {

          if (c("ir.rrgc.telegram")) {}

          while (c("ir.rrgc.telegram"))

          {

            paramString = "ir.rrgc.telegram";

            break;

          }

          if (!c("com.avina.tg")) {

            break;

          }

          paramString = "com.avina.tg";

        }

      }

    }

    localIntent.addFlags(268435456);

    try

    {

      localIntent.addFlags(268435456);

      startActivity(localIntent);

      return;

    }

    catch (ActivityNotFoundException paramString) {}

  }

لیست برنامه‌ها :

 

 

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

اعلان‌های ارسالی از سمت سرویس cheshmak سبب اجرای اقدامات زیر می‌شود:

  • دانلود یک برنامه مشخص در گوشی کاربر و همچنین قرار دادن آن فایل در مسیر “ExternalPublicDir”
  • بررسی اینکه آیا یک برنامه مشخص در گوشی کاربر نصب است یا خیر، در صورت نصب نبودن، فایل مورد نظر باید از آدرس ارسالی کد شده در فایل json دانلود شود.
  • باز کردن یک لینک (تبلیغاتی) مشخص شده برای کاربر.
  • باز کردن یک صفحه مشخص در پیام رسان تلگرام، در صورت نصب نبودن اپلیکیشن تلگرام در گوشی کاربر، با مراجعه به آدرس مشخص در صفحه وب، آن لینک تبلیغاتی باز می‌شود (احتمالا استفاده از نسخه وب تلگرام صورت می‌گیرد).
  • نمایش یک dialogbox به کاربر؛ با کلیک کاربر روی دکمه نصب در پیغام نمایش داده شده، برنامه مشخصی از یک آدرس مشخص شده در مارکت‌های برنامه‌های اندرویدی دانلود می‌شود. این آدرس‌ها در مارکت‌های کافه بازار، مایکت، ایران اپس، گوگل پلی هستند.

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

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

روش‌های پیشگیری از آلوده شدن گوشی:

۱. از دانلود و نصب برنامه از منابع و مارکت‌های موبایلی نامعتبر خودداری کنید.

۲. هنگام نصب برنامه‌های موبایلی، به مجوزهای درخواستی دقت کنید.

۳. از فایل‌ها و اطلاعات ذخیره شده در گوشی پشتیبان‌گیری مداوم انجام دهید. 

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