کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 1

در پایان ویدیو، صدای کلیک را شنیدید - این باز شدن قفل مکانیکی فرمان است که با استفاده از الکترونیک نمی توانیم از آن عبور کنیم. شما باید از چیزی مکانیکی استفاده کنید، سیلندر قفل را با دست بشکنید یا کاری مشابه انجام دهید، که من قصد نداشتم با ماشین او انجام دهم. تمام سفت‌افزار نشان‌داده‌شده در این ویدیوها پس از سخنرانی من در GitHub در دسترس خواهد بود، بنابراین فقط به URL موجود در اسلاید بروید و فایل OpenRemoteStart را دانلود کنید.

بیایید در مورد اینکه وقتی اینترنت را به این سیستم اضافه می کنیم دقیقاً چه اتفاقی می افتد، زیرا باید برای ما خوب باشد، درست است؟ همانطور که گفتم، یک ماژول کنترل زنگ از راه دور به نام MyCar خریداری کردم. این در تغییرات مختلفی می آید، من مدل Linkr LT-1 را داشتم.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

MyCar فقط یک برند است و چنین ماژول هایی با نام های Linkr LT-1، MyCar KIA، Visions MyCar، Carlink (CL6) و غیره فروخته می شوند. همانطور که مشخص است، مدتی است که نمایندگی های KIA در کانادا این سیستم یا حداقل اپلیکیشنی به نام MyCar KIA را روی خودروهای خود نصب می کنند. جالب اینجاست که این برنامه دیگر برای دانلود در AppStore موجود نیست. همچنین می‌خواهم توجه داشته باشم که محصولات Fortin و MyCar را انتخاب کردم، اما طبق بررسی‌های کاربران در انجمن‌های موضوعی دزدگیر ماشین آزاد، سیستم‌های دیگر بهتر عمل نمی‌کنند و مشکلات مشابهی دارند.

من یک سوال مهم دارم: چرا بازار دزدگیر خودرو پس از فروش محصولی با مشکلات امنیتی می فروشد و هیچکس اهمیتی نمی دهد؟ بنابراین، اگر هر یک از شما علاقه مند به سیستم های راه انداز از راه دور هستید، به چند مورد مهم توجه کنید. اولا، همانطور که قبلاً اشاره کردم، اگر سیستم DS به درستی روی خودرویی با گیربکس دستی نصب نشده باشد، کاملاً ممکن است پس از راه‌اندازی موتور از راه دور، در صورتی که دنده‌ای در گیربکس درگیر باشد، خودرو به سادگی بدون راننده حرکت کند. . واقعا خطرناکه خطر دوم این است که اگر شخصی ماشینی را در یک گاراژ متصل پارک کند و به طور تصادفی موتور را از راه دور روشن کند، ممکن است در اثر مونوکسید کربن انباشته شده خفه شود. بنابراین اگر یک سیستم CO و یک گاراژ متصل دارید، قطعا باید آشکارسازهای مونوکسید کربن داشته باشید.

اگر از سیستم‌های DS استفاده می‌کنید، هرگز سعی نکنید موتور خودروی خود را بدون اینکه دقیقاً کجاست روشن کنید، زیرا عواقب آن می‌تواند فاجعه‌بار باشد.

دستگاه MyCar، یک جعبه سیاه کوچک که دو سیم از آن خارج می شود، دارای 8 پورت است که دو پورت آن به رابط دیباگر اختصاص دارد. اتصال به این رابط نشان داد که دستگاه دارای لینوکس است که سازنده در مورد آن سکوت کرده است. ورود به پوسته سیستم عامل با استفاده از رمز عبور oelinux 123 آسان است، اما می توانید بدون ورود به سیستم از موتور AE استفاده کنید، که به شما امکان می دهد دستورات AT را از خط فرمان وارد کنید، از جمله دستور تغییر آدرس IP دستگاه که با آن این ماژول ارتباط برقرار می کند.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

اگر به خطوط زیر نگاه کنیم، می توانیم آدرس IP سروری را ببینیم که ماژول MyCar از آن به روز رسانی سیستم عامل را دریافت می کند. این دستگاه مجهز به یک پورت L است که به شما امکان می دهد به دستورات دریافت شده توسط ماژول "گوش دهید". با استفاده از موتور AE و تغییر IP دستگاه جفت شده، توانستم تشخیص دهم که این دستگاه با استفاده از پروتکل UDP رمزگذاری نشده با DS ارتباط برقرار می کند.

