تحلیل و مهندسی معکوس یک مورد کلاه برداری»دوربین لخت کن

چند روز پیش بود که توسط یکی از بچه ها با یک برنامه اندرویدی آشنا شدم. طبق مشاهده بچه ها صاحب این نرم افزار داشت پول زیادی برای تبلیغ اون در کانال های تلگرام خرج می کرد. این نرم افزار به عنوان “دوربین لخت کن” معرفی شده بود ولی از اونجا که داشت هزینه نسبتا زیادی برای تبلیغ اون می شد و قبل از دریافت نرم افزار هم پولی از کاربر گرفته نمی شد مشخص بود که کلاه برداری ای پشت این قضیه وجود داره، برای اینکه از ابعاد این کلاه برداری با خبر بشیم اولین کار این بود که نرم افزار رو روی یک امولاتور اجرا کنیم. نکته جالب این بود که نرم افزار روی Genymotion اجرا نمی شد.

طبق مشاهدات ما تولید کننده این نرم افزار مبلغی حدود ۲ میلیون تومن رو روزانه برای تبلیغ در کانال های تلگرامی خرج می کنه. در حدود ۱۰ روزی که روند تبلیغات اون رو پیگیری کردیم یک لیست از کانال هایی که تبلیغ نرم افزار رو قرار دادن تهیه کردیم که در آخر این پست قرار میدم، توجه داشته باشید که معمولا بعد از گذشت زمانی مشخص تبلیغ از کانال حذف می شه اما تصویر یکی از این تبلیغ ها در ادامه اومده. مشاهده بعدی این بود که در این زمان حدود ۵۰۰ هزار بار این تبلیغات مشاهده شدند. به نظر میرسه که این کمپین تبلیغاتی کماکان ادامه داره!

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

آنالیز نرم افزار  " دوربین لخت کن "

برای این کار در مرحله اول به صورت static پکیج apk رو آنالیز می کنیم. با استفاده از نرم افزار jadx-gui برنامه رو decompile می کنیم، اسم فایل dorbin.apk هست و با استفاده از دستور زیر این کار انجام میشه.

 

 

چیزی که انتظارش رو داشتم یک برنامه نوشته شده با جاوا به همراه کد obfuscate شده بود و احتمالا سرقت اطلاعات کاربر، فیشینگ، ransomware و یا استفاده از root exploit ها بدترین حالتی بود که از این طریق این نرم افزار می تونست کاربر رو مورد حمله قرار بده. اما چیزی که با اون مواجه شدم یک نرم افزار خیلی ساده java بود که فقط یک سری activity داشت.

نکاتی که باید بهش دقت کنیم توی عکس مشخصه:

 

این نرم افزار از توابع Runtime.register و TypeManager.Activate استفاده می کنه، این کد در همه activity های برنامه استفاده شده و به جز اون منطق دیگه ای وجود نداره.

در بخش resources در پوشه lib/armeabi-v7a چند فایل با پسوند so وجود داره که کتابخانه هایی هستند که به صورت native برای پردازنده arm کامپایل شدن.

توابع TypeManager.Activate و Runtime.register مربوط به کتابخانه Xamarin هستند. این کتابخانه به توسعه دهنده اجازه می ده یک کد واحد رو که با #C نوشته شده با تغییر خیلی کم روی پلتفرم های Android و iOS اجرا کنه. این ۲ تابع هم در واقع روند اجرایی برنامه رو به کد Xamarin منتقل می کنند.

 

کتابخانه های native ای که با هم دیدیم هم libmonodroid.so و libmonosgen-2.0.so هستند که مربوط به کتابخانه mono هستند. این کتابخانه برای اجرای کدهای Net. بر روی اندروید استفاده میشه و Xamarin هم از این کتابخانه استفاده می کنه. از طرف دیگه دلیل اجرا نشدن این برنامه روی امولاتور Genymotion هم مشخص شد، Genymotion با معماری x86 کار می کنه ولی این برنامه تنها کدهای native مربوط به arm رو داره و روی پلتفرم های x86 اجرا نمیشه.

 

حالا که می دونیم با یک اپلیکیشن توسعه داده شده با  Xamarin طرف هستیم، با یکم جستجو متوجه میشیم که در پوشه Resourcesassemblies می تونیم dll های مربوط به کد و منطق برنامه رو پیدا کنیم. فایل مورد نظر ما SuperCamera.dll هست.

 

 

برای بررسی این فایل کافیه از یک Decompiler برای Net. استفاده کنیم. من از ILSpy برای دسترسی به کد #C برنامه استفاده کردم. کد #C برنامه هم در این نمونه obfuscate شده و به راحتی نمیشه روند اجرایی اون رو به صورت static دنبال کرد. اما با یک نگاه چیزی که مشخصه اینه که از سرقت اطلاعات، رمز کردن اطلاعات کاربر و یا root exploit خبری نیست.

 

 

