Trojan.Android.DroidLock. DXK

شرح کلی

نوع: تروجان (Trojan)

درجه تخریب: متوسط

میزان شیوع: متوسط

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

  • (Padvish) Trojan.Android.DroidLock.DXK
  • (Kaspersky) HEUR:Trojan-Banker.AndroidOS.Banbra.aw
  • (Avira) Android:Evo-gen [Trj]
  • (ESET) Android/Spy.Banker.DXL Trojan

تروجان چیست؟

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

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

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

بدافزار DroidLock یک خانواده‌ پیشرفته‌ بدافزاری در سیستم‌عامل اندروید است که از اواخر سال ۲۰۲۵ کشف شده و عملیات گسترده‌ای در جهت سرقت اطلاعات، کنترل کامل دستگاه قربانی و باج‌گیری انجام می‌دهد.

روش انتشار DroidLock معمولاً از طریق سایت‌های فیشینگ و فایل‌های APK جعلی است که خود را به‌ عنوان برنامه‌های قانونی مانند ارائه‌دهنده خدمات مخابرات یا خدمات شناخته‌شده جا می‌زند. این بدافزار افزون بر قرار گرفتن در دسته Lockers، ویژگی‌های یک تروجان دسترسی از راه دور (RAT) را نیز از خود نشان می‌دهد.

توضیحات فنی

علائم آلودگی

  • دريافت مجوزهاي خطرناك مانند دسترسی به پیامک‌ها، مخاطبین، لیست برنامه‌های نصب شده ، دوربین و غیره
  • کند شدن دستگاه
  • مصرف بالای اینترنت
  • ناتوانی کاربر در حذف برنامه
  • تغییرات ناگهانی نور دستگاه
  • قفل شدن کامل دستگاه
  • نمایش صفحات جعلی مانند fake system update و یا overlay روی برنامه ها جهت سرقت pattern یا گرفتن credential

شرح عملکرد

همان‌طور که در تصاویر زیر قابل مشاهده است، پس از نصب بدافزار DroidLock، برنامه با نمایش صفحات فریبنده مانند بروزرسانی‌ با ظاهر اصلی اعلان گوگل پلی، کاربر را فریب می‌دهد تا برنامه اصلی بدافزار را نصب کند و با اینکار payload اصلی بدافزار نصب می شود.

پس از نصب، و دریافت دسترسی Accessibility Services توسط خود کاربر، بدافزار با استفاده از این سرویس دسترسی‌های حساس، به‌ویژه Device Admin را دریافت می کند.

وقتی بدافزار تمامی دسترسی های مورد نیاز خود را دریافت کرد، DroidLock می‌تواند تقریباً هر جنبه‌ی دستگاه را در اختیار بگیرد: از قفل کردن صفحه نمایش، تغییر PIN یا الگوی قفل تا دسترسی به پیام‌ها، تماس‌ها، مخاطبین، میکروفون و دوربین؛ حتی می‌تواند دستگاه را به تنظیمات کارخانه بازگرداند.

همچنین یکی از قابلیت‌های شاخص DroidLock بهره‌گیری از مکانیزم کنترل از راه دور مبتنی بر VNC (Virtual Network Computing) است که امکان کنترل و مشاهدهٔ کامل دستگاه از راه دور را فراهم می‌کند.

بدافزار DroidLock

 

◼️ اکتیویتی com.example.xxx.podaxonial

اکتیویتی podaxonial عملاً نقش دروازه ورود اولیه برای مهاجم جهت دستیابی به دستگاه قربانی را ایفا می‌کند. عملکرد اصلی آن بدین صورت است که با راه‌اندازی یک WebView، محتوای HTML ذخیره‌شده در پوشه Asset بدافزار را بارگذاری می‌کند.

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

 اکتیویتی com.example.xxx.podaxonial

🔷 سرویس timelia

سرویس timelia یک Foreground Service است که نقش اصلی در پیاده‌سازی قابلیت VNC در برنامه را دارد. این سرویس با استفاده از VirtualDisplay (برای ایجاد یک نمایشگر مجازی از صفحه دستگاه) و ImageReader (برای دریافت فریم‌های تصویری از آن نمایشگر) اقدام به دریافت تصاویر از صفحه نمایش دستگاه می‌کند.