من زیاد به آن نگاه نکرده ام، اما فکر می کنم این یک واقعیت بسیار مهم و جالب است. اگر علاقه مند به اطلاعات بیشتر در مورد این دستگاه هستید، به این اسلاید نگاهی بیندازید - ولتاژ منبع تغذیه 3,3 ولت، نرخ انتقال داده 115200 باود، آدرس سرور برای به روز رسانی سیستم عامل، رمز عبور ریشه و پیوند را نشان می دهد. به دفترچه راهنمای کاربر.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

دستگاه می تواند ولتاژهای تغذیه بالاتر را "تحمل کند".

همانطور که گفتم اینجا خیلی سرد می شود. حدود یک ماه پس از اینکه این سیستم را به دوست دخترم هدیه دادم، تصمیم گرفتم دستگاه را از ماشین بیرون بیاورم و آن را به خوبی اجرا کنم. واقعیت این است که در تمام این ماه افکار مربوط به آسیب پذیری این دستگاه را از بین برده ام. آنها دمای تا -30 درجه فارنهایت را برای هفته آینده پیش بینی کردند، بنابراین من مجبور شدم عجله کنم. من به پوسته وصل شدم و آن را به کار انداختم، اما از آنجایی که دریافت تلفن همراه در آزمایشگاه خانه من خیلی خوب نیست، تصمیم گرفتم با جعبه روی رایانه دیگری کار کنم. یونیت FTDI که من استفاده می کنم سیم کوتاهی دارد، بنابراین یک سیم بلندتر پیدا کردم، آن را به واحد DS وصل کردم، آن را به کامپیوتر وصل کردم و به محض اینکه برق را روشن کردم، دستگاهم شروع به دود کردن کرد!

درسی که از این موضوع می توان آموخت این است: اگر سخت افزار را هک می کنید، یک واحد یدکی آماده داشته باشید! دوست دخترم اخلاقیات داستان را اینگونه بیان کرد: اگر طرف مقابل شما هکر است، اجازه ندهید او با هدایای کریسمس شما بازی کند! حالا بیایید نرم افزار را بررسی کنیم، فکر می کنم اینجا چیزی دود نمی کند.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

من یک پروکسی man-in-the-middle راه‌اندازی کردم، تأیید SSL را در تلفنم غیرفعال کردم و تماشا کردم که برنامه چه ترافیکی را به باطن ارسال می‌کند. هنگام ثبت نام متوجه شدم که سیستم آدرس ایمیل من را گرفته و آن را به وب سرویس فرستاد تا مطمئن شود که آدرس با یک حساب موجود مرتبط است. جالب است که سیستم از احراز هویت اولیه استفاده می کرد زیرا من هنوز یک حساب کاربری ایجاد نکرده بودم. من نمی دانستم با این اطلاعات چه کنم، بنابراین فقط آن را در یک دفتر یادداشت کردم و ادامه دادم. من حساب کاربری خود را ایجاد کردم و وارد شدم و اولین کاری که برنامه هنگام ورود انجام می دهد تماس با یک وب سرویس برای تأیید کاربر فعلی است. بنابراین من به سادگی با این وب سرور با اعتبارنامه هایی که قبلا دیده بودم تماس گرفتم، که برای بررسی وجود آدرس ایمیل من استفاده می شد و در پاسخ به Mycar Admin دسترسی داده شد.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

من شک داشتم که این یک حساب مدیر واقعی سیستم باشد، زیرا علیرغم صدای بلند، امتیازات کمی داشت. به هر حال، همه ما چنین افرادی را می شناسیم.

بنابراین، من درخواست دیگری ایجاد می کنم - فرمان EngineStart، برای راه اندازی ماشین از این حساب، روی "ارسال" کلیک کنید، وضعیت فرمان را در پاسخ - "200 OK" دریافت کنید و پس از حدود سه ثانیه ماشین من شروع به حرکت می کند.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

همانطور که مشخص شد، حساب کاربری Mycar Admin در واقع یک حساب مدیریتی بود که در برنامه تلفن همراه کدگذاری شده بود. اما این همه ماجرا نیست. در یکی از اسلایدهای قبلی چیزی به عنوان کلید API مشاهده کردید. دوباره، از نظارت بر ترافیک سرور پروکسی جعلی خود، متوجه شدم که این کلیدهای API را می توان به جای نام کاربری و رمز عبور استفاده کرد. اگر از "API" به عنوان نام کاربری و یکی از این کلیدها استفاده می کنید، می توانید کاربر را احراز هویت کنید.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

بنابراین محتویات خط "APIKey" را کپی کردم، آن را در خط رمز عبور برنامه POST قرار دادم و روی دکمه "ارسال" کلیک کردم.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

با این حال، کار نکرد و من تا مدت 5 دقیقه نتوانستم دلیل آن را بفهمم. در نهایت متوجه شدم که فراموش کردم نقل قول و کاما را در کلید API کپی شده حذف کنم، که به من گفته شد: "شما در نحو SQL اشتباه کردید." برای من روشن شد که شما به سادگی می توانید از یک تزریق اولیه SQL برای دور زدن کل فرآیند ورود و تبدیل شدن به یک مدیر یا هر کاربری که می خواهید استفاده کنید. من فکر نمی‌کنم کسی تا به حال با استفاده از تزریق SQL اقدام به سرقت ماشین کند، پس بیایید آن را امتحان کنیم.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

به طور کلی، من وارد حساب کاربری خود شدم، روی "ارسال" کلیک کردم و در پاسخ وضعیت "200 OK" دریافت کردم. این بار فکر کردم یک ویدیو ضبط کنم. هوا کمی تاریک است چون شب آخر از پنجره دفترم مشغول فیلمبرداری بودم. بنابراین، من دستور را وارد می کنم و از پنجره می بینید که چراغ های جلوی ماشین در حیاط زیر چشمک می زند. در ابتدا نور آنها ضعیف است، اما سپس چراغ های جلو با قدرت کامل شروع به درخشش می کنند - این موتور روشن می شود. بنابراین، من ماشین را با استفاده از تزریق SQL (تشویق حضار) روشن کردم.

اما این همه ماجرا نیست. تزریق SQL می تواند نه تنها برای مجوز، بلکه برای جایگزینی پارامترهای دیگر مانند URL، پارامترهای بدنه رشته پرس و جو و غیره استفاده شود. در واقع این سیستم در همه جا از تزریق SQL استفاده می کند. با نگاه کردن به پیام های خطا، می بینیم که آنچه به عنوان رمز عبور وارد می کنیم، مستقیماً با ستون رمز عبور در پایگاه داده مقایسه می شود.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

این بدان معنی است که آنها از رمزهای عبور متن ساده در تزریق SQL استفاده می کنند. همانطور که می گویند، "این اصلا خوب نیست و حتی بسیار بد است!" اما در مورد SQL کافی است، بیایید ببینیم چه کارهای دیگری می توانید برای راه اندازی ماشین خود از راه دور انجام دهید. شما به سادگی دستور "EngineStart" را ارسال می کنید و در پاسخ یک شناسه عدد صحیح دریافت می کنید که نشان دهنده شناسه این دستور است، در این مورد ID = 3 است. با دانستن شناسه، می توانید سرویسی را "کشش" کنید که وضعیت این دستور را گزارش کند. فرمان

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

بنابراین با افزایش یا کاهش مقدار ID، وضعیت هر فرمانی را که تا به حال بر روی آن سیستم ارسال شده است، "کشش" می کنم.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

با این حال، هیچ چیز جالبی در مورد آن وجود ندارد، و من نمی‌دانم که آیا اشاره مستقیمی به یک شی در اینجا وجود دارد که بتوانم از آن برای روشن کردن ماشینم استفاده کنم. بنابراین من دستور "EngineStart" را به عنوان یک کاربر قانونی از حساب خود اجرا کردم و سپس سعی کردم از طریق حساب کاربری دیگری که نباید به سیستم دسترسی داشته باشد، آن را فراخوانی کنم. در پاسخ، یک پیام خطا دریافت کردم: "این حساب در زمینه سلسله مراتب نیست." پس شاید این هک کار نکند. با این حال، اگر به این API نگاه کنید، خواهید دید که اطلاعات را کپی می کند - آدرس ایمیل کاربر به شناسه حساب آنها نگاشت شده است.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

اگر در حال توسعه یک API یا هک کردن یک API هستید، نوع تکراری اطلاعاتی که در این URL می بینیم می تواند منبع خطا باشد. در این مورد، اشکالات API می توانند خود را به چهار روش مختلف نشان دهند.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

اگر به موارد 2 و 3 که با رنگ قرمز مشخص شده اند نگاه کنید، می توانید ارجاع مستقیم به شی را ببینید. در هر دو مورد، سیستم بررسی نمی کند که آیا شما مجاز به اجرای دستور هستید یا خیر. مورد 2 رو امتحان کردم جواب نداد، مورد 3 چطور؟ در اینجا فقط باید شناسه حساب USER_EMAIL را در URL جایگزین کنیم زیرا مستقیماً با شناسه حساب ACCOUNT_ID مرتبط است. قبلا از شناسه حساب قربانی استفاده می کردیم، اما اکنون از حساب مهاجم استفاده می کنیم. بنابراین من از شناسه حساب هکر و شناسه دستگاه قربانی استفاده کردم، دستور را ارسال کردم و انتظار می رفت وضعیت فرمان "200 OK" را دریافت کردم و کنترل برنامه MyCar را به دست آوردم.
بنابراین، با سه بردار حمله مختلف، ما قادر به انجام هر کاری بودیم که یک کاربر قانونی برنامه می توانست انجام دهد. این بدان معنی است که شما می توانید هر ماشینی را در شهر پیدا کنید، مارک و مدل آن را در برنامه تنظیم کنید و سپس قفل ماشین را از راه دور باز کنید و آن را روشن کنید. می توانیم دزدگیر را خاموش یا روشن کنیم، تغییراتی در منوی سرویس خودرو ایجاد کنیم و وضعیت هر دستوری را بررسی کنیم. و همه اینها را می توان به سه روش مختلف انجام داد.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

واضح است که توسعه دهندگان MyCar سعی کردند به نحوی اشکالات سیستم را برطرف کنند. بنابراین، در مورد رمزهای عبور هاردکد، آنها به سادگی یک پروکسی معکوس در جلوی برنامه قرار می دهند تا اعتبارنامه هایی را که برای مجوز استفاده می شود پنهان کند. مشکل این است که پراکسی های معکوس جادویی نیستند و نمی توانند همه مشکلات را برطرف کنند. آنها تزریق SQL را در یک سرویس شخص ثالث ذخیره کردند تا حتی بدون رمز عبور همچنان بتوانم از طریق روش تأیید کاربر از آن استفاده کنم.

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

من تصمیم گرفتم نگاه دقیق تری به ساختار URL بیاندازم. شاید متوجه شده باشید که تمام آدرس های استفاده شده توسط سیستم حاوی m2m هستند. تصمیم گرفتم که این نوعی تعامل داخلی برای مکانیسم مجوز در برنامه MyCar است، این نامه ها را در Google وارد کردم و وب سایت M2M Suite را کشف کردم. تنها کاری که می توانید با دیدن این فرم انجام دهید این است که چند نقل قول را در آنجا قرار دهید و ببینید چه اتفاقی می افتد. اتفاقی که خواهد افتاد این است که شما تزریق SQL مورد نظر را دریافت خواهید کرد (تشویق حضار).

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

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

ماژول MyCar دارای یک واحد GPS است تا بتواند موقعیت ماشین شما را ردیابی کرده و آن را در برنامه نمایش دهد. اما، همانطور که معلوم شد، آنها نه تنها مکان فعلی خودروها را ذخیره می کنند. آنها اطلاعات جهنمی زیادی را ذخیره می کنند، بسیار بیشتر از آنچه برای پیگیری موقعیت فعلی خودرو لازم است. در مورد من، بیش از 13 روز از استفاده از برنامه، آنها کمی کمتر از دو هزار نقطه موقعیت جغرافیایی مکان هایی را که ماشین من بازدید کرده است جمع آوری کردند. سیاست حفظ حریم خصوصی شرکت توسعه دهنده MyCar هیچ کلمه ای در مورد چنین مجموعه ای از اطلاعات نمی گوید.

با این حال، حتی بدتر می شود. شما می توانید استدلال کنید که این فقط یک اثر جانبی اجرای سرویس مکان است. اما مسئله این است که به جای ایجاد فهرستی از مکان‌هایی که ماشین شما به آن‌ها می‌رود، آنها از API دیگری استفاده می‌کنند که آن داده‌ها را تجزیه و تحلیل می‌کند و مکان‌هایی را که ماشین شما اغلب به آنجا می‌رود را مشخص می‌کند. باز هم، تا آنجا که من می دانم، هیچ اشاره ای به چنین ویژگی در سیاست حفظ حریم خصوصی وجود ندارد. شاید این چندان تعجب آور نباشد زیرا پس از کلی جستجو، شرکت مادر MyCar به نام Procon Analytics را پیدا کردم، به وب سایت آنها رفتم و از بخش سؤالات متداول بازدید کردم. در اینجا با این سوال مواجه شدم: "چگونه امنیت داده ها را تضمین می کنید؟" پاسخ این شرکت این بود: «برخلاف ابرهای عمومی که برای اولویت در ذخیره سازی داده ها رقابت می کنند، Procon Analytics از ابر مجازی خود استفاده می کند که منحصراً برای کاربران برنامه ما استفاده می شود و از تداخل سایر کاربران محافظت می شود. این یک محیط ابری ویژه با درجه بالایی از امنیت است که دسترسی آسان و سرعت ارائه خدمات را تضمین می کند. با همکاری با Procon Analytics، می توانید مطمئن باشید که داده های شما به طور ایمن محافظت می شود. حتی نمیدونم به این چی بگم...

کنفرانس DEFCON 27. ماشین شما ماشین من است. قسمت 2

اگر به صفحه فیس بوک آنها بروید، می توانید چیزهای جالب تری را نیز دریابید. در اینجا آنها به سادگی می نویسند: "حفاظت از اطلاعات خودروی شما حیاتی است!" خوب، من فقط می توانم با چنین جمله ای موافق باشم.

بنابراین، به سؤالی که با آن شروع کردم برگردیم: "چگونه این اتفاق می افتد و چگونه می توان از آن جلوگیری کرد"؟ و مهمتر از آن، چگونه می توانیم به عنوان یک جامعه از این اتفاق جلوگیری کنیم؟

این گزارش من را به پایان می رساند، اما همچنان می توانم به چند سوال پاسخ دهم (تشویق حضار).

می پرسی همه چیز را درست کردند؟ در این مرحله، فکر می‌کنم آنها تمام اشکالاتی را که به آنها گزارش داده‌ام، به استثنای نقص‌های سیاست حفظ حریم خصوصی که در پایان صحبت ذکر کردم، برطرف کرده‌اند. آخرین باری که آن را بررسی کردم، همه چیز بدون تغییر بود. وقتی از من پرسیده شد که آیا می توانم پارامترهای واحد کنترل الکترونیکی موتور خودرو (ECU) را به روشی مشابه ویرایش کنم، پاسخ خواهم داد که وظیفه من ویرایش پارامترهای خودرو فقط در برنامه MyCar بود. این یک نمایش دیجیتالی از وسیله نقلیه را ذخیره می کند که از طریق دسترسی مستقیم به شی، تزریق SQL یا سایر بردارهای حمله ویرایش می شود.

سوال آخر این است که آیا من در خودروی خود سیستم استارت بدون کلید با دکمه استارت دارم و وضعیت قفل فرمان در این حالت چگونه است؟ پاسخ من این است که MyCar چنین دکمه ای دارد پس این سیستم قفل فرمان ندارد. من گمان می کنم که اگر این سیستم را نصب کنید، قطعاً نمی توانید به قفل فرمان اعتماد کنید.

چند تبلیغ 🙂

از اینکه با ما ماندید متشکرم آیا مقالات ما را دوست دارید؟ آیا می خواهید مطالب جالب تری ببینید؟ با ثبت سفارش یا معرفی به دوستان از ما حمایت کنید ابر VPS برای توسعه دهندگان از 4.99 دلار, یک آنالوگ منحصر به فرد از سرورهای سطح ورودی که توسط ما برای شما اختراع شده است: تمام حقیقت در مورد VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps از 19 دلار یا چگونه سرور را به اشتراک بگذاریم؟ (در دسترس با RAID1 و RAID10، حداکثر 24 هسته و حداکثر 40 گیگابایت DDR4).

Dell R730xd 2 برابر ارزان تر در مرکز داده Equinix Tier IV در آمستردام؟ فقط اینجا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV از 199 دلار در هلند! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - از 99 دلار! در مورد بخوانید نحوه ساخت شرکت زیرساخت کلاس با استفاده از سرورهای Dell R730xd E5-2650 v4 به ارزش 9000 یورو برای یک پنی؟

منبع: www.habr.com

اضافه کردن نظر