اگر بخواهیم با هم یک بخش از کد این برنامه رو ببینیم به این صورت هست:

 

بررسی دسترسی ها، Activity ها و سرویس های برنامه

خوب الان می تونیم دسترسی هایی که برنامه هنگام نصب درخواست می کنه رو هم بررسی کنیم، برای این کار با استفاده از apktool نسخه xml فایل AndroidManifest.xml رو از بسته apk برنامه بدست میارم:

 

 

فایل AndroidManifest.xml که شامل سرویس ها، Activity ها و دسترسی های برنامه هست رو با هم ببینیم:

 

 

این برنامه تنها دسترسی خواندن و نوشتن به sd card، دسترسی به دوربین و اینترنت رو از کاربر درخواست می کنه و هیچ سرویسی در پس زمینه اجرا نمی کنه. با داشتن این اطلاعات می تونیم به مرحله بعد بریم و برنامه رو روی یک دستگاه اندرویدی اجرا کنیم.

اجرای برنامه بر روی یک دستگاه اندرویدی

برای این کار من از یک گوشی قدیمی استفاده کردم، پراکسی burp رو در مسیر اینترنت دستگاه تنظیم کردم و برنامه رو نصب و اجرا کردم.

اگه روی دوربین کلیک کنیم ازمون می خواد که برنامه رو فعالسازی کنیم، در بخش معرفی اپلیکیشن یک متن خیلی قانع کننده نوشته:
نکته جالب اینه که برای فعالسازی برنامه به یک درگاه شاپرکی هدایت میشیم و فیشینگی هم در کار نیست، درگاه به اسم یک فروشنده شارژ ثبت شده و با پرداخت ۲ هزار تومان ناقابل می تونیم برنامه رو فعالسازی کنیم. توجه کنید که توی صفحه قبلی گفته بود که این ویژگی لخت کردن توسط دوربین ۸ سال پیش توسط نوکیا ارائه شده و اکثر گوشی ها از اون پشتیبانی می کنن.

برنامه برای فعالسازی به آدرس سرور خودش یک درخواست میفرسته و در صورت فعال نبودن برنامه پیام no ارسال میشه، کافیه توسط burp این پیام رو به yes عوض کنیم تا بدون نیاز به پرداخت برنامه فعال بشه.

درخواست برنامه:

GET /mellatasnajsfnain2as5asfa3/q19/api.php?IdNumber=08034182589334a3&action=0 HTTP/1.0
Host: asfmw2as1fas4f8a4f6aaswrtrege.supcamcomsap.ml
Connection: close

پاسخ سرور:

HTTP/1.0 200 OK
Date: Sun, 05 Feb 2017 11:19:39 GMT
Server: Apache
Content-Type: text/html; charset=UTF-8
Connection: close

no

برای فعالسازی دائمی اون بدون پرداخت کافیه یک درخواست به این آدرس بفرستیم:

asfmw2as1fas4f8a4f6aaswrtrege.supcamcomsap.ml/mellatasnajsfnain2as5asfa3/q19/api.php?IdNumber=08034182589334a3&action=1

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

خوب همونطور که همه تا الان متوجه شدیم بعد از پر شدن لودینگ یک صفحه خطا به ما نشون میده و میگه به دلیل پیچیدگی فرآیند، گوشی شما قادر به انجام دستورات نبود (آخه لامصب خودت گفتی این ویژگی رو ۸ سال پیش نوکیا اختراع کرده! چطوری گوشی من پشتیبانی نمی کنه). از طرفی قبلا هم با کاربر طی کرده بود که لایسنس تنها برای یکبار فعالسازی مورد استفاده قرار میگیره و برای نصب دوباره و یا تست کردن یک دستگاه دیگه باید دوباره پرداخت صورت بگیره.

دستکاری صفحه پرداخت شاپرک و تغییر مبلغ

زمانی که داشتیم تست های مختلف رو روی این نرم افزار انجام میدادیم، یکی از مسائلی که دونستنش برامون جالب بود این بود که آیا صفحه پرداخت هم جعلیه و یا اطلاعات بانکی کاربر هم سرقت میشه؟ برای پیدا کردن جواب این سوال از پروکسی Burp در مسیر ارتباطی نرم افزار با اینترنت استفاده کردیم. چیزی که مشاهده شد این بود که صفحه پرداخت واقعی هست و در اون نام پذیرنده “پویان شارژ” و مبلغ پرداختی ۲۰ هزار تومان هست اما بعد از اینکه این صفحه در webview نرم افزار در تلفن اندرویدی بارگذاری میشه نام پذیرنده به مقدار جعلی “فروش اینترنتی شارژ” و مبلغ نیز به ۲ هزار تومان تغییر می کنه، با این کار هم کاربر امکان پیگیری کلاه برداری از طریق درگاه رو از دست میده و هم تصور می کنه مبلغ ۲ هزار تومان رو باید پرداخت بکنه. سمت چپ درگاه اصلی و سمت راست درگاه نمایش داده شده در دستگاه اندرویدی هست.

با توجه به اینکه بعد از مشاهده این اتفاق نیاز به بررسی سورس این نرم افزار بیشتر از قبل شده بود با استفاده از نرم افزار ILSpy و همچنین نصب افزونه Reflexil نرم افزاری که برای obfuscate کردن این کد استفاده شده بود رو پیدا کردیم (Net Reactor.) و تونستیم مقداری از کد اصلی رو برگردونیم. بعد از این کار مقادیر ثابت string ها به حالت اولیه خودش برگشت و کد مربوط به activity که درگاه بانکی رو نمایش می داد مشخص شد:

همونطور که در کد زیر می بینید، درگاه بانکی تشخیص داده شده و با استفاده از javascript مقادیر اصلی با مقادیر جعلی جایگزین شده. برای مثال خط ۹۴ تا ۹۷:

 

 

کلاه برداری به همین سادگی

خب همونطور که دیدین به همین سادگی سر مردم کلاه گذاشته میشه و با توجه به حجم تبلیغاتی که طرف انجام داده به نظر پول خوبی در میاره. از طرفی کسی پا نمیشه بره پیش پلیس بگه من ۲ هزار تومن (یا ۲۰ هزار تومن در صورتی که متوجه شده باشه) دادم برنامه دوربین لخت کن خریدم و سرم کلاه گذاشتن، اگرم بره احتمالا تا شکایت ها زیاد نشه پیگیری انجام نمی شه. خلاصه که بعضیا از یه راه هایی پول در میارن آدم باورش نمیشه! اگر یه تخمین بزنیم که در همین بازه زمانی که ۵۰۰ هزار بار تبلیغ مشاهده شده، ۱ درصد از افراد نرم افزار رو نصب کردن و پرداخت رو انجام دادن به این عدد می رسیم: ۸۰ میلیون تومان در ۱۰ روز، با توجه به اینکه تنها ۲۰ میلیون تومن هزینه تبلیغات توسط ما تخمین زده شده یه همچین سودی دور از انتظار هم نیست.

500,000 * 0.01 * 20,000 (قیمت) = 80,000,000 = 20,000,000 (هزینه تبلیغات در ۱۰ روز) – 100,000,000

لیست کانال هایی که تبلیغ این نرم افزار در آن ها مشاهده شده

  1. hajijock
  2. Kelas_Fun
  3. shadiOk
  4. gaafarabad
  5. kolbexxl
  6. Enekase_EsHghh
  7. maamaki
  8. bahdasti
  9. tvsalamat
  10. videyaa
  11. hamsaraneha
  12. nini_kopol
  13. Voice99
  14. khar_dar
  15. zirdelamdardgerfteee2
  16. IRclashers_ir
  17. hamechi_aroome
  18. tv_irane
  19. Wallpaper_pic
  20. zeibaeyeshgh
  21. Foot_hot
  22. Footi_hall
  23. clup_iran
  24. Otagh_khab
  25. modern_live1
  26. zibatarin_eshtebah
  27. baft_mo
  28. Eahgh_yaani_to
  29. dansss_s
  30. khafankadhe1
  31. lamp_85
  32. mahan_negin
  33. dactan_online
  34. ame_mahsa_035
  35. lovee3ity
  36. havaye_adam
  37. topjenc
  38. irshahrzad
  39. irjook
  40. text_delnveshte
  41. Wirgule
  42. amme_soozi
  43. Voice9999
  44. lukchery_home
  45. zeibaeyeshgh
  46. Hadi26262
  47. fazedell
  48. Zena_zade
  49. https://telegram.me/joinchat/AAAAAD7Wf_iVxoBQwZTnA
  50. mahi_hana
  51. Bbalengderaz
  52. gasreashegane
  53. JOK_GIF85
  54. deltangee
  55. pashmakehaji
  56. asheghaneh_mp
  57. gamkad0
  58. sweet_revenge8
  59. ezdevaj69
  60. hamsardari_asan
  61. ensaniyat1
  62. Vooic_kadee
  63. funnn_kadeee
  64. jansikada
  65. koche_baq_eshq
  66. tavaneyeknegah2
  67. bekodamingonaaah
  68. oldmusiiic
  69. melodichanel
  70. eshqeshishei
  71. haydeh_mahasti_channel
  72. Kelas_Fun
  73. vanem0od
  74. L0VE_T0_L0VE
  75. ahooraloveme
  76. clip_antic
  77. hessziba
  78. jowjowtele
  79. rishtr8
  80. Hesse_Mobhham
  81. clipdonitak
  82. lovemeeM
  83. taqdirsiah
  84. ameghezii
  85. DISSLOVEMUSICORG1
منبع  » آفسک

ارسال نظر

نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتی