Trojan.Android.SmsPay.Caco333

شرح کلی

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

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

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

خانواده بدافزاری SmsPay.Caco333 چیست؟

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

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

این برنامه‌ها هم به صورت درگاه اینترنتی و هم به صورت اپلیکیشن طراحی شده‌اند.

  • درگاه اینترنتی

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

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

Trojan.Android.SmsPay.Caco333

 

لینک اصلی “پیگیری شکایات” قوه قضایه که به آدرس “https://eblagh.adliran.ir” می‌باشد:

Trojan.Android.SmsPay.Caco333-2

 

لینک جعلی “پیگیری شکایات” به آدرس “hxxps[:]//eblagh-app[.]gq” می‌باشد، پس از ورود به این لینک جعلی و وارد کردن اطلاعات مربوط به کد ملی و شماره تماس، این اطلاعات به سمت سرور آلوده ارسال می‌شود. حتی در صورتی که شماره تماس اشتباه وارد شود نیز مشکلی پیش نمی‌آید و کاربر به مرحله بعد ارجاع می‌شود.

Trojan.Android.SmsPay.Caco333-3

 

  • نمونه اپلیکیشن

در اینجا به بررسی اپلیکیشن جعلی “عدالت همراه” می پردازیم.

Trojan.Android.SmsPay.Caco333-4

توضیحات فنی

