ما در دنیای مدرن، توسط بسیاری از دستگاه های هوشمند احاطه شده ایم که در زندگی روزمره به ما کمک می کنند: بلندگوهای هوشمند، جاروبرقی های رباتیک، تغذیه خودکار حیوانات خانگی و حتی کل خانه های هوشمند. سازندگان اسباب بازی در تلاش هستند تا با این روند هوشمند سازی همگام شوند و مدل های بیشتری را عرضه کنند که می توان آنها را “هوشمند” نامید. به عنوان مثال، ربات های آموزشی که به اینترنت متصل می شوند و از تماس های ویدیویی پشتیبانی می کنند.
مدیران کسپرسکی، چنین رباتی را برای اهداف تحقیقاتی در اختیار کارشناسان قرار دادند، چرا که قصد داشتند اطمینان حاصل کنند که اسباب بازی کودکانشان به اندازه کافی در برابر تهدیدات سایبری محافظت می شود. کسپرسکی در طول تجزیه و تحلیل خود، آسیب پذیری های متعددی را کشف نمود که به عوامل مخرب اجازه می دهد بدون اطلاع والدین خود به داده های محرمانه دسترسی یابند و با کودکان ارتباط برقرار کنند.
موضوع تحقیق: ربات آموزشی
این اسباب بازی برای آموزش و سرگرمی کودکان طراحی شده است. این یک دستگاه تعاملی است که سیستم عامل اندروید بر روی آن اجرا می شود. همچنین این دستگاه می تواند حرکت کند و دارای یک صفحه نمایش رنگی بزرگ، یک میکروفون، یک دوربین فیلمبرداری و سایر ویژگی ها است. به عبارت دیگر، این ربات یک “تبلت متحرک” می باشد. ویژگی های تعاملی شامل بازی و برنامه های آموزشی برای کودکان، دستیار صوتی، دسترسی به اینترنت و اتصال به اپلیکیشن والدین برای تلفن های هوشمند است.
بردارهای حمله احتمالی
اپلیکیشن والدین
ربات قبل از استفاده باید به حساب یکی از والدین مرتبط باشد. برنامه والدین برای انجام این کار، باید روی دستگاه تلفن همراه والدین نصب شود. این برنامه از دیدگاه یک محقق امنیتی، به ویژه جالب است زیرا امکان تماس با ربات و نظارت بر فعالیت ها و پیشرفت یادگیری کودک را فراهم میکند.
اسباب بازی
این ربات به یک شبکه وای فای خانگی متصل می شود و از طریق اینترنت با اپلیکیشن ارتباط برقرار می کند. پس از راه اندازی اولیه و اتصال به اینترنت، ربات درخواست می کند که نرم افزار به آخرین نسخه به روزرسانی شود و بدون بروزرسانی کار نخواهد کرد. با این حال، کسپرسکی تصمیم گرفت که نرم افزار اسباب بازی را فوراً به روز نکند تا آنچه را که می توان از نسخه سیستم عامل قدیمی استخراج کرد، کشف نماید.
بررسی ساختار داخلی ربات
تجزیه و تحلیل شماتیک ها و پایه کامپوننت
کسپرسکی در انجام تجزیه و تحلیل شماتیک قطعات الکترونیکی این ربات، از سازنده آن کمک گرفت. همه کانکتورها، پورت ها و پدهای تست روی بردها دارای برچسب بودند که خیلی متداول نیست. در میان انواع کانکتورها، اتصال دهنده USB با برچسب Android (به عکس برد مدیریت محیطی مراجعه کنید) توجه کسپرسکی را به خود جلب کرد و همچنین تعدادی از اینترفیس ها که معمولاً برای دیباگ کردن سیستم عامل استفاده می شوند بر روی برد موجود بودند.
شماره | علامت گذاری | هدف |
1 | MediaTek MT8167A 2117-BZASH | تراشه اصلی |
2 | MediaTek MT7658MSN 2128-BZASL | Wi-Fi دو بانده 802.11ac MU-MIMO و بلوتوث 5.0 |
3 | MediaTek MT6392A 2024 | مدیریت انرژی برای پلتفرم MT8167 |
4 | Conexant CX20921 | پردازنده ورودی صدا |
5 | WinBond 25Q64JWIQ | SPI Flash 64 مگابایت برای پردازشگر ورودی صدا |
6 | Royson RS256M32LD | LPDDR3 SDRAM رم 8گیگابایت |
7 | KOWIN KASA6211 | فلش 32 گیگابایتی eMMC برای پردازنده MediaTek MT8167A |
8 | 40-pin connector | کانکتور |
شماره | برچسب | هدف |
1 | TI MSP432P401R | میکروکنترلر برای کنترل محیطی |
2 | 40-pin connector | کانکتور |
راه اندازی اولیه ربات و تجزیه و تحلیل ترافیک شبکه
اسباب بازی پس از راه اندازی اولیه، از کاربر می خواهد یک شبکه Wi-Fi را انتخاب کند، ربات را به دستگاه تلفن همراه والدین متصل نماید و حداقل اطلاعات مربوط به کودکی را که از اسباب بازی استفاده میکند، مانند نام و سن او وارد نماید. این اطلاعات به صورت متن ساده از طریق پروتکل HTTP تحویل داده می شود و ربات را در برابر رهگیری توسط نرم افزار تجزیه و تحلیل ترافیک شبکه آسیب پذیر می کند.
علاوه بر این، درخواست های خاصی در شبکه توجه کسپرسکی را به خود جلب نمود:
درخواست نشان داده شده در اسکرین شات بالا یک توکن دسترسی به API را بر اساس داده های احراز هویت همچون نام کاربری، رمز عبور و کلید بازیابی می کند. در واقع، حتی اگر گواهی های اعتبار نادرستی ارائه شوند، یک توکن معتبر بازگردانده می شود. این اولین نقص امنیتی بود که کسپرسکی کشف کرد.
درخواست بعدی، پارامترهای پیکربندی اسباب بازی خاص را بر اساس شناسه منحصر به فرد آن، متشکل از ۹ کاراکتر، باز میگرداند. این شناسه برای مدل تحلیل شده، همیشه با کاراکتر های “M3” آغاز میشود.
شناسه ربات مورد استفاده در درخواستهای API دارای فرمتی مشابه شناسه چاپ شده روی بدنه ربات است که به عنوان P/N شناخته می شود:
چنین شناسه ای با آنتروپی پایین امکان بررسی کامل همه شناسه های ممکن توسط عوامل تهدید را فراهم می کند. در نتیجه، مهاجم می تواند اطلاعاتی درباره ربات های مختلف و صاحبان آنها، مانند آدرس IP، کشور محل سکونت، نام، جنسیت و سن کودکان به دست آورد.
علاوه بر داده های کاربر، سرور مقدار قابل توجهی تنظیمات پیکربندی را در پاسخ به درخواست ارسال می کند، از جمله کلیدهای دسترسی به API های سرویس خارجی، مانند QuickBlocks، Azure و Linode که ربات در حین کار از آنها استفاده می کند. این تنظیمات در فایلی که در حافظه داخلی قرار دارد در ربات ذخیره می گردند. کسپرسکی در ادامه مطالب آن را با جزئیات بیشتری بررسی خواهد کرد.
درخواست بعدی، در پاسخ به همان شناسه، برخی از داده های کاربر مانند آدرس ایمیل، شماره تلفن والدین و کد اتصال دستگاه تلفن همراه والدین به ربات را برمی گرداند.
ربات به عنوان بخشی از تنظیمات و پیکربندی اولیه، دائماً از کاربر درخواست به روزرسانی نرم افزار دارد و از کسپرسکی درخواست داشت که این به روزرسانی را جهت استفاده کودک از به روزترین و مرتبط ترین نسخه انجام دهد.
پس از به روزرسانی نرم افزار ربات، درخواست های فوقالذکر که پیش تر از طریق پروتکل ناامن HTTP منتقل می شدند، با استفاده از پروتکل رمزگذاری امن HTTPS انجام شدند. بنابراین، به منظور تجزیه و تحلیل بیشتر این ترافیک شبکه، لازم است یک حمله MitM صورت پذیرد که بتواند رمزگذاری را دور بزند.
تجزیه و تحلیل سیستم فایل
تجزیه و تحلیل محتوای تراشه eMMC
روش های مختلفی برای انجام حمله MitM به ترافیک شبکه دستگاه وجود دارد. کسپرسکی تصمیم گرفت از ADB (Android Debug Bridg)، ابزاری به منظور دیباگ کردن دستگاه های اندروید استفاده کند.
امکانات ADB اجازه می دهد:
- مشاهده پیام های دیباگ از سیستم عامل اندروید و برنامه های در حال اجرا در دستگاه
- انتقال فایل ها به دستگاه
- نصب و حذف برنامه ها
- پاک کردن و بازنویسی پارتیشن داده در حافظه دستگاه
- اجرای اسکریپت های مختلف
- مدیریت برخی پارامترهای شبکه
کسپرسکی قصد داشت از ADB برای اصلاح سیستم فایل ربات و نصب گواهینامه های SSL استفاده کند تا بتواند به ترافیک متن شفاف(بدون رمز) دسترسی داشته باشد. کسپرسکی جهت تعیین نحوه فعال کردن ADB روی دستگاه، تصمیم گرفت محتویات تراشه حافظه را بخواند.
کسپرسکی با بدست آوردن و آنالیز فایل سیستم ربات موارد زیر را کشف کرد:
- فایل پیکربندی سیستم عامل اندروید adbd را با سطح دسترسی ریشه در هنگام بوت شدن سیستم، راه اندازی می کند. (سرویس ADB مسئول اجرای دستورات روی دستگاه است)
- ربات در مرحله راه اندازی، به طور خلاصه به عنوان یک دستگاه USB با دسترسی ADB شناخته می شود.
- پیکربندی پس از راه اندازی سیستم عامل اندروید، اعمال می شود که در آن فقط سرویس MTP در USB فعال می گردد و سرویس ADB غیرفعال است.
فعال سازی ADB
کسپرسکی فایل های پیکربندی موجود در تراشه حافظه میان افزار را تجزیه و تحلیل و تنظیماتی به نام «ENABLE_ADB=N» پیدا کرد. پس از تغییر این تنظیم به “ENABLE_ADB=Y”، کسپرسکی توانست ADB را فعال کند و با آن کار کند تا زمانی که ربات به سرور متصل شود، جایی که پیکربندی جدیدی را بارگیری کرد که مقدار پیش فرض را بر روی مقدار (“ENABLE_ADB=N”) تنظیم نماید.
کسپرسکی در نتیجه فعال سازی ADB، توانایی تجزیه و تحلیل رفتار سیستم در ربات، مشاهده پورت های باز شبکه و برنامه های در حال اجرا و آغاز بررسی دقیق این موارد را به دست آورد.
تجزیه و تحلیل API ویدئو زنده
توسعه دهندگان از سرویس ابری Agora برای پشتیبانی از تماس بین ربات و دستگاه تلفن همراه والدین استفاده کردند. شناسایی این امر دشوار نبود، زیرا در فایل پیکربندی که سرور در پاسخ به درخواست GetAppConfiguration در اختیار دستگاه قرار داده بود، می توان به Agora اشاره کرد. این فایل بدون رمزنگاری در سیستم فایل ذخیره می گردد:
فریمورک Django REST به طور گسترده در API سمت سرور مورد استفاده قرار می گیرد که ربات از طریق کوئری های HTTP با آن ارتباط برقرار می کند. شایان ذکر است که کسپرسکی در طول بررسی های خود، متوجه شد که فرآیند نظارت توسط توسعه دهندگان سازنده اجازه می دهد تا فریمورک در حالت اشکال زدایی در سرورهای تولید پیکربندی شود. این پیکربندی غیرعمدی، توضیحات مفصلی از تمام endpoint های API و پیام های خطا را نشان می دهد که حاوی مقدار قابل توجهی از اطلاعات اشکال زدایی می باشند. به عنوان مثال، کسپرسکی صفحه ای را با توضیحات درخواست بازیابی توکن Agora ارائه می دهد که برای برقراری ارتباط با ربات لازم است:
برقراری تماس با هر رباتی
الگوریتم برقراری ارتباط بین برنامه والدین و ربات به شرح زیر است:
- برنامه والد درخواستی را در فرمت زیر آغاز می کند:
سرور یک Agora Token در پاسخ تولید می کند که برنامه می تواند از آن برای اتصال به تماس از طریق سرویس Agora استفاده کند. پارامتر user_id را می توان به صورت تصادفی انتخاب کرد، در حالی که شناسه ربات در پارامتر channel_name ارسال می شود. کسپرسکی از طریق آزمایش، متوجه شد که هنگام پردازش درخواست برای تولید توکن Agora، سرور فروشنده تأیید نمی کند که آیا این شناسه با ربات مرتبط با کاربر مجاز فعلی مطابقت دارد یا خیر. علاوه بر این، سرور تأیید نمی کند که آیا درخواست اصلاً مجاز است یا خیر.
در نتیجه، عامل مخرب که یک درخواست مشابه درخواستی که در بالا توضیح داده شد را ارسال می کند، می تواند یک توکن Agora دریافت کند و تنها با استفاده از شناسه قابل حدس زدن ربات، یک مکالمه ویدیویی را با هر رباتی آغاز نماید.
- برای اتصال به تماس سرویس Agora باید داده های زیر ارائه شود:
- توکن دریافت شده از سرور فروشنده
- نام کانال (channel_name)، که شناسه ربات است
- Agora APP ID: شناسه برنامه با استفاده از Agora API، که برای همه ربات های یک مدل و برنامه والدین یکسان است.
یک کاربر غیرمجاز پس از اتصال به Agora، می تواند درخواست زیر را به سرور سازنده ارسال کند، همانطور که در تصویر نشان داده شده است:
ربات با شناسه مشخص شده (پارامتر نام کاربری) تماس ورودی را نمایش می دهد:
اگر کودک این تماس را بپذیرد، عامل تهدید می تواند بدون اطلاع والدین کودک با او صحبت کند و به طور بالقوه کودک را از خانه بیرون ببرد یا به سمت اقدامات خطرناک سوق دهد. بنابراین، عدم بررسی های امنیتی مناسب هنگام برقراری جلسه ویدیویی با ربات آموزشی کودکان، کودک را در هنگام بازی با ربات در معرض خطر قرار می دهد.
فرآیند به روز رسانی
ربات یک آرشیو به نام “APPS.z” را از فضای ابری در طول فرآیند به روز رسانی، دانلود می کند. این شامل یک اسکریپت خط فرمان است که مسئول باز کردن و نصب بروز رسانی است.
RCE (اجرای کد از راه دور) در طول فرآیند بروز رسانی
اسکریپت باز کردن و نصب در یک فایل با پسوند “*.l” موجود است و دارای فرمت زیر می باشد:
از آنجایی که فایل بروزرسانی فاقد امضای دیجیتال است، در تئوری، یک عامل مخرب می تواند به سرور بروزرسانی حمله کند و بایگانی را با آرشیو مخرب جایگزین کند. این حمله به عامل مخرب امکان اجرای دستورات دلخواه را بر روی همه ربات های دارای سطح دسترسی مدیر می دهد.
ربودن ترافیک والدین
عامل مخرب می تواند یک دستگاه دلخواه را به اکانت خود متصل کند و باعث شود اکانت والدین دسترسی به ربات را از دست بدهد. والدین برای بازیابی اتصال قانونی، می بایست با پشتیبانی فنی سازنده تماس حاصل کنند. حملاتی که شامل اتصال مجدد ربات می شوند به شرح زیر میباشد:
- عامل مخرب با فراخوانی روش checkAuthentication، ایمیل و شماره تلفن مالک را با استفاده از شناسه دستگاه به دست میآورد که میتواند از طریق بروت فورس حاصل شود.
2. مجرم سعی می کند با استفاده از ایمیل یا شماره تلفن دریافتی، احراز هویت را به انجام رساند. فرآیند احراز هویت شامل یک رمز عبور ضعیف یک بار مصرف (OTP) متشکل از شش رقم، با تلاش های نامحدود برای ورود است.
۳. عامل تهدید پس از اعمال سریع کد OTP و احراز هویت موفقیت آمیز، همانطور که در تصویر زیر نشان داده شده است میتواند ربات را از دستگاه والدین جدا کند،.
۴. عامل تهدید سپس قادر خواهد بود ربات را از راه دور به اکانت خود متصل کند. OTP تولید شده توسط ربات باید همانطور که در تصویر نشان داده شده است وارد شود:
مهاجم می تواند این کد را با فراخوانی روش checkAuthentication دریافت کند و تنها با دانستن شناسه دستگاه از طریق فیلد رمز عبور در پاسخ سرور OTP را بدست آورد.
ارتباطات با سازنده
سازنده با کسپرسکی تماس حاصل کرده و مسئولیت تمام مسائل امنیتی که به آنها گزارش شده بود را بر عهده گرفت. آنها دستورالعمل ها و راه حل های مورد نیاز را برای حفاظت از داده ها و جلوگیری از هرگونه سوء استفاده از ربات ارائه کردند. از این رو، فرصت مهاجمان احتمالی با تلاش آنها، از بین رفت.
جدول زمانی
- بیست و هفتم مارس 2023: مشکلات امنیتی به سازنده گزارش گردید.
- سیزدهم آوریل 2023: سازنده گزارش را پذیرفت.
- بیست و چهارم ژوئیه 2023: سازنده مشکلات امنیتی را تایید کرد.
- هجدهم اوت 2023: مشکلات امنیتی توسط سازنده برطرف گردید.
نتیجه گیری
این تحقیق تعدادی آسیب پذیری را در API ربات نشان داد که عوامل تهدید میتوانند از آنها برای ربودن اطلاعات حساس سوء استفاده کنند:
- داده های کودک
- کشور و شهر محل سکونت
- شماره تلفن
- آدرس ایمیل والدین
یک مهاجم میتواند حتی به ربات دسترسی غیرمجاز داشته باشد و آن را دوباره به نام خود ثبت کند. اقدامات امنیتی ناکافی در اسباب بازی کودکان در برابر تهدیدات امنیت اطلاعات می تواند عواقب جدی به دنبال داشته باشد. دسترسی غیرمجاز از راه دور به این نوع دستگاه، فرصت هایی را برای ایجاد مزاحمت سایبری، مهندسی اجتماعی و سوء استفاده از اعتماد کودکان فراهم آورد. علاوه بر این، بهره برداری از آسیب پذیری های اسباب بازی می تواند منجر به نشت اطلاعات حساس و حتی ویدیوهای ساخته شده در داخل خانه شود.
والدین به منظور جلوگیری از این خطرات، باید با دقت اسباب بازی های هوشمند را انتخاب و نرم افزار خود را بروزرسانی کنند. سازندگان این اسباب بازی ها به نوبه خود باید امنیت محصولات و زیرساخت های خود را به طور کامل آزمایش و مسئولانه مشتریان را در مورد تهدیدات احتمالی آگاه سازند.