دیدگاه نیوز / در این پست به بررسی یک بدافزار اندرویدی که به اسم “موبایل بانک ملت” در شبکههای اجتماعی گسترش یافته میپردازیم که Phishing کمترین کاری است که میتواند انجام دهد. این بدافزار در تاریخی که این پست نوشته شده هنوز درحال کار کردن و تمام سرورهای آن فعال است. این پست به نحوه آنالیز و مسائل جزئی فنی مربوطه نمیپردازد و صرفا نتایج بدست آمده از آنالیز را بیان میکند.
اسم پکیج این بدافزار اندرویدی، com.behsazaan.mobilebank میباشد با checksum:
SHA1: 82EFE2D990C7F5D72264A198AA8CC0BBFF705089
که شامل:
- صفحه phishing است که اطلاعات بانکی کاربر را به سرقت میبرد.
- keylogger که میتواند تمام ورودیهایی که کاربر در تلفنهمراه خود وارد میکند را ذخیره کرده و به سمت مهاجم ارسال کند. (به عنوان مثال میتواند همهی حروفی که با کیبرد تایپ میشود را ذخیره کند و توسط این تکنیک به رمزعبورهای کاربر در اپهای مختلف دسترسی پیدا کند).
- دسترسی به پیامکها.
- دسترسی به مخاطبین.
- دسترسی به محل ذخیره فایلها.
- اجازه نصب اپلیکیشن در تلفنهمراه کاربر.
ابزارهای آزمایشگاه
- genymotion: مجازیساز اندروید
- jadx: تحلیل ایستا
- Frida/RMS: تحلیل پویا
- wireshark/Burpsuite: تحلیل ترافیک
- apk studio: برای تغییر کد و خروجی apk گرفتن به سادگی
- Time
در بعضی از مطالب فقط یکی از تکنیکها و ابزارها استفاده شده (مثلا در قسمت پنهان شدن آیکن فقط از تحلیل ایستا استفاده شده است) اما در بعضی دیگر از همه ابزارها استفاده شده (مثل تحلیل ترافیک) اما هدف این پست آشنایی با این ابزارها نیست و صرفا نتیجهی استفاده از آنها مورد بررسی قرار میگیرد.
حال به بررسی قدم به قدم این اپلیکیشن میپردازیم و آن را نصب و اجرا میکنیم:
بررسی permission ها
SYSTEM_ALERT_WINDOW: با این دسترسی میتوان اپ را بر روی بقیهی اپهای نصب شده در تلفن همراه نمایش داد بدون اینکه کاربر متوجه آن شود. تکنیکی که توسط اکثر بدافزارهای اندرویدی به منظور نمایش تبلیغ، click-jacking، phishing scam و گاهی نیز توسط باجافزارهای اندرویدی به منظور از کار انداختن رابط کاربری برای افراد غیرفنی به کار برده میشود.
PACKAGE_USAGE_STATS: دسترسی به کلیه آمار و ارقام مربوط به استفاده از سایر اپهای نصب شده در تلفن همراه که به عنوان نمونه میتوانید به آدرس زیر مراجعه کنید:
برای اطلاعات بیشتر به اینجا مراجعه کنید.
BIND_ACCESSIBILITY_SERVICE: زیباترین دسترسی در اندروید که منبع اصلی اندروید اینطور توصیفش میکند: Accessibility services should only be used to assist users with disabilities in using Android devices and apps ولی متاسفانه در بیشتر مواقع از خاصیت بدش در جهت عکس ارزشهای انسانی استفاده شده است. هر اتفاقی که در تلفنهمراه اندرویدی بیفته میشه با این بزرگوار مانیتورش کرد مثلا چه متنی انتخاب شد، چه دکمهای کلیک شد، چه. صفحه ای فوکوس شد و … که همهچیزهایی که یک key-logger احتیاج داره رو بهش میده:
و به راحتی یک سرویس در بکگراند اجرا شده و همه اتفاقات را در یک فایل ذخیره کرده و در وقت مناسب به سمت مهاجم ارسال میکند:
و در آخر هم دسترسیهای خیلی معمول که توسط هر بدافزاری گرفته میشود که این بدافزار هم از این قاعده مستثنی نیست:
READ_CONTACTS: خواندن همهی مخاطبین
و ارسالش برای سرور مهاجم به آدرس Url/Cn.php
CALL_PHONE: با این دسترسی اپ میتونه بدون اینکه کاربر رو به صفحه شمارهگیر هدایت کنه خودش با هر شمارهای تماس برقرار کنه. البته در مهندسی معکوس این بدافزار در هیچ جایی استفاده از این امکان مشاهده نشد و صرفا دسترسی آن از کاربر گرفته شده است. شاید برای آپدیت های بعدی
READ_SMS: خواندن پیامکها
نحوه استفاده این دسترسی اندکی هوشمندانهتر نسبت به قبلیاس. یک سرویس به اسم rest وجود داره که همهی مسئولیتهای مربوط به بده بستونهای بین اپ و C&C سرور متعلق به ایشونه. حالا به دو صورت ویژگیهای این سرویس فعال میشه:
با استفاده از broadcastReceiverی که تعریف شده، اگر تلفن روشن شود (action.BOOT_COMPLETED)، یا یک پیامک دریافت شود (Telephony.SMS_RECEIVED)، این سرویس فعال میشود.
مورد اول که از کدهاش واضحه که برای اینه که همیشه در سیستم در حال اجرا باشه حتی اگر گوشی ریستارت شد.
اما مورد دوم وقتی فعال میشه که یک پیامک به کاربر ارسال بشه و اندروید با این جریانات broadcastReceiver میتونه متوجه بشه و یک کار خاصی در اون موقع انجام بده. که توی مورد خاص وقتی پیامک دریافت میشه بلافاصله محتویات پیام و جزئیاتش به سرور ارسال میشه:
که در ادامه میخوایم راجع به اون Amirs هم صحبت کنیم، صبور باشید.
خلاصه وقتی پیامک اومد این تیکه از کد میاد پیامک به همراه مواردی که میتونید ببینید میفرسته سمت سرور. جالبه که الان میتونه همه پیامکهای کاربر رو بخونه اما هیچجایی از کد این کار رو نکرده و فقط به پیامک هایی که جدید برای کاربر میاد علاقه نشون داده. اگر ما از کمترین میزان هوش برخوردار باشیم سریعا متوجه میشیم که این هدفش خوندن رمز پویا بوده و یا دسترسی به رمز های دو مرحله ای که دنبال اینه بتونه قبل از کاربر لاگین کنه.
READ_EXTERNAL_STORAGE: برای درک بهتر و آشنایی با انواع ذخیره در محل حافظه اندروید اینجا را ببینید. بدون این دسترسی هم میتوان در محل حافظه داخلی مخصوص اپ عملیات خواندن/نوشتن را انجام داد اما اگر بخواهیم به پوشه هایی مثل DCIM، Movies ،Download و … دسترسی داشته باشیم حتما باید در runtime این دسترسی از کاربر گرفته شود.
فعال شدن بدافزار روی تلفن هدف
وقتی کاربر سعی دارد وارد حساب کاربری خود شود و دکمهی ورود را میزند اطلاعات زیر به سمت سرور ارسال میشود:
"\n\t\t New Target V3.2 \n\t\t----------------------\n\t\t|-Phone Number : 09121111111\n\t\t|-UserName : 111111111111\n\t\t|-Password : 222222222222\n\t\t|-First Serial : a267b161c7b192\n\t\t|-Three Serial : 000000000000000\n\t\t|-Four Serial : 89014103211118510720\n\t\t------Mellat-----\n\t\t"
که سریال هایی داره میفرسته مربوط به device id میشه که یک مقدار یکتا در هر تلفنهمراه میباشد.
پنهان شدن آیکن
وقتی اندکی با نرمافزار کار کنیم و اطالاعات بانکی خود را در آن وارد کنیم، بدافزار مطمئن میشود که تمام اطلاعات بانکی شما را سرقت کرده و نیازی برای صفحه phishing در آینده نمیبیند. و برای امنیت هر چه بیشتر بدافزار، آیکن خود را پنهان میکند و همه کارهای خود را با سرویس هایی که در background است، انجام میدهد:
جلوگیری از حذف اپ توسط کاربر
در سیستم عامل اندروید میتوان به اپهای در حال اجرا دسترسی داشت. از طرفی com.android.packageinstaller اپی که توسط آن میتوان اپهای نصب شده را حذف/نصب کرد. با توجه به این فرضیات نحوه عملکرد بدافزار را هنگام حذف آن مشاهده کنید:
حال هروقت یکی از activityهای این اپ به اسم UninstallerActivity اجرا شود، یک intent اجرا کرده و کاربر را از اپ مربوط به حذف بدافزار خارج میکند.
اما برای حذف برنامه، ابتدا باید سرویس های مربوط به اپ را بست و سپس اقدام به حذف بدافزار از روی تلفن همراه کرد. (force stop)
رمزنگاری
در اپ های اندرویدی معمولا برای پنهان سازی credentials که به صورت استاتیک به سادگی قابل تحلیل نباشند، string های حیاتی را به صورت رمز شده ذخیره میکنند و آنها را در runtime رمزگشایی میکنند. مهمترین استفاده از رمزنگاری در این بدافزار به منظور پنهان سازی Proxy-Authorization که یک http header است به کار گرفته میشود.
به منظور ساختن این header، در ابتدا محتویات فایلهای زیر که در اپ از ابتدا وجود داشتهاند خوانده میشود:
با ترکیب های مختلفی از این رشتهها، رشته ای ساخته شده و در نهایت با AES، رمزگشایی میشود.
کتابخانههای استفاده شده
برای درخواستهای http از ترکیب ۴ کلاینت استفاده شده است:
- OkHttp: کتابخانه معروف برای ارسال درخواست HTTP
- Retrofit: یک کتابخانه معروف روی Okhttp که استفاده از آن را ساده تر میکند.
- Aghajari.retrofit: کلاینت شخصی سازی شده روی retrofit
- Tamic.Novate: یک کلاینت غیرمعمول (که کمتر در سایر اپلیکیشن ها دیده شده) همانند retrofit روی OkHttp نوشته شده است.
به اقتضای کاربرد از هرکدام از آنها استفاده میکند (شاید هم برای گمراه کردن آنالیزور) ولی در اکثر مواقع از Tamic بهره میگیرد.
برای سایر ویژگی های اپ از کتابخانه خاصی استفاده نشده است اما جالب است که این بدافزار با B4A توسعه داده شده است که در زمان حال کمتر شخص حرفهای به سراغ آن میرود. در بخش آخر بیشتر راجع به این موضوع صحبت خواهیم کرد…
تحلیل ترافیک
همه درخواستها به https://ns1-torproxy.xyz فرستاده و path های زیر استفاده میشود:
و اینکه با IP ایران ns1-torproxy.xyz باز نمیشه و اما بدافزار چطوری داره با سرور اصلی ارتباط برقرار میکنه:
لیست IP هایی که پروکسی میکنه هم چون هنوز در حال کاره هنوز از سروری که استفاده میشه متصل هست:
روی اکثرش با اسکن nmap این بدست اومد:
۸۰۸۰/tcp open http-proxy
برخی سوالات
یکسری سوال اینجا مطرح میشه:
۱. چرا این اپ با B4A توسعه داده شده وقتی توی موارد malware development کلی میشه از کدهای آماده به زبانهای java/kotlin/c استفاده کرد؟
۲. چرا شخص توسعهدهنده اسم و رسم خودشو روی در و دیوار کدها نوشته؟ هم توی endpoint ها اسمشو نوشته هم توی پکیجی که برای کلاینت http استفاده میکنه فراوان amir aghajari رو نوشته.
۳. چرا وقتی میتونه همه پیامک هارو بخونه و بفرسته برا مهاجم فقط میره سراغ پیامک جدیدی که اومده؟
۴. با IP ایران Url باز نمیشه و خود اپ با پروکسیای که داره درخواستها رو میفرسته. تهیه ۳۳ تا سرور میتونه کار یک شخص برای لذت بردن و اذیت کردن بقیه باشه؟
۵. چرا یکسری دسترسیهایی میگیره که ازشون استفادهای نمیکنه؟
۶. هدف افراد سازمانی بودند یا شخصی؟
۷. هدف در طولانی مدت کاربرد داشتند یا دسترسی سریع به اطلاعات در اولویت بوده؟
۸. هدف از قبل مشخص بوده یا اینکه هرکس بدافزار را نصب کرد یک هدف عالی برای نفوذ بیشتر است؟
دیدگاه نیوز را در شبکه های اجتماعی دنبال کنید | |||||||
سردبیر خبر روز، بیش از 16 سال است که در زمینه های تخصصی طراحی، توسعه، بهینه سازی و سئوسازی وب فعالیت می کند. وی از سال ۱۳۸۷ فعالیت خبری خود را در حوزه اخبار تکنولوژی آغاز کرده و از سال ۱۳۹۳ در حوزه های سیاسی، اجتماعی، اقتصادی شروع به فعالیت مستمر خبری کرده است. وی عضو هیئت مدیره شرکت رایسام نیز می باشد.
دیدگاهتان را بنویسید