فیشینگ پیامکی به سبک همتا و عدل ایران: بررسی بدافزار فیشینگ رجیستری تلفن همراه

لطفا یک گرافیست من رو نجات بدهمدتیه که بازار فیشینگ های پیامکی دوباره داغ شده تا جایی که پلیس فتا در اقدامی انقلابی به ارسال پیامک "کلیک روی لینک های فلان = هک شدن" به ملت رو آورده. مرسوم ترین این فیشینگ ها در حال حاضر، ارسال پیام جعلی شکواییه (همون شکایت خودمون) به ملت هست که میگه علیه شما شکایت شده و لینک یک برنامه رو بهشون میده و باقی ماجرا. البته نه! از باقی ماجرا نمیشه گذشت و قبل ورود به بحث اصلیمون باید یک نگاهی بهش داشته باشیم. پیشاپیش بگم پارت اول متن کاملا غیرتخصصی هست و نگران سخت بودنش نباشید چون برای همه قابل فهمه، خودم در ادامه میگم پارت تخصصی و فنی ماجرا از کجا شروع میشه.پیامک های فیشینگداخل پیامک جعلی شکواییه یک لینک هست که این لینک چند نوع داره:در دسته اول از فیشینگ ها، لینک یک درگاه پرداخت مستقیم جعلی هست که میگه شما باید یک مبلغ کمی رو (مثلا ده هزار تومن) پرداخت کنید تا کار روی روند بیفته وگرنه میایم در خونه بهتون دستبند میزنیم :)))نتیجتا قربانی بدبخت میره در درگاه جعلی بانکی و به خیال خودش ده هزار تومن پرداخت میکنه که خب، عدد مبلغ پرداختی دستکاری شده و در واقعیت مبلغ بیشتری از حسابش میره. اما این روش چند تا بدی داشت و داره (به جز اینکه لینک درگاه پرداخت داخل پیامک به خودی خود مشکوکه) که باعث رفتن فیشر ها به دسته دوم شد. مشکل اول اینه که اگر شما بخوای یک میلیون تومن از کارت قربانی بکشی، چون عددت ثابته و نمیدونی داخل کارت طرف چقدر پول هست ممکنه داخل کارت طرف ۹۹۹ هزار تومن پول باشه و شما بخوای یک میلیون تراکنش بزنی و به خاطر هزار تومن fail شی. رمز هم که خوشبختانه پویاست (خدا خیر بده محمد جرجندی رو) و فیشر نمیتونه اول موجودی بگیره یا عملیات رو تکرار کنه. مشکل دوم و اساسی تر این هست که اگر رمز پویا برای طرف sms بشه مبلغ تراکنش هم براش میره و خب با وجود اینکه خیلی ها دقت نمیکنن ولی بازم خیلی ها متوجه میشن و ادامه نمیدن. و نهایتا مشکل سوم اینه که شما با این کار داری درگاه میسوزونی (که البته راه دور زدن داره) و بعد یک مدت درگاه پرداختی که باهاش فیشینگ میکردی میپره، که البته این مورد سوم در بعضی روش ها وجود نداره. پس با توجه به تمام این مشکلات فیشر ها رفتن سراغ دسته دوم فیشینگ های پیامکی...در دسته دوم ماجرا پیچیده تر میشه. اینجا فیشر لینک درگاه رو به فرد نمیده بلکه بهش لینک یک برنامه اندرویدی رو میده. قربانی برنامه رو دانلود و نصب میکنه و بعد داخل برنامه ازش یک سری دسترسی ها خواسته میشه (عموما دسترسی پیامک، و بدون دادن دسترسی هم برنامه کار نمیکنه و میگه باید دسترسی رو بدی) و بعد یک سری مشخصات بی اهمیت ازش خواسته میشه و نهایتا برنامه به یک بهانه ای مشابه بهانه دسته اول، هدایتش میکنه به یک درگاه پرداخت جعلی. حالا از اینجاش ممکنه همون فرایند دسته اول اتفاق بیفته (فقط اینجا یک برنامه ای این وسط هست که شک کاربر رو کم میکنه و لینک جعلی درگاه پرداخت بهش نشون میده تا فکر کنه تو سایت شاپرکه)، اما معمولا این اتفاق نمیفته و درگاه بانکی که به کاربر نمایش داده میشه اصلا درگاه پرداخت نیست، یعنی پولی رو از کاربر نمیدزده بلکه "موجودی کارت" طرف رو میگیره. یعنی برنامه شما رو هدایت کرده به یک درگاه پرداخت که وقتی مشخصات کارتتون رو وارد میکنید و رمز پویا میگیرید، براتون "رمز استعلام موجودی کارت" میاد و وقتی اون رو در درگاه جعلی وارد کنید، فیشر مشخصات کارت شما و موجودی داخل کارتتون رو ذخیره میکنه. بعدش چه اتفاقی میفته؟ برنامه به شما یک پیغام جعلی خطا نشون میده که تراکنش انجام نشد و شرمنده! درست هم میگه و تراکنشی انجام نمیشه. پس قربانی با کمی گیج شدن برنامه رو میبنده و میره تا چند ساعت دیگه امتحان کنه یا کلا بی خیال میشه، اما بخش اصلی اینجا اتفاق میفته. برنامه هنوز روی گوشی کاربر نصب هست! مدتی میگذره و فیشر لیست کارت ها و موجودی هاشون رو نگاه میکنه و دنبال عدد های بالا میگرده، بعد میره و با مشخصات کارت قربانی یک چیزی میخره (کارت شارژ، کالا، توکن، هرچی که بتونه تبدیل به پول کنه) و برنامه (بدافزار) نصب شده روی گوشی قربانی هم تمام پیامک های دریافتی اون رو برای فیشر میفرسته که خب، شامل رمز پویاش هم میشه و تمام! اینجوری نه کاربر چندان شک کرده تا لحظه آخر، نه به خاطر هزار تومن کار fail شده و کل کارت خالی شده، نه طرف متوجه عدد انتقال وجهی شده و نه درگاهی سوخته...بررسی فنی یک نمونه بدافزار فیشینگخب از اینجای ماجرا میخوایم فنی بشیم (بخش بعدی دوباره غیرفنی میشیم). امروز من یک توییت از یک بنده خدایی دیدم که گفته بود کارتش رو اینجوری خالی کردن. منم تا تنور داغ بود سمپل بدافزار رو گرفتم تا شب بررسی کنم. اپ رو از این لینک گرفتم:http[://]semanah.tel/%D8%B3%D8%A7%D9%85%D8%A7%D9%86%D9%87%20%D9%87%D9%85%D8%AA%D8%A7.apkبنده ی خدااول ببینیم روند کار چجوریه. اول اپ پرمیشن پیامک رو از کاربر میگیره:بعد وارد مرحله ای میشیم که یکسری دیتای الکی از کاربر گرفته میشه:و بعد باز هم دیتای الکی...اینجا کاربر وارد صفحه پرداخت جعلی میشه:به آدرس بار بالای صفحه توجه کنید که لینک جعلی نشون میدهو اگر همه چیز خوب پیش رفت، پیام خطای جعلی داده میشه:همین. کل اپلیکیشن همینه و هیچ چیز دیگه ای نداره، اما وقتی بریم بریم سراغ ترافیک برنامه متوجه میشیم برنامه همین هم نیست و کل فرایندی که قربانی میبینه در واقع یک برنامه و صفحه وب هست به این آدرس:http[://]semanah.tel/app.phpپس وقتشه بریم سراغ سورس کد. داخل ترافیک برنامه ما چند تا api call با یک آدرس جدید میبینیم.من هم نمیدونم echarge چرا اونجاست، از سرور بهش رکوئست رفتهدر این دامین:https[://]internet-98.xyz/برنامه ارتباط اولیه خودش رو با سرور برقرار میکنه، دیوایس قربانی رو رجیستر میکنه و لینک صفحه وب اپی که کاربر قراره روند ماجرا رو داخلش طی کنه (همون semanah) رو میگیره. به همین دلیل در سورس کد اصلا اثری از دامین semanah نیست و c2 اصلی بدافزار اینجاست. در تصویر بالا سه نوع رکوئست رو ما میبینیم که برای درک بهتر ماهیتشون بهتره بریم سراغ سورس کد...در سورس کد برنامه ما چند تا فانکشن مهم داریم. وقتی برای اولین بار قربانی برنامه رو باز میکنه، اول به firebase فیشر متصل میشه و توکن میگیره برای دریافت دستورات، بعد دستگاهش با توجه به آیدی های دیوایس و توکن فایربیس، سمت سرور بدافزار رجیستر میشه و یک آیدی میگیره (فانکشن RegisterD، متد RegisterDevice در API). بعد از اون دسترسی پیامک از کاربر گرفته میشه و لینک وب اپ دریافت (فانکشن GetLink، متد GetLink در API) و در یک webview باز میشه تا کاربر روند رو ادامه بده تا زمان خطای جعلی. از طرفی برنامه یک BroadcastReceiver رجیستر میکنه تا هروقت پیامکی برای کاربر میاد، اپ اون رو دریافت (کلاس SmsReceiver) و روی سرور فیشر محتویات پیامک رو آپلود کنه (فانکشن UploadSms، متد UploadSms در API). اما یک بخش دیگه هم هست، برنامه پیام های فایربیس رو هم گوش میکنه و از این طریق فیشر میتونه فرمان هایی رو به قربانی ارسال کنه. اگر دقت کنید میفهمید تمام ارتباطات از قربانی به c2 توسط api انجام شده و قربانی برای دریافت فرمان با سرور api ارتباطی برقرار نکرده، که خب اینجا داره توسط پیام های firebase این کار رو میکنه. در کلاس MyFirebaseMessagingService ما پارزر پیام های دریافتی از فایربیس رو داریم که کلا سه پیام رو پارز میکنه: ping که در فانکشن PingDevice به بدافزار میگه به اندپوینت PingDevice رکوئست بزنه و بگه من هنوز روی گوشی قربانی نصبم و آنلاینم.دستور sendsms که در فانکشن sendSMS یا sendUnderLolipop به بدافزار میگه یک متن رو به یک شماره پیامک کنه (این برای انتشار پیامک جعلی استفاده میشه، یعنی کسی که پیامک رو برای شما میفرسته احتمالا خودش قربانیه)، و دستور sendmultisms که همون کار sendsms رو میکنه با این تفاوت که یک متن رو به چند شماره ارسال میکنه.و بدافزار بعد از ارسال هر پیامک یک رکوئست به سرور میزنه و اعلام میکنه پیامک ارسال شد (فانکشن sendDeliveryToServer، متد DeliveryMessage در API). نهایتا اگر توکن فایربیس قربانی تغییر کنه فانکشن UpdateDevice یک رکوئست به اندپوینت UpdateDevice میزنه تا توکن جدید اون قربانی رو در سرور اعمال کنه. این از بررسی بدافزار.تیم پشت بدافزار و گستره آلودگیمعمولا تیم های پشت این بدفزار ها به یک کمپین و یک بدافزار قناعت نمیکنن و خوبه که یکم روی سرور ها و آلودگیشون کار کنیم. این گراف گستره کار تیم پشت این بدافزار هست تا جایی که من پیدا کردم (با همین گراف میشه ردشون رو زد اگر...)اینجا چند تا نکته جالب داریم. حداقل سه بدافزار دیگه مشابه این وجود دارن همگی از این دامین استفاده میکنن:https[://]internet-98.xyz/اما نکته جالب تری وجود داره. اگر عکس ترافیک بدافزار دقت کرده باشید، تمام رکوئست ها به این آدرس میره:https[://]internet-98.xyz/Hirad/*اما در سمپل های دیگه این بدافزار من دو آدرس دیگه از این دامنه پیدا کردم که عملکرد کاملا مشابهی داشتن و اینطور به نظر میاد که داخل اون تیم فیشینگ، هرکس برای خودش یک آدرس c2 از این دامین داره! مجموعا این آدرس ها پیدا شد:https[://]internet-98.xyz/Hirad/* دو تا سمپلhttps[://]internet-98.xyz/Wallex/* یک سمپلhttps[://]internet-98.xyz/Hirsh/* دو تا سمپلبه علاوه یک دامین دیگه:https[://]mytestProjects.xyz/Wallex/* یک سمپلپس ما با یک تیم حرفه ای طرفیم که هرکس با بدافزار مشابه، c2 (سرور کنترل بدافزار) و کمپین خودش رو داره! همونطور که قبل تر هم اشاره شد اینا اصل کار هستن و آدرس وب اپ جعلی رو اینا به بدافزار میدن تا قربانی ببینه، پس من از تمام این c2 ها آدرس های وب اپشون رو گرفتم:http[://]semanah.tel/ همینی که بررسی کردیمhttp[://]semaneh.tel/پس این اولین کمپین فیشینگ اون ها نبوده و احتمالا آخرینش هم نخواهد بود. نهایتا از چهار سمپل پیدا شده قدیمی ترین اون ها مال ۱ فوریه ۲۰۲۲ هست، یعنی یک ماه و خورده ای قبل از نگارش این مطلب!نتیجه گیری پایانیاولین مورد برای من جای این سوال وجود داره که چرا یک نفر با داشتن مشخصات کارت باید بتونه درخواست استعلام موجودی کنه اونم بدون کپچا (کپچای داخل درگاه پرداخت الکیه)؟ این مورد قرار بود سال ها پیش محدود بشه ولی ظاهرا فیشر ها یک راهی براش پیدا کردن. دوم اینکه دامین semanah و semaneh که داخل پیامک ها بودن فیلتر شدن، اما آیا دامین c2 اصلی هم فیلتر شده؟ دامینی که اگر فیلتر بشه بدافزار دیگه کار نمیکنه و اگر فیلتر نشه، اون دو تای بالایی رو در پنج دقیقه میشه تغییر داد و اپ کار میکنه. تا این لحظه خیر! یعنی یکی اونجا ننشسته بررسی کنه ببینه ریشه ماجرا کجاست! ما هیچ، ما نگاه...پانوشت: در همین لحظه که دارم این پانوشت رو مینویسم، چند دقیقه ای میشه که بسیاری از این دامین ها و سرور ها غیرفعال شدن که خب طبیعیه چون دزد هایی که به خوردن پول مردم عادت دارن، پهلوون پنبه های کوچه خالین و زود میترسن. بازم تاکید میکنم این لعنتی هارو میشه گرفت و میشه متوقف کرد ولی اراده میخواد، تخصص میخواد...IoCFilesdb5df6741e0321962eda8a0b1d82a1738db1dc9ef1333c18b715b69e7bfcb484 (APK)3e5f4eb9c20ac849948919e74b6b95ddabd63678595d5aa7dd17fb97aa94fdd2 (DEX)d48dac4c8bf6aeff995d98cdda61ae89e743987f876df72756235306bf793e2e (DEX)URLshttp[://]semanah.tel/* (webapp)https[://]internet-98.xyz/Hirad/* (c2)https[://]internet-98.xyz/Wallex/* (c2)https[://]internet-98.xyz/Hirsh/* (c2)https[://]mytestProjects.xyz/Wallex/* (c2)GCM/FCMgcm_senderid (db5df6741e0321962eda8a0b1d82a1738db1dc9ef1333c18b715b69e7bfcb484): 76554708478VT Graghhttps://www.virustotal.com/graph/embed/gd675a898e8e04839a88846d3486a7ec6ba925eec23cf4312a2eb6af5fabe2f77