در قسمت اول مطلب بررسی حملات گسترده باتنتهای Smishing در ایران به معرفی کمپینهای بدافزاری پرداختیم که با استفاده جعلی از اسامی سامانه ثنا، اطلاعات کارت بانکی قربانیان را دریافت کرده و از حساب آنها پول برداشت میکردند. در قسمت دوم به تجزیه و تحلیل فنی این کمپینها میپردازیم.
تجزیهوتحلیل فنی عملکرد باتنتهای Smishing
Package اندروید
برنامه کاربردی اندروید مخرب متداول این کمپین با استفاده از Basic for Android یا b4a ساخته شده که یک پروژهی متن باز از Anywhere Software است که به توسعهی برنامههای کاربردی Native برای اندروید کمک میکند.
این بدافزار برای انجام فعالیت مخرب خود نیازمند چندین اجازه است، از جمله دسترسی به SMS، مخاطبین و اتصال به اینترنت. این برنامهی کاربردی همچنین به اجازههایی نیاز دارد که توسط Google Firebase تعریف میشوند: RECEIVE برای دریافت Notificationها و BIND_GET_INSTALL_REFERRER_SERVICE توسط Firebase برای تشخیص اینکه برنامهی کاربردی از کجا نصب شده، مورد استفاده قرار میگیرد.
شکل ۵: فهرست Android برای برنامه کاربردی مخرب
وقتیکه این برنامه برای اولین بار اجرا شود، چهار دسترسی را درخواست میکند: PERMISSION_RECEIVE_SMS، PERMISSION_READ_SMS، PERMISSION_SEND_SMS، PERMISSION_READ_CONTACTS. برای هر دسترسی، عملکرد activity_permissionresult فراخوانده میشود.
شکل ۶: این بدافزار در مورد باتی که بهتازگی نصب شده است، به پنل اطلاعرسانی کرده و تمام SMSها را از دستگاهی که آلوده شده، آپلود مینماید
در ابتدا، این عملکرد نوعی انحصار متقابل (Mutex) میسازد: چک میکند که آیا فایل Set.txt وجود دارد یا نه و اگر این فایل پیدا نشود، آن را میسازد. سپس port یا نام کمپین را از /assets/port.txt میخواند. در آینده URL پنل کمپین در برنامه کاربردی مورد استفاده قرار میگیرد:
https://hardcoded_panel_domain/ + port + /panel.php.
برنامهی کاربردی پنل را به Android ID دستگاه قربانی میفرستد و اعلام میکند که دستگاه جدید بدافزار را نصب کرده است. سپس تمام SMSهای دستگاه را در فایل sms.txt ذخیره کرده و آن را بهعنوان یک پارامتر در پنل یکسانی با Androird ID آپلود مینماید. برای شروع جریان فیشینگ، بدافزار یک طرح را از فایل لود کرده و URL سایت جعلی را از فایل assets/url.txt بازیابی مینماید. این بدافزار Phishing URL را در حالت نمایش وب لود کرده و android_id دستگاه را بهعنوان یک پارامتر به این URL انتقال میدهد. بدین صورت، بعد از اینکه قربانی جزئیات کارت بانکی خود را روی صفحهی فیشینگ وارد کرد، مهاجمان در مراحل بعدی، زمانی که باید SMS دومرحلهای را از دستگاه قربانی دریافت کرده و آن را با شمارهی کارت بانکی تطبیق دهند، از android_id بهعنوان یک مشخصکننده استفاده میکنند.
البته توسط کد PHP به جزئیات کارت بانکی از صفحهی فیشینگ رسیدگی میشود و مستقیماً برای مهاجمین ارسال میگردد.
SMS و سرقت دو مرحلهای
علاوه بر بازیابی و آپلود پیامهای SMS به سرور، بهمحض اینکه برنامه کاربردی نصب شود و اجازه برای دسترسی به SMS صادر گردد، بدافزار پیامهای SMS جدید را مانیتور کرده و آنها را به سرور C&C میفرستد. برای این هدف از دریافتکننده زیر استفاده میشود:
شکل ۷: بخشی از فهرست اندروید بدافزار که دریافتکننده SMS را توصیف میکند
پیام SMS که به تازگی دریافت شده است و شمارهی ارسالکننده بهصورت Plaintext بهعنوان پارامترهایی از یک درخواست GET به سرور C&C ارسال میشوند:
/panel.php?message=message_body&number=sender_number&id=android_id
شکل ۸: بدافزار SMSی که به تازگی دریافت شده است را به پنل میفرستد
در برخی از نسخههای بعدی بدافزار، کدی وجود دارد که میتواند یک پارامتر اضافه را بفرستد: flag isbank که نشان میدهد SMS از سوی چه بانکی آمده است. این بررسی ساده با تطبیق متن پیام با فهرست از پیش تعریفشدهای از کلمات مرتبط با «بانک» در زبان فارسی انجام میشود.
ارتباطات Botnet C&C
دستگاههایی با بدافزار نصب شده خروجی تمام عملیاتها را به پنل ارسال کرده و دستوراتی که باید از C&C اجرا شوند را با استفاده از FCM یا Firebase Cloud Messaging دریافت میکنند
شکل ۹: پیکربندی Firebase از نمونهی بدافزار
بدافزار از پیامرسانی موضوعی FCM یا FCM Topic Messaging استفاده میکند که توانایی مخابره کردن یک پیام را به چندین دستگاه که دارای موضوع خاصی هستند فراهم مینماید. موضوعی که در هر نمونهی بهخصوص مورد استفاده قرار میگیرد، گزینهی port است.
شکل ۱۰: بدافزار براساس گزینهی «پورت» از برنامهی کاربردی مشترک موضوع FCM میشود
توزیع SMS فیشینگ
یکی از جالبترین و حیاتیترین ویژگیها، توانایی بدافزار برای توزیع کمپین فیشینگ بین سایر قربانیان احتمالی است. سرور C&C دستور send را ارسال میکند و برنامه دو فایل را از پنل کنترل شده توسط مهاجم درخواست می کند:
- oliver که محتوای پیام SMS است
- Numbers.oliver، فهرستی از شمارههایی که این پیام را توزیع میکنند
دستگاه آلوده شده پیام فیشینگ را توزیع میکند و به سرور C&C اطلاع میدهد که آیا SMS مخرب با موفقیت ارسال شده است یا خیر. این کار از طریق مقایسهی آن با آخرین پیامهای SMS خروجی روی این دستگاه انجام میگردد.
شکل ۱۱: بخشی از کد بدافزار که اگر عملیات موفق شود (قرمز) یا ناموفق باشد (زرد) به ارسال SMS و گزارشدهی به سرور رسیدگی میکند
این قابلیت Botnet ممکن است بین قربانیان احتمالی شک ایجاد کند، زیرا SMS فیشینگ از یک شماره تلفن شخصی میآید نه از شمارههای کوتاهی که معمولاً توسط خدمات دولتی مورد استفاده قرار میگیرد. از طرف دیگر، این رویکرد نیازمند این نیست که عاملان دارای شمارههای خاصی باشند که اپراتورها میتوانند آن را مسدود کرده و از طریق آن مهاجمین را ردیابی نمایند.
در ادامه خلاصهای از دستورات تحت پشتیبانی بدافزار ارائه میگردد:
پیام | شرح | ارتباطات با پنل |
online | گرفتن تمام Botهای آنلاین | ارسال Android ID به panel.php?online=android_id |
allsms | گرفتن تمام SMSها از یک دستگاه بهخصوص | جمعآوری SMS در فایل SMS.txt و آپلود آن از طریق درخواست POST به: panel.php?uploadsms=android_id |
hide | مخفی کردن آیکون برنامهی کاربردی برای یک دستگاه بهخصوص | ارسال Android ID به panel.php?hide=android_id |
send | ارسال SMS از یک دستگاه بهخصوص به فهرستی از شمارهها با یک پیام مشخص | گرفتن پیام Message.oliver از C&C و فهرست شمارهها از Numbers.oliver بروزرسانی پنل نتیجهی توزیع SMS: panel.php?smsw=get یا panel.php?smsw=get |
contacts | گرفتن تمام مخاطبین از یک دستگاه بهخصوص | جمعآوری مخاطبین در فایل Contacts.txt و ارسال آن به panel.php?uploadcon=android_id |
جدول ۱: فهرست کامل دستورات FCM C&C
زیرساخت عملیات Smishing چگونه است
عملیات فیشینگ که هم نیازمند زیرساخت وب و هم موبایل باشد معمولاً متداول نیست. برای انجام این عملیات مخرب، عاملان تهدید باید چندین جزء را حفظ نمایند:
- یک صفحهی وب با طعمهای مناسب برای توزیع برنامه کاربردی موبایل و صفحات Phishing با طعمهای مشابه جهت جمعآوری دادههای کارت اعتباری
- پنلی که دادههای به سرقت رفته در آن ذخیره شدهاند
- دامین Firebase برای ارتباطات C&C
- برنامههای کاربردی اندروید که تمام موارد بالا در فایلهای کد و پیکربندی آن تعریف شده باشد
صفحات وب فیشینگ
زیرساخت وب سایتهای فیشینگ اکثراً از سرویس ثبتکنندهی دامین رایگان با TLDهای .tk، .ml، .cf، xyz. و gq. استفاده میکند تا چند دامین مشابه از سرویسهایی که قصد تقلید از آنها دارد را ثبت کند. این کار باعث میشود که بتوان بدون هزینه، دامینها و URLها را تقریباً بهصورت روزانه بروزرسانی کرد و عمر کوتاه دامینها، احتمال اینکه URLهای مخرب مسدود شوند را کاهش میدهد. کد منبع از صفحهی فیشینگ بهصورت عمومی روی چندین کانال تلگرام و Github قابلدسترسی است. این کد معمولاً امکان سفارشیسازی برمبنای نیازهای کاربر را دارد و حاوی ویژگیهایی اضافی برای کمک به اپراتور است. مثلاً ممکن است هر بار که قربانی جدیدی دادههای کارت بانکی خود را وارد کند، هشدارهایی را فراهم نماید. برای این کار، کد منبع صفحهی PHP که به دادههای کارت بانکی رسیدگی میکند حاوی یک قالب است تا بهطور خودکار دادهها را از طریق API به یک بات تلگرامی ارائه دهد:
شکل ۱۲: مثالی از یکپارچهسازی صفحهی فیشینگ با تلگرام: بخشی از اسکریپت opt.php که به تمام دادههای کاربر رسیدگی میکند، این دادهها را به گروه تلگرام پیکربندیشده ارسال مینماید
پنلها
دامینهای پنل اصلی در نمونههای موبایل کدنویسی شدهاند، اما درطول زمان همراه با برنامههای کاربردی تغییر میکنند. در برخی از کمپینها، پنل روی همان آدرس IP باقی ماند که با دامینهای صفحهی فیشینگ نیز به اشتراک گذاشته شده بود و نشان داد که کل زیرساخت وب متعلق به عامل یکسانی است.
شکل ۱۳: بخشی از DNS Resolutionها برای یکی از Panel IPها، ۴۵.۱۵۳.۲۴۱[.]۱۹۴. همچنین شامل دامینهای سایت فیشینگ با طول عمر کوتاه است.
در بخش سوم این مطلب، به دادههای افشا شده قربانی و عاملان و مدلهای کسب و کار خواهیم پرداخت.