تصاویر صفحه به‌صورت دوره‌ای (حدوداً هر یک ثانیه) در یک thread مجزا دریافت شده و پس از انجام پردازش‌های لازم، برای ارسال آماده می‌شوند.

هم‌زمان با اجرای سرویس، یک اتصال WebSocket نیز برقرار می‌شود که نشان‌دهنده ارسال تصاویر ثبت‌شده به سرور است. این رفتار بیانگر آن است که سرویس مذکور در قالب یک ابزار کنترل از راه دور (RAT)، امکان مشاهده صفحه نمایش دستگاه را فراهم می‌کند.

▪️متد forenent

این متد وظیفه راه‌اندازی فرآیند ثبت تصویر از صفحه نمایش را بر عهده دارد. در ابتدا، با استفاده از سرویس سیستمی WindowManager (برای دسترسی به Display یا همان صفحه‌نمایش واقعی دستگاه) و سرویس سیستمی DisplayMetrics (برای استخراج مشخصات عددی صفحه مانند عرض، ارتفاع و تراکم پیکسلی (DPI))، اطلاعاتی مانند عرض، ارتفاع و تراکم پیکسلی صفحه استخراج می‌شود تا تنظیمات capture دقیق انجام شود.

سپس منابع قبلی (نمونه های ساخته شده از objectهای کلاس) پاکسازی شده و یک نمونه از ImageReader ایجاد می‌شود که جهت دریافت فریم‌های تصویری از صفحه استفاده می‌شود. در ادامه، با استفاده از MediaProjection API یک VirtualDisplay ساخته می‌شود و خروجی آن به ImageReader متصل می‌گردد.

به این ترتیب، محتوای صفحه نمایش به‌صورت تصویر در اختیار بدافزار قرار می‌گیرد تا در مراحل بعدی پردازش یا ارسال شود.

متد forenent

🔷 سرویس MyAccessibilityService

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

بخشی از وظایف مخرب این سرویس عبارت‌اند از:

  • بدافزار شامل ماژول keylogger است و رویدادهای UI مثل کلیک، Focus و تغییر متن را دریافت و ثبت می‌کند .
  • ساختار کامل صفحه (Accessibility tree / XML) را استخراج و ارسال می‌کند.
  • امکان کنترل UI را دارد؛ مثل تایپ خودکار، جایگذاری متن یا عکس، و اجرای swipe.
  • روی صفحه نمایش، overlay (صفحه‌های مخفی/جعلی یاWebView )نمایش می‌دهد.
  • از WebSocket برای ارسال داده‌ها به سرور استفاده می‌کند.
  • برای ماندگاری، battery optimization را غیرفعال می‌کند.

در مجموع این سرویس، یک مولفه برای مانیتورینگ و کنترل کامل UI با قابلیت ارسال داده به بیرون است.

▪️متد loggerEvents

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

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

متد loggerEvents

▪️متد showWebOverlay

این متد که همان بخش مربوط به حالت باج‌افزاری بدافزار است در اصل یک Overlay تمام‌‌صفحه از طریق سرویس سیستمی WindowManager روی سیستم ایجاد می‌کند و داخل آن یک WebView قرار می‌دهد که یک صفحه را از راه دور لود می‌کند.

ابتدا  WindowManager از سیستم گرفته می‌شود تا امکان نمایش View خارج از محدوده برنامه (روی کل UI اندروید) فراهم شود. سپس بررسی می‌کند که آیا قبلاً این overlay ساخته شده یا هنوز به View فعال متصل است یا خیر؛ اگر شرط برقرار نباشد، آن را دوباره می‌سازد.

