Trojan.Android.SmsSpy.DET

شرح کلی

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

اسامی بدافزار

(Padvish) Trojan.Android.SmsSpy.DET
(Kaspersky) HEUR:Trojan.AndroidOS.Hiddapp.ay
(BitDefenderFalx) Android.Trojan.SpyAgent.OK
(ESET) A Variant Of Android/Spy.Agent.DET

تروجان چیست؟

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

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

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

روال کاری این بدافزارها بدین صورت است که در شروع با وعده‌های مختلفی مانند ارائه خدمات بیشتر (از جمله دسترسی به ابلاغیه دادگاه، دریافت یارانه، سهام عدالت و …) در ازای درخواست مبلغی ناچیز، کاربران را به صفحه جعلی دریافت اطلاعات بانکی انتقال می‌دهند. به محض اینکه کاربر اطلاعات حساب خود را وارد می‌کند، تمامی اطلاعات کارت بانکی به سمت مهاجمان ارسال می‌شود. با توجه به اینکه بدافزار به پیامک‌های کاربر دسترسی دارد، رمز دوم کاربر را نیز دریافت کرده و اقدام به تخلیه حساب کاربر می‌کند.

توضیحات فنی

علائم آلودگی

  • دريافت مجوزهاي خطرناك مانند دسترسی به پیامک‌ها، مخاطبین، لیست اپلیکیشن‌های نصب شده و …
  • افزایش غیرعادی مصرف باتری و منابع پردازشی (RAM ,CPU)
  • نمایش اعلان‌های جعلی

شرح عملکرد

بدافزار “عدالت همراه” بعد از دریافت مجوزهای مورد نیاز خود از کاربر (مجوز دسترسی به پیامک‌ها، مخاطبین، اعلان‌ها یا notification ها و تماس‌های کاربر) اقدام به نمایش یک Web View به کاربر می‌کند که برای مشاهده ابلاغیه باید مبلغ مشخص شده را در صفحه فیشینگ پرداخت کند. با این ترفند اطلاعات کارت بانکی کاربر را دریافت کرده و با استفاده از سایر مجوزهای دریافتی اقدام به سرقت از حساب کاربر می‌نماید. این بدافزار دارای قابلیت‌های جدیدی مانند دریافت لیست اپلیکیشن‌های نصب شده، اجرای مخفیانه USSD کدها و گرفتن اسکرین‌شات از صفحه اجرای بدافزار است.

 

بدافزار عدالت همراه

 

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

◽ اکتیویتی اصلی com.x.team.main

▫️کلاس ResumableSub_Activity_Create

این کلاس در فرآیند راه‌اندازی بدافزار نقش داشته و به صورت غیرهمزمان (Asynchronous) اجرا می‌شود.  راه‌اندازی اولیه اکتیویتی، درخواست مجوزها، بررسی وضعیت اینترنت و سرویس‌های گوگل و همچنین بارگذاری صفحه وب جهت انجام عملیات فیشینگ، در این کلاس به صورت گام‌به‌گام انجام و اجرا می‌شود. این کلاس می‌تواند اجرای خود را متوقف نموده و پس از دریافت نتیجه از متدهای دیگر (مانند درخواست مجوز یا دریافت داده از سرور) دوباره از قسمتی که متوقف شده بود روند اجرای خود را ادامه دهد.

بدافزار در این کلاس در متد resume حالت‌های مختلف را مدیریت کرده و از طریق switch-case و مقدار متغیر state مشخص می‌کند که در چه مرحله‌ای از فرآیند اجرا قرار دارد. بدافزار همچنین در دو حالت اجرای خود  را متوقف می‌کند:

  • در شبیه‌سازهایی که از پردازنده Intel استفاده می‌کنند.
  • در حالتی که با استفاده از متد getSimCountryIso کد کشور مربوط به سیم‌کارت دریافت می‌شود و مقدار بازگشتی “ir” نباشد، پیغام خطایی به کاربر نمایش داده شده و بدافزار بسته می‌شود.

▫️کلاس ResumableSub_GetConfigs

این کلاس وظیفه ارسال درخواست به سرور C2 و دریافت تنظیمات بدافزار  را دارد. اطلاعات موجود در این تنظیمات ممکن است شامل دستورات کنترلی، آدرس‌های جدید سرور، پورت‌های ارتباطی و یا سایر داده‌های حساس مورد نیاز جهت اجرای عملیات مخرب باشد. آدرس سروری که بدافزار  درخواست اولیه  را به آن ارسال می‌کند از متد vvvvvvvvvvvvv7_ دریافت می‌شود. درخواست اولیه به منظور به دست آوردن آدرس اصلی برای بارگذاری در Web View بدافزار  ارسال می‌شود.

کلاس ResumableSub_GetConfigs

این متد تلاش می‌کند آدرس سرور را از فایل Domain.txt بخواند. در صورت نبود این فایل، از متد vvvvvvvvvvvv0_ مقدار آن را دریافت می‌کند. در اینجا آدرس سرور در متغیر v5_ ذخیره شده و همچنین در فایل Domain.txt ذخیره می‌شود. دراین متد کد داده‌ شده برای رمزنگاری و سپس رمزگشایی دامنه‌های مخفی سرور C2 بدافزار  را نشان می‌دهد.

در نهایت مقدار v5_ بعد از رمزگشایی، به صورت زیر و شامل لیستی از آدرس‌های اصلی سرور C2 بدافزار است که در فایل Domain.txt نیز نوشته می‌شود.

https[:]//api0.x-pdomain-zrc9w6pj3a.store/X.php A-K-U-M-A
https[:]//api1.x-pdomain-zrc9w6pj3a.store/X.php A-K-U-M-A
https[:]//api2.x-pdomain-zrc9w6pj3a.store/X.php A-K-U-M-A
https[:]//api3.x-pdomain-zrc9w6pj3a.store/X.php A-K-U-M-A
https[:]//api4.x-pdomain-zrc9w6pj3a.store/X.php

پس از ارتباط اولیه با سرور، بدافزار تنظیمات بیشتری از سرور C2 خود دریافت می‌کند. این اطلاعات به‌ صورت یک محتوای JSON کامل در فایل config.json که توسط بدافزار در مسیر data/data/com.x.team/files ایجاد شده ذخیره می‌گردد. در این فایل، تنظیمات اجرایی بدافزار(پیکربندی اصلی بدافزار) شامل دستورات، مجوزها و تنظیمات امنیتی ذخیره می‌شوند که معمولا بعد از خواندن فایل Domain.txt ایجاد شده و به بدافزار می‌گویند چگونه رفتار کند. به طور دقیق این تنظیمات شامل موارد زیر است:

  • آدرس صفحه فیشینگ بدافزار جهت بارگذاری در Web View (https[:]//ikdplc.org/c/app.php)
  • دسترسی‌های درخواستی
  • درخواست‌های پنل مدیریتی بدافزار
  • اقدامات اولیه بدافزار که باید انجام شوند (مانند جمع‌آوری اطلاعات بانکی و مخاطبان)
  • تنظیمات ارتباطات آفلاین

▫️ کلاس ResumableSub_ScreenShot

هدف اصلی بدافزار در این کلاس گرفتن اسکرین‌شات از گوشی قربانی و ارسال آن به سرور خود است. در این کلاس از Activity جاری بدافزار اسکرین‌شات گرفته می‌شود و تصویر مذکور (Bitmap) در فایل AkumaScreenShot.jpg ذخیره می‌شود. سپس این فایل با استفاده از متد send_screen_ به سرور بدافزار ارسال می‌شود. برخی از  اطلاعات ارسالی به همراه فایل مربوطه، شامل موارد زیر است:

  • نوع عملیات (در اینجا “screenshot“)
  • مدل دستگاه
  • نسخه اندروید
  • پورت مورد استفاده بدافزار
  • وضعیت صفحه نمایش (روشن/خاموش)

کلاس ResumableSub_ScreenShot

🔸 سرویس com.x.team.r4

سرویس r4 به عنوان یک سرویس Foreground در بدافزار فعالیت می‌کند و چندین عملکرد مخرب دارد. بدافزار با استفاده از متد vvvvvvvvvvvvvvvvvvvvvv0_ اعلانی جعلی با عنوان “تنظیمات” و متن “در حال دریافت داده‌ها” برای پنهان‌کاری به کاربر نمایش می‌دهد. بدافزار از این طریق سرویس را در پس‌زمینه فعال نگه می‌دارد و از بسته شدن آن جلوگیری می‌کند. بدافزار ابتدا با متد changeicon_ آیکون برنامه بدافزار  را به settings تغییر می‌دهد تا کاربر متوجه مخرب بودن آن نشود. سپس آیکون اصلی بدافزار با فراخوانی متد hideicon_ پنهان می‌شود تا حذف بدافزار برای کاربر سخت‌تر شود. همچنین، با تنظیم یک رسیور، هر ۳ ثانیه بدافزار  را بررسی می‌کند تا در صورت نیاز آن را مجدداً اجرا کند.

🔸 سرویس com.x.team.r6

این سرویس وظیفه اجرای یک فرآیند خودکار به نام AutoTar  را دارد که از طریق اعلان(notification) پنهان در Foreground اجرا می‌شود و در صورت بستن اجباری توسط سیستم، دوباره اجرا می‌شود. این سرویس می‌تواند داده‌هایی را به سرور بدافزار ارسال کند. با استفاده از متد vvvvvvvvvvvvvvvvvvvvvvvv3_، اعلان جعلی ایجاد می‌شود که در تنظیمات سیستم به صورت یک فرآیند به‌روزرسانی به نظر می‌رسد. در ادامه بدافزار با استفاده از متد runautotar_ یک فرآیند خودکار  را اجرا می‌کند که مسئول ارسال اطلاعات دستگاه به سرور بدافزار و سپس ارسال پیامک‌های مخرب به مخاطبان قربانی است. بدین صورت که پارامتر ورودی str در متد، حاوی متن پیامکی است که قرار است به مخاطبین کاربر ارسال شود، سپس با استفاده از متد send_autotarstart_ اطلاعات دستگاه قربانی شامل Android ID، مدل گوشی، پورت ارتباطی، زمان درخواست و شناسه پیام به سرور بدافزار ارسال می‌شود. پس از ۳۰ ثانیه تأخیر، متد vvvvvvvv5_ اجرا شده که پیامک مخرب را به لیست مخاطبین گوشی قربانی ارسال می‌کند و بعد از ارسال پیامک‌های مخرب، سرویس موقتا متوقف می‌شود تا در پس‌زمینه مخفی بماند.

🔸 رسیور com.x.team.firebasemessaging

این رسیور با نام firebasemessaging از طریق Firebase Cloud Messaging (FCM) پیام‌های سرور C2 را دریافت و پردازش می‌کند. در واقع به عنوان کانال ارتباطی بین بدافزار و سرور بدافزار عمل می‌کند. این پیام‌ها دستورات مخربی مانند ارسال پیامک از گوشی قربانی، دریافت اطلاعات بانکی و کارت‌های اعتباری، ارسال لیست مخاطبین، دریافت پیامک‌ها، اطلاعات برنامه‌های نصب‌شده و اجرای کد USSD برای سرقت موجودی حساب را اجرا می‌کنند. رسیور مذکور از طریق متد resume (درون کلاس ResumableSub_ProcessFCMMessage) دستورات مد نظر مهاجم  را که از سرور Firebase دریافت، پردازش و اجرا می‌کند.

تعدادی از دستورات دریافتی و عملکرد آنها به شرح زیر است:

  • oneping: ارسال اطلاعات کلی گوشی کاربر شامل مدل، شناسه اندروید، لیست برنامه‌ها، پیامک‌های بانکی، مخاطبین و…
  • allping: ارسال اطلاعات جامع از وضعیت دستگاه
  • mutephone: بی‌صدا کردن گوشی قربانی
  • normalphone: بازگرداندن گوشی به حالت عادی
  • fullinformationارسال اطلاعات کامل دستگاه شامل پیامک‌ها، تماس‌ها، مخاطبین، و اطلاعات برنامه‌های نصب‌شده
  • AppList: ارسال لیست برنامه‌های نصب‌شده روی گوشی
  • screenshot: گرفتن اسکرین‌شات از صفحه اجرای بدافزار و ارسال به سرور
  • putdomain: تغییر آدرس سرور C2 بدافزار
  • hideicon: پنهان‌سازی آیکون برنامه برای مخفی‌کاری
  • unhideicon: بازگرداندن آیکون برنامه به حالت عادی
  • changeicon: تغییر آیکون برنامه برای جلوگیری از شناسایی توسط کاربر
  • BankInformation: سرقت پیامک‌های بانکی و اطلاعات حساب بانکی قربانی
  • CardNumbers: استخراج شماره کارت‌های بانکی قربانی
  • lastmessage: دریافت آخرین پیامک‌های ارسال‌شده و دریافتی
  • BankSMS: استخراج پیامک‌های بانکی از صندوق ورودی
  • inboxSMS: دریافت تمام پیامک‌های ورودی
  • outboxSMS: دریافت تمام پیامک‌های ارسال‌شده
  • getphones: دریافت شماره تلفن‌های ذخیره‌شده در گوشی
  • updatesimcard: دریافت اطلاعات سیم‌کارت (مانند شماره IMSI و ICCID)
  • send_default: ارسال پیامک از شماره پیش‌فرض گوشی
  • send_soltارسال پیامک از سیم‌کارت دوم گوشی (در گوشی‌های دو سیم‌کارته)
  • send_contacts: ارسال لیست مخاطبان به سرور
  • offlinemodeon: فعال‌سازی حالت آفلاین بدافزار ( ارسال اطلاعات به سرور از طریق پیامک)
  • offlinemodeoff: غیرفعال‌سازی حالت آفلاین
  • detect_saderat: شناسایی پیامک‌های مربوط به بانک صادرات
  • detect_target: شناسایی پیامک‌های دریافتی از شماره‌های خاص
  • detect_exchange: شناسایی اپلیکیشن‌های مربوط به رمز ارز که بر روی گوشی نصب شده‌اند
  • runussdcode: اجرای کدهای USSD بر روی گوشی قربانی

🔷 متد _send_bankdata

این متد پیامک‌های بانکی کاربر را بررسی می‌کند و اطلاعاتی مانند موجودی حساب، نام بانک، شماره حساب و شماره کات را با استفاده از متد getvvvvvvvvv2_ استخراج کرده و  به همراه سایر اطلاعات مربوط به کاربر (مثل مدل گوشی قربانی، شناسه گوشی، اپراتور گوشی کاربر، وضعیت آیکون بدافزار و وضعیت صفحه نمایش) به سرورخود ارسال می‌کند. در متد getvvvvvvvvv2_ ،مطابق تصویر زیر، ابتدا لیست پیامک‌های دریافتی استخراج شده و سپس تک‌تک پیامک‌های کاربر برای پیدا کردن پیام‌های بانکی ،به همراه متن و شماره فرستنده پیامک، بررسی می‌شود. در ادامه با استفاده از متد detect_bankname_ نام بانک را از متن پیامک و شماره فرستنده تشخیص می‌دهد. نام بانک فرستنده پیام با استفاده از یک سری کلید واژه و Regex به دست می‌آید. سپس بدافزار با استفاده از متد bank_findbalance_ موجودی حساب را از پیامک‌های بانکی استخراج می‌کند، بدین صورت که اگر در متن پیامک عباراتی مانند “موجودی” یا “مانده” وجود داشته باشد، مقدار پس از آن را به‌عنوان موجودی حساب شناسایی می‌کند. با استفاده از متد detect_bankaccountnumber_ نیز شماره حساب یا شماره کارت از متن پیامک استخراج می‌شود، بدین صورت که اگر در پیامک عباراتی مانند “حساب”، “برداشت از” و یا “کارت” شناسایی شود، بدافزار سعی می‌کند شماره‌ بعد از این عبارات را استخراج کند.  در نهایت اطلاعات حساب و موجودی برای متد send_bankdata_ ارسال می‌شود.

متد _send_bankdata

 

 🔷 متد sendUssdRequest

در این متد بدافزار با استفاده از کلاس TelephonyManager درخواست‌های USSD ارسال می‌کند. این متد متغیر s که شامل کدهایی مانند #123* یا #1*140* است را به عنوان درخواست USSD ارسال می‌کند. درخواست ارسال شده یک پاسخ از سمت اپراتور دریافت خواهد کرد که در این صورت، متد onReceiveUssdResponse اجرا خواهد شد. مقدار متغیر charSequence0 نیز حاوی پاسخ دریافتی از سمت اپراتور گوشی همراه خواهد بود. سپس این پاسخ برای متد onreceiveussdresponse_ در بدافزار ارسال می‌شود و در ادامه بدافزار بررسی می‌کند که آیا سیم‌ کارت فعالی بر روی گوشی وجود دارد یا خیر. اگر سیم‌ کارت فعال وجود داشته باشد، پاسخ USSD  با استفاده از متد vvvvvvvv4_ به شماره‌ مورد نظر مهاجم ارسال می‌شود.

متد sendUssdRequest

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

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

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

  • توجه داشته باشید که تمامی پیامک‌های دریافتی از سوی قوه قضائیه فقط و فقط به نام adliran است و به هیچ وجه با سرشماره شخصی و یا در فضای مجازی مثل: تلگرام ، واتساپ، بله و دیگر شبکه‌های اجتماعی ارسال نمی‌شود. همچنین پیامک‌های ارسالی توسط قوه قضائیه فاقد لینک الکترونیکی جهت پرداخت می‌باشد.
  • اپلیکیشن‌های مورد نیاز  را حتما از مارکت‌های اندرویدی معتبر دریافت کنید و نسخه‌های غیر رسمی را دانلود نکنید.
  • قابل ذکر است که هیچ گونه نیازی به واریز وجه جهت مشاهده ابلاغ الکترونیک و سهام عدالت وجود ندارد.
  • ضروری است که پیش از نصب هر اپلیکیشن‌، مجوزهای درخواستی آن را بررسی کنید.
  • از نسخه‌های غیر رسمی برنامه‌ها استفاده نکنید.