این برنامه بارگزاری صفحات نمایش داده شده و همچنین دریافت اطلاعات کاربر را از طریق ارتباط آنلاین با سرور آلوده خود (hxxps[:]//eblagh-app[.]gq) انجام می‌دهد. بدافزار برای ارتباط با سرور از کتابخانه httputils استفاده می‌کند و در نهایت با متد PostString در قالب فایل php اطلاعات جمع آوری شده از گوشی کاربر را به سمت سرور خود ارسال می‌کند.

اکتیویتی اصلی caco333.ca.main

اپلیکیشن به محض راه اندازی از مسیر assets برنامه، دو فایل با نام‌های url.txt و Lmain.bal را واکشی می‌کند.

  • url.txt: محتویات فایل شامل لینک “hxxp[:]//eblagh-iranian[.]cf/winston/pay/mellat/index.html ” می‌باشد. اکتیویتی‌های برنامه همگی از نوع وب ویو تعریف شده‌اند. بلافاصله پس از راه اندازی برنامه، از کاربر مجوزهای دسترسی “android.permission.RECEIVE_SMS” ،”android.permission.READ_SMS” و ” android.permission.WRITE_SMS ” را دریافت می‌کند. در ادامه پیغامی به کاربر نمایش داده می‌شود که کارمزد مشاهده ابلاغیه مبلغ بیست هزار ریال است و با کلیک کاربر بر روی “مشاهده ابلاغ الکترونیک” بلافاصله کاربر به صفحه جعلی پرداخت درگاه بانکی ملت “hxxp[:]//eblagh-iranian[.]cf/winston/pay/mellat/payment.mellat/index.php” ارجاع می‌شود. درحالی که، آدرس صفحه‌ای که به کاربر در اکتیویتی نمایش داده می‌شود، ” https://bpm.shaparak.ir/pgwchannel/pay.mellat?RefId=66CF529D55E2BFA1 ” است که در حقیقت یک image ارسالی از سمت سرور بدافزار برای نمایش در اکتیویتی می‌باشد. ‫‏‏‫مهاجم، URL را به جای باز کردن در مرورگر مستقیما در همان وب ویو باز می‌کند که ‫ URL از دید کاربر پنهان است.

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

  • Lmain.bal: اطلاعات مربوط به (layout)، نحوه قرارگیری ویجت‌های موجود در اکتیویتی می‌باشد. در ادامه سرویس‌های زیر راه اندازی می‌شوند:

سرویس caco333.ca.install_caco333

بلافاصله بعد از بارگزاری layout مربوط به اکتیویتی، سرویس install_caco333 برای دانلود اطلاعات صفحه و نمایش در اکتیویتی راه اندازی می‌شود. بدافزار بررسی می‌کند که فایل برنامه به درستی نصب شده باشد تا مابقی عملیات مخرب نیز به درستی انجام شوند. به مسیر نصب برنامه (data/data/caco333.ca/files) رفته و فایلی با نام “29209 dj20d392j3dk0jirjf0i3jf203” را جستجو می‌کند. در صورت موجود بودن فایل، برنامه ادامه پیدا می‌کند و در غیر این صورت فایلی با نام “29209dj20d392j3dk0jirjf0i3jf203” و مقدار “29209dj20d392j3dk0jirjf0i3jf203” در مسیر نصب برنامه (data/data/caco333.ca/files) ایجاد می‌کند.

با استفاده از متد ()localhttpjob2._download از سرور بدافزار، فایل PHP مورد نظر را دانلود کرده و بعد از دانلود شدن (JobDone)، کل سورس‌ها را GetString می‌کند و در یک متغییر رشته‌ای به نام install_caco333._vvvvvvvvv4 قرار می‌دهد. حالا با در دست داشتن سورس کد، GetElement کردن مقادیر با کتابخانه WebViewExtras به راحتی انجام می‌شود. ابتدا ارسال مقدار رشته‌ای “open” بررسی می‌شود که در این حالت اطلاعات مهمی که از گوشی کاربر جمع آوری شده، در قالب یک متغییر رشته‌ای به سرور بدافزار با استفاده از متد postString ارسال می‌شود.

model=مدل گوشی&operator=اپراتور شبکه&port=(پارامتر کد شده)&androidid=شناسه گوشی

سرویس Firebasemessaging

این سرویس در واقع پل ارتباطی بدافزار و گوشی کاربر می‌باشد. اعلانات ارسالی از طریق Firebase گوگل را با متد ()fm_messagearrived دریافت کرده و دستورات را اجرا می‌کند:

  • اگر “cmd = clipboard” و “”time =”text” + “android_id” باشد: اقدام به جمع آوری محتوای کپی شده در کلیپ بورد، ساعت دقیق دستگاه و ارسال این اطلاعات به سرور بدافزار می‌کند.
  • اگر “cmd = vibrate” باشد: مدت زمانی که گوشی بر روی ویبره قرار می‌گیرد را بررسی می‌کند.
  • اگر “cmd = hide” و “”time = “apk” + “android_id” باشد: آیکون برنامه خود در گوشی کاربر مخفی و سرویس برنامه خود را در پس زمینه بالا نگه می‌دارد. همچنین، پیغام مخفی سازی آیکون برنامه به همراه “android_id” که مشخصه گوشی کاربر است، به سرور بدافزار ارسال می‌شود.
  • اگر “time = phone” و “cmd = mute” باشد: اقدام به بی صدا کردن گوشی (بدون ویبره) می‌کند.
  • اگر “time = phone” و “cmd = vibr” باشد: اقدام به بی صدا کردن گوشی (با ویبره) می‌کند.
  • اگر “cmd = app” و “time = get” باشد: اقدام به جمع آوری لیست کاملی از اطلاعات تمام برنامه‌های نصب شده (نام برنامه- packageName- versionname- versioncode) کرده و آنها را به سرور خود ارسال می‌کند.
  • اگر “cmd = List” باشد: اقدام به جمع آوری مدل گوشی‌، شناسه دستگاه و اپراتور شبکه می‌کند.

model=مدل گوشی&operator=اپراتور شبکه &port=(پارامتر کد شده)&androidid=شناسه گوشی

  • اگر “cmd = crash” و “time = app” باشد: به طور خودکار از برنامه‌اش خارج می‌شود.
  • اگر “cmd = sendmessage” باشد: با استفاده از کلاس PNSMS و متد ()send، مهاجم امکان ارسال پیامک طولانی (SMS_SEND) و دریافت گزارش ارسال پیامک (SMS_DELIVERED) را دارد. همچنین، می‌تواند گزارش وضعیت پیامک‌ها را برای زمانی که امکان ارسال پیامک نیست بررسی کند. مانند زمانی که گوشی در وضعیت “No service” باشد، “Null PDU” زمانی که متن پیام طولانی باشد و یا “Radio off” که امکان ارسال پیامک نیست. مهاجم امکان ارسال پیامک به شماره تلفن (خاص) را نیز دارد. زمانی که دستور “targetaddress” از سمت سرور بدافزار ارسال می‌شود، مهاجم می‌تواند به شماره مشخصی پیامک ارسال کرده و گزارش ارسال آن را که به درستی انجام شده یا نه، دریافت کند.

در نتیجه مجموعه عملکرد PNSMS – ارسال پیامک طولانی و دریافت گزارش ارسال

  • ارسال پیامک کوتاه و طولانی
  • دریافت متن خطا در ارتباط با ارسال نشدن پیامک (مانند حالت پرواز بودن گوشی، نداشتن آنتن، نداشتن شارژ کافی و …)
  • دریافت گزارش رسیدن پیامک یا نرسیدن به مخاطب
  • تمامی نتایج را هم می‌تواند مجزا به ازای هر مرحله مختص پیامک‌های طولانی دریافت کند.
  • ارسال پیامک به یک شماره خاص و دریافت گزارش ارسال شدن یا نشدن آن

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

  • True: در صورتی که به درستی ارسال شود، پیغام “&success=sms send Now From” به همراه مدل گوشی کاربر به سمت سرور بدافزار ارسال می‌شود.
  • False: در صورتی که به درستی ارسال نشود، پیغام “&success=sms can not send From” به همراه مدل گوشی کاربر به سمت سرور بدافزار ارسال می‌شود.

سرویس caco333.ca.sms_caco333

با توجه به اکشن “android.provider.Telephony.SMS_RECEIVE” که برای دریافت کننده “sms_caco333$sms_caco333_BR” تعریف شده است، به محض دریافت پیامک، بدافزار سرویس خود را راه اندازی کرده و اقدام به جمع آوری اطلاعات پیامک‌های دریافتی می‌کند که این اطلاعات شامل:

محتوای پیامک‌های دریافتی، شماره تلفن ارسال کننده پیامک، مدل گوشی کاربر، اپراتور شبکه و تنظیمات گوشی می‌باشد.

number=(شماره تماس ارسال کننده پیامک)&body=(محتوای پیام دریافتی )&model=(مدل گوشی کاربر)&operator=(اپراتور شبکه )&androidid=(شناسه گوشی کاربر)&port=

در نهایت نیز به منظور دسترسی کامل به همه پیام‌های دریافتی/ارسالی قربانی سرویس Fullsms_caco333 را راه اندازی می‌کند:

سرویس fullsms_caco333

با توجه به اکشن “android.intent.action.BOOT_COMPLETED” که برای دریافت کننده “fullsms_caco333$fullsms_caco333_BR” تعریف شده است، به محض بوت سیستم عامل اندروید، بدافزار سرویس خود را راه اندازی کرده، اطلاعات زیر را از پیامک‌های ارسالی و دریافتی جمع آوری کرده و به صورت فایل در ربات تلگرام خود آپلود می‌کند:
باتوجه به مقادیر موجود در کلاس “anywheresoftware.b4a.phone.SmsWrapper”:

  • اگر مقدار “personId != -1 ” باشد، به ازای رشته‌های “Receive” و “Sent” ارسالی از سمت سرور، به متن تمام پیامک‌های کاربر دسترسی کامل پیدا می‌کند و لیستی از اطلاعات آنها که (شامل نوع پیام، متن پیام، شماره تماس، تاریخ دریافت/ارسال و آدرس آن می‌باشد) ایجاد می‌کند و آنها را با تاریخ همان روز به صورت فایل متنی “txt.” در مسیر نصب فایل (data/data/caco333.ca/files) ذخیره می‌کند. از کتابخانه”PNUploadFile”، برای آپلود بدون محدودیت عکس یا فایل در هاست استفاده می‌کند. مهاجم فایل متنی مورد نظر را به همراه اطلاعات تکمیلی که شامل (تاریخ، ساعت، مدل دستگاه، ایدی دستگاه) می‌باشد، با استفاده از متد POST و مشخصه “androidid” در ربات تلگرام خود آپلود می‌کند.
  • API بات تلگرام: داراي متدهاي مختلفي به منظور تبادل اطلاعات مي‌باشد از قبيل:

– SendDocument: متدي است براي ارسال فايل‌ها (gif-zip-pdf) به ربات تلگرام كه داراي پارامترهاي مختلفي مانند chatid است كه توسط آن مشخصه unique كاربر و يا username كانال مورد نظر را تنظيم مي‌كند.

– getUpdate: متدي براي آپديت نگه داشتن ربات تلگرام می‌باشد. آدرس ربات تلگرام خود را با استفاده از متد “SendDocument” ،“Token”و “chatid” که از قبل درون فایل‌های “token.txt” و “chatid.txt” نوشته شده بود، مشخص می‌کند:

Trojan.Android.SmsPay.Caco333-5

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

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

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