سپس یک WebView ساخته می‌شود و تنظیمات کامل مرورگر وب روی آن فعال می‌گردد ( JavaScript، DOM Storage و حالت نمایش تمام‌صفحه). سپس یک URL خارجی از سرور C2 (hxxp://161[.]132[.]50[.]40:42591/lock) داخل آن بارگذاری می‌شود.

در ادامه صفحه دستگاه اندازه گرفته می‌شود و یک LayoutParams (کلاسی برای تعیین مشخصات و رفتار پنجره مانند عرض، ارتفاع، نوع پنجره، سطح دسترسی و فلگ‌های کنترلی آن) تمام‌صفحه برای نمایش overlay تنظیم می‌شود (نوع پنجره 2032 که معمولاً برای پنجره‌های سیستمی/سطح بالا استفاده می‌شود). در نهایت این WebView به WindowManager اضافه می‌شود و روی کل سیستم نمایش داده می‌شود و یک لاگ از فعال شدن آن ثبت می‌گردد.

متد showWebOverlay

▪️کلاس myoglobulin

کلاس myoglobulin به‌عنوان ماژول ارتباطی (C2 Client) بدافزار عمل می‌کند. این کلاس پس از فعال‌سازی، یک اتصال WebSocket پایدار با سرور مهاجم برقرار کرده و به‌عنوان کانال اصلی تبادل داده بین دستگاه قربانی و سرور فرماندهی (C2) استفاده می‌شود.

این ارتباط دو طرفه امکان ارسال و دریافت داده‌ها را فراهم کرده و قابلیت‌های زیر را پشتیبانی می‌کند:

  • ارسال داده های Keylogger: ارسال داده‌های ثبت‌شده از ورودی کاربر (شامل متن، رویداد و نام اپلیکیشن)
  • جمع‌آوری اطلاعات سیستم: استخراج لیست اپلیکیشن‌های نصب‌شده به همراه نام و آیکون
  • اجرای دستورات از راه دور: اجرای اپلیکیشن‌ها از طریق دریافت فرمان
  • تغییر تنظیمات دستگاه: مانند تنظیم روشنایی صفحه
  • انتقال داده‌های تصویری: دریافت تصاویر (مانند اسکرین‌شات یا عکس دوربین) از سایر ماژول‌ها و ارسال آن‌ها به سرور
  • پایداری ارتباط: پیاده‌سازی مکانیزم reconnect برای حفظ اتصال در شرایط ناپایدار شبکه

تمام داده‌ها که از کل بخش‌های بدافزار جمع‌آوری شده در قالب JSON بسته‌بندی شده و از طریق WebSocket به آدرس سرور C2 (ws://161[.]132[.]50[.]40:4747/ws) ارسال می‌شوند.

▪️متد CONNECTWEBSOCET

در این بخش از کد، فرآیند برقراری ارتباط با سرور فرماندهی و کنترل (C2) از طریق پروتکل WebSocket پیاده‌سازی شده است. سپس یک درخواست HTTP به سمت آدرس سرور از پیش رمزنگاری شده (در اینجا 161.132.50.40:4747) ارسال می‌گردد تا تونل ارتباطی دو طرفه WebSocket برقرار شود.

متد WEBSOCKET CONNECTION

▪️کلاس neist

کلاس neist به عنوان ماژول مرکزی فرماندهی و کنترل (C2 Handler) در این بدافزار عمل می‌کند. این کلاس نقش “مغز” سیستم را دارد که تصمیم می‌گیرد کدام فرمان به کدام بخش از بدافزار ارجاع داده شود.

در واقع، وظیفه اصلی آن دریافت دستورات در قالب JSON از طریق ارتباطات Websocket و Parse کردن آن‌ها و تبدیل این دستورات به اکشن‌های اجرایی در محیط برنامه است.

1️⃣ قابلیت‌های تخریبی و سوءاستفاده از سیستم: این کلاس طیف گسترده‌ای از عملیات‌ مخرب را مدیریت می‌کند که به دو دسته اصلی تقسیم می‌شوند:

▪️تعاملات جعلی (UI Interaction):با سوءاستفاده از سرویس دسترسی‌پذیری Accessibility Service، این کلاس دستوراتی نظیر کلیک خودکار، کشیدن روی صفحه (Swipe)، باز کردن قفل دستگاه و تایپ متن را اجرا می‌کند تا بتواند تعاملات کاربر را جعل کرده و به اطلاعات حساس دست یابد.

▪️فرامین سطح بالای سیستمی: این ماژول قادر است مستقیماً دستور پاک‌سازی کامل اطلاعات دستگاه (WIPE) را صادر کند، صداهای سیستم را جهت جلوگیری از شنیدن اعلان‌ها قطع کند، با ایجاد لایه‌های بصری (Overlay) صفحه نمایش را مسدود کرده (رفتار باج‌افزاری) و یا فرآیند حذف اپلیکیشن‌های امنیتی را به صورت خودکار تایید و اجرا نماید.

2️⃣ پیش‌نیازهای دسترسی: کارایی کامل این کلاس مستلزم دو مجوز حیاتی است:
اول Accessibility Service برای جعل تعاملات انسانی و دوم Device Administrator برای اجرای فرامین سنگینی مانند Reset Factory و مدیریت قفل دستگاه. بدون این مجوزها، بخش بزرگی از کدهای این کلاس (به ویژه بخش تخریب داده‌ها) غیرفعال می‌ماند.

این بخش از کد در پاسخ به دریافت دستور WIPE از سرور C2 اجرا می‌شود. برنامه ابتدا از طریق کلاس Android DevicePolicyManager به سرویس مدیریتی سیستم دسترسی پیدا می‌کند و سپس بررسی می‌کند که آیا اپلیکیشن با استفاده از مولفه neurocity به‌عنوان Device Admin فعال شده است یا خیر.

در صورت فعال بودن این سطح دسترسی، متد wipeData(0) فراخوانی می‌شود که باعث بازگردانی دستگاه به تنظیمات کارخانه (Factory Reset) و حذف کامل داده‌های کاربر خواهد شد.

این مکانیزم به مهاجم اجازه می‌دهد تنها با ارسال یک فرمان از طریق سرور C2، اطلاعات دستگاه قربانی را از راه دور پاک‌سازی کند. با این حال، باید توجه داشت که قابلیت‌های مبتنی بر Device Admin در نسخه‌های جدید اندروید با محدودیت‌های بیشتری مواجه شده‌اند و گوگل به‌ تدریج بسیاری از سناریوهای مدیریتی قدیمی را به مدل‌های جدیدتر مانند Android Enterprise منتقل کرده است.

همچنین از Android 14 به بعد، رفتار متد wipeData برای برخی سناریوها تغییر کرده و در اپلیکیشن‌هایی که targetSdk جدید دارند ممکن است منجر به IllegalStateException شود این خطا زمانی رخ می‌دهد که سیستم اجازه اجرای عملیات wipe در context فعلی (کاربر/نقش/پالیسی) را ندهد.

به همین دلیل در APIهای جدید متد wipeDevice به‌عنوان جایگزین معرفی شده است.

کلاس neist

▪️کلاس hystricid

این کلاس منحصراً به منظور سرقت اطلاعات WhatsApp طراحی شده است. به محض دریافت دسترسی Accessibility این کلاس در پس‌زمینه فعال می‌شود.

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

این یکی از خطرناک‌ترین روش‌های دور زدن رمزنگاری End-to-End در برنامه WhatsApp است، زیرا پیام‌ها مستقیماً از روی صفحه نمایشِ بازِ کاربر خوانده می‌شوند. در ادامه، بخش‌های اصلی این کلاس مخرب بررسی می‌شوند:

بخش‌های مخرب کلاس hystricid

  • سوءاستفاده از سرویس دسترسی‌پذیری (AccessibilityService): کلاس hystricid بر پایه دریافت AccessibilityService ساخته شده است. این سرویس در اندروید در اصل برای کمک به افراد کم‌توان طراحی شده (مثلاً برای خواندن صفحه نمایش)، اما این بدافزار از آن به عنوان یک “چشم” برای خواندن و استخراج محتوای روی صفحه گوشی سوءاستفاده می‌کند.
  • سرقت لیست چت‌ها و مخاطبین (متد buildWhatsAppChatsJson): این متد صفحه اصلی WhatsApp را اسکن می‌کنند. آن‌ها نام مخاطب (conversations_row_contact_name)، آخرین پیام تبادل شده (single_msg_tv)، زمان پیام (date) و حتی مختصات عکس پروفایل (هم راستا با بخش VNC بدافزار) را استخراج کرده و در قالب یک فایل JSON با استفاده از این متد به سرور c2 بدافزار ارسال می‌کند.
  • خواندن دقیق پیام‌های خصوصی و فایل‌های مدیا (متد vinousness  (hypoplankton: این دو متد با استفاده از AccessibilityNodeInfo، ساختار UI چت را تحلیل کرده و نوع پیام را تشخیص می‌دهند (متن، تصویر، ویدیو، فایل و غیره). سپس اطلاعاتی مثل متن، عنوان، زمان (timestamp)، وضعیت ارسال (isSent) و داده‌های مدیا را استخراج کرده و در قالب JSON ساختاردهی می‌کنند.
  • ردیابی مداوم صفحه (متد: christens): این متد به رویدادهای AccessibilityEvent گوش می‌دهد. یعنی هر بار که کاربر در صفحه اسکرول کند یا صفحه جدیدی در WhatsApp باز کند، بدافزار بلافاصله درخت عناصر صفحه (Root Node) را به‌روزرسانی کرده و اطلاعات جدید را دریافت می‌کند.

 کلاس hystricid

▪️کلاس boilerful

وظیفه اصلی این کلاس جمع‌آوری جامع اطلاعات هویتی، سخت‌افزاری و موقعیت مکانی کاربر برای ایجاد یک پروفایل اختصاصی در سرور (C2) است.

در ادامه، توضیحات رسمی بخش‌های مختلف این کلاس ارائه شده است:

۱. هدف عملیاتی

هدف این کلاس، مستندسازی دقیق ویژگی‌های دستگاه قربانی است. این اطلاعات به مهاجم کمک می‌کند تا:

  • دستگاه‌های واقعی را از محیط‌های شبیه‌ساز (Emulator) جهت دور زدن سیستم‌های آنالیز امنیتی تشخیص دهد (به صورت غیر مستقیم با جمع‌آوری اطلاعات از دستگاه).
  • حملات Phishing و صفحات جعلی (Overlay) را دقیقاً متناسب با ابعاد صفحه نمایش و مدل گوشی طراحی و بارگذاری کند.
  • موقعیت جغرافیایی قربانی را برای دسته‌بندی هدفمند (Targeting) بر اساس کشور یا بانک‌های محلی شناسایی کند.

۲. قابلیت‌های فنی و استخراج داده

این ماژول از چندین متد اختصاصی جهت جمع‌آوری داده‌های حساس استفاده می‌کند:

  • شناسه‌های سخت‌افزاری :(Hardware Identifiers) استخراج IMEI برای نسخه‌های قدیمی اندروید Android ID و آدرس MAC جهت ردیابی همیشگی دستگاه حتی در صورت پاک شدن حافظه.
  • مشخصات سیستم‌عامل :(System Metadata) دریافت نسخه اندروید، مدل دقیق دستگاه، نام برند و سازنده برای شناسایی آسیب‌پذیری‌های احتمالی نسخه‌های خاص سیستم‌عامل.
  • آنالیز شبکه: (Network Profiling) تعیین نوع اتصال (wi-fi یا داده موبایل) و استخراج آدرس‌های IP محلی.
  • موقعیت‌سنجی جغرافیایی: (Geolocation via IP) استفاده از سرویس‌های خارجی برای بدست آوردن جزئیات مکانی شامل شهر، کشور و کد پستی بر اساس آدرس IP عمومی کاربر.

تعدادی از دستورات در سورس بدافزار

دستورات کاربردها
VNC فعال‌سازی کنترل از راه دور تصویری
SWIPE انجام حرکت کشیدن انگشت (Swipe) از یک نقطه به نقطه دیگر
DYNAMIC_SWIPE اجرای حرکات کششی چند مرحله‌ای و پیچیده (مانند دور زدن تست‌های امنیتی)
TEXT_INPUT وارد کردن متن در فیلدها
KEY_EVENT شبیه‌سازی کلیدهای سخت‌افزاری (Back, Home, Recent Apps)
START_APP باز کردن اجباری یک اپلیکیشن
UNINSTALL_APP حذف یک اپلیکیشن خاص
UNLOCK باز کردن قفل صفحه با استفاده از پین (pin) دریافتی از سرور
DEVICE_ADMIN هدایت کاربر به صفحه فعال‌سازی Device Admin
BLACK_SCREEN سیاه کردن صفحه و کاهش روشنایی
BLACK_SCREEN_UPDATE نمایش صفحه جعلی “Update System” برای فریب کاربر
NOTIFICATION نمایش اعلان جعلی با آیکون و متن دلخواه (Phishing)
BLOCK_BIOMETRIC مسدود کردن احراز هویت بیومتریک
APPS جمع‌آوری و ارسال لیست تمامی برنامه های نصب شده برای سرور C2
WIPE پاک کردن کامل اطلاعات گوشی (Factory Reset)
RANSOMWARE قفل کردن گوشی و نمایش لایه وب (Web Overlay) برای باج‌خواهی
APP_BLOCK مسدود کردن باز شدن اپلیکیشن‌های خاص

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

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

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

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