مؤتمر DEFCON 27. سيارتك هي سيارتي. الجزء 2

مؤتمر DEFCON 27. سيارتك هي سيارتي. الجزء 1

في نهاية الفيديو ، سمعت صوت نقرة - لقد عملت على فتح قفل عجلة القيادة الميكانيكية ، والذي لا يمكننا التجول فيه إلكترونيًا. من الضروري استخدام شيء ميكانيكي ، لكسر أسطوانة القفل يدويًا أو للقيام بشيء مماثل ، لم أكن لأفعله بسيارتها. ستكون جميع البرامج الثابتة الموضحة في مقاطع الفيديو هذه متاحة على GitHub بعد عرضي التقديمي ، لذلك ما عليك سوى الانتقال إلى العنوان المشار إليه على الشريحة وتنزيل ملف OpenRemoteStart.

لنتحدث عما يحدث بالضبط عندما نضيف الإنترنت إلى هذا النظام ، لأنه يجب أن يكون مفيدًا ، أليس كذلك؟ كما قلت ، اشتريت وحدة تحكم عن بعد تسمى MyCar. إنه متاح في إصدارات مختلفة ، كان لدي نموذج Linkr LT-1.



MyCar هي مجرد علامة تجارية ، ويتم بيع هذه الوحدات تحت أسماء Linkr LT-1 و MyCar KIA و Visions MyCar و Carlink (CL6) ، إلخ. كما اتضح ، لبعض الوقت قام وكلاء كيا في كندا بتثبيت هذا النظام على السيارات أو ، على الأقل ، تطبيق يسمى MyCar KIA. ومن المثير للاهتمام أن هذا التطبيق لم يعد متاحًا للتنزيل على AppStore. أريد أيضًا أن أشير إلى أنني اخترت منتجات Fortin و MyCar ، ولكن وفقًا لمراجعات المستخدمين في منتديات الموضوعات الخاصة بإنذارات السيارات المستقلة ، فإن الأنظمة الأخرى لا تتصرف بشكل أفضل ولديها مشاكل مماثلة.

كان لدي سؤال مهم: لماذا يتم بيع منتج به مشكلات أمنية في السوق الثانوية لأجهزة إنذار السيارات ، وهل يزعج أي شخص؟ لذلك ، إذا كان أي منكم مهتمًا بأنظمة التشغيل عن بُعد ، انتبه إلى بعض الظروف المهمة. أولاً ، كما ذكرت سابقًا ، إذا لم يكن نظام DS مثبتًا بشكل صحيح على سيارة ذات ناقل حركة ميكانيكي ، فمن الممكن تمامًا أنه بعد بدء تشغيل المحرك عن بُعد ، ستذهب السيارة ببساطة بدون سائق إذا كان هناك بعض العتاد في علبة التروس. هذا أمر خطير حقًا. الخطر الثاني هو أنه إذا أوقف شخص ما السيارة في مرآب متصل بالمنزل ومحركه يعمل عن طريق الخطأ عن بعد ، فقد تختنق من أول أكسيد الكربون المتراكم. لذلك إذا كان لديك نظام DS ومرآب مرفق ،يجب أن يكون لديك بالتأكيد كاشفات أول أكسيد الكربون.

إذا كنت تستخدم نظام DS ، فلا تحاول أبدًا تشغيل محرك الجهاز دون معرفة مكانه بالضبط ، لأن العواقب يمكن أن تكون كارثية.

يحتوي MyCar ، وهو صندوق أسود صغير به سلكان يخرجان منه ، على 8 منافذ ، اثنان منها لواجهة المصحح. أظهر الاتصال بهذه الواجهة أن الجهاز يعمل بنظام Linux ، وهو صامت بشأن الشركة المصنعة. من السهل الدخول إلى هيكل البرامج الثابتة باستخدام كلمة مرور oelinux 123 ، ولكن يمكنك استخدام محرك AE بدون تسجيل الدخول ، مما يسمح لك بإدخال أوامر AT من سطر الأوامر ، بما في ذلك الأمر لتغيير عنوان IP للجهاز الذي تتصل به هذه الوحدة.



إذا نظرنا إلى الأسطر أدناه ، يمكننا أن نرى عنوان IP للخادم الذي تستقبل منه وحدة MyCar تحديثات البرامج الثابتة. تم تجهيز الجهاز بمنفذ L ، والذي يسمح لك "بالاستماع" إلى الأوامر التي تتلقاها الوحدة. باستخدام محرك AE وتغيير IP للجهاز المقترن ، تمكنت من تحديد أن هذا الجهاز يتواصل مع DS باستخدام بروتوكول UDP غير المشفر.

لم أخوض في هذا الأمر بشكل خاص ، لكنني أعتقد أن هذه حقيقة مهمة ومثيرة للاهتمام. إذا كنت مهتمًا بمعلومات إضافية حول هذا الجهاز ، فألق نظرة على هذه الشريحة - فهي تعرض الجهد 3.3 فولت ، ومعدل نقل البيانات 115200 بالباود ، وعنوان الخادم لتحديث البرامج الثابتة وكلمة مرور الجذر ورابط إلى دليل المستخدم.



قد يكون الجهاز أيضًا "متسامحًا" مع جهد إمداد أعلى.

كما قلت ، يمكن أن يكون الجو باردًا جدًا هنا. بعد حوالي شهر من تقديم هذا النظام إلى صديقتي ، قررت سحب الوحدة من السيارة والعمل معها بشكل صحيح. الحقيقة هي أنني كل هذا الشهر أخرجت من نفسي أفكارًا حول ضعف هذا الجهاز. في الأسبوع التالي وعدوا بالصقيع إلى -30 درجة مئوية ، لذلك اضطررت إلى التسرع. لقد اتصلت بالصدفة وجعلتها تعمل ، ولكن بما أن الاتصال الخلوي في مختبري المنزلي ليس جيدًا جدًا ، فقد قررت العمل مع الوحدة على كمبيوتر آخر. يحتوي جهاز FTDI الذي أستخدمه على سلك قصير ، لذا وجدت سلكًا آخر ، لفترة أطول ، وصلته بوحدة DS ، وقمت بتوصيله بالكمبيوتر ، وبمجرد تشغيل الطاقة ، بدأت وحدتي في التدخين!

من هذا يمكننا أن نتعلم الدرس: إذا كنت منخرطًا في اختراق الأجهزة ، فقم بتجهيز كتلة احتياطية! صنعت صديقتي المعنى الأخلاقي لهذه القصة: إذا كان رفيقك روحك مخترقًا ، فلا تدعه يلعب مع هدايا عيد الميلاد الخاصة بك! والآن دعونا نلقي نظرة على البرنامج ، أعتقد أنه لن يدخن شيء هنا.



لقد أطلقت خادم وكيل man-in-the-middle ، وأوقفت التحقق من SSL على هاتفي وبدأت في مشاهدة حركة المرور التي يرسلها التطبيق إلى جزء الخادم. عند التسجيل ، لاحظت أن النظام يأخذ عنوان بريدي الإلكتروني ويرسله إلى خدمة الويب للتأكد من أن هذا العنوان مرتبط بحساب موجود. من المثير للاهتمام أن النظام استخدم المصادقة الأساسية في هذه الحالة ، لأنني لم أقم بإنشاء حساب بعد. لم أكن أعرف ماذا أفعل بهذه المعلومات ، لذا قمت بتدوينها في دفتر ملاحظات وانتقلت. لقد أنشأت حسابي وقمت بتسجيل الدخول ، وأول شيء يفعله التطبيق عند تسجيل الدخول هو الاتصال بخدمة ويب للتحقق من المستخدم الحالي. لذلك اتصلت للتو بخادم الويب هذا باستخدام بيانات الاعتماد التي رأيتها سابقًا ، والتي تم استخدامها للتحقق من ذلكهل عنوان بريدي الإلكتروني موجود وقد تلقى مسؤول Mycar حق الوصول استجابة لذلك.



شككت في أن هذا كان حساب المسؤول الحقيقي للنظام ، لأنه على الرغم من الصوت العالي ، كان لديه امتيازات منخفضة. في النهاية ، كلنا نعرف مثل هؤلاء الناس.

لذلك ، أقوم بإنشاء طلب آخر - فريق EngineStart ، لبدء السيارة من هذا الحساب ، انقر فوق "إرسال" ، أحصل على حالة الأمر - "200 OK" ، وبعد حوالي ثلاث ثوانٍ بدأت سيارتي في التحرك.



كما اتضح ، كان حساب Mycar Admin بالفعل حساب مشرف ، تم ترميزه بشكل ثابت في تطبيق الهاتف المحمول. لكن هذا ليس كل شيء. في إحدى الشرائح السابقة ، رأيت شيئًا مثل مفتاح واجهة برمجة التطبيقات. مرة أخرى ، من مراقبة حركة مرور الخادم الوكيل المزيف ، اكتشفت أنه يمكن استخدام مفاتيح واجهة برمجة التطبيقات هذه بدلاً من اسم المستخدم وكلمة المرور. إذا كنت تستخدم "API" وأحد هذه المفاتيح كاسم المستخدم ، يمكنك مصادقة المستخدم.



لذا قمت بنسخ محتويات سطر "APIKey" ولصقته في سطر كلمة المرور لتطبيق POST وانقر على الزر "إرسال".



ومع ذلك ، لم يفلح ذلك ، ولم أتمكن من فهم السبب لمدة 5 دقائق طويلة. أخيرًا ، بدا لي أنني نسيت أن أقوم بقص علامات الاقتباس والفاصلة في مفتاح واجهة برمجة التطبيقات المنسوخ ، والذي تم إعلامي به: "لقد أخطأت في بناء جملة SQL." أصبح من الواضح لي أنه يمكنك ببساطة استخدام إدخال SQL الأساسي لتجاوز عملية تسجيل الدخول بالكامل وتصبح مسؤولاً أو أي مستخدم تريده. لا أعتقد أن أي شخص حاول سرقة سيارة باستخدام حقن SQL ، لذلك دعونا نحاول القيام بذلك.





بشكل عام ، قمت بتسجيل الدخول باستخدام حسابي ، ثم نقرت على "إرسال" واستلمت الحالة "200 OK" كرد. هذه المرة أدركت تسجيل فيديو. إنه مظلم قليلاً لأنني أطلقت النار في وقت متأخر من الليل من نافذة مكتبي. لذا ، أدخل الأمر ، وترى من خلال النافذة التي تومض في الجزء السفلي في فناء المصابيح الأمامية للسيارة. في البداية ، يكون الضوء ضعيفًا ، ولكن بعد ذلك تبدأ المصابيح الأمامية في التألق بكامل طاقتها - وهذا بدوره على المحرك. لذا ، بدأت السيارة باستخدام حقن SQL (تصفيق الجمهور).

لكن هذا ليس كل شيء. يمكن استخدام إدخال SQL ليس فقط للترخيص ، ولكن أيضًا لاستبدال المعلمات الأخرى ، مثل عناوين URL ، معلمات نص سلسلة الاستعلام ، إلخ. في الواقع ، يستخدم هذا النظام إدخال SQL في كل مكان. بالنظر إلى رسائل الخطأ ، يمكنك أن ترى أن ما نقوم بإدخاله ككلمة مرور تتم مقارنته مباشرة بعمود كلمة المرور في قاعدة البيانات.



هذا يعني أنهم يستخدمون كلمات مرور نصية بسيطة في عمليات حقن SQL. كما يقول المثل ، "هذا ليس جيدًا على الإطلاق ، ولكنه سيئ جدًا!" ولكن يكفي عن SQL ، دعنا نرى ما يمكن القيام به لبدء سيارة عن بعد. يمكنك ببساطة إرسال أمر "EngineStart" وفي المقابل تحصل على معرف صحيح ، وهو معرف هذا الأمر ، في هذه الحالة ID = 3. بمعرفة المعرف ، يمكنك "سحب" خدمة تُبلغ عن حالة هذا الأمر.



وبالتالي ، من خلال زيادة أو تقليل قيمة المعرّف ، "أسحب" حالة أي فريق تم إرساله إلى هذا النظام.



ومع ذلك ، هذا ليس مثيرًا للاهتمام بشكل خاص ، وأتساءل عما إذا كان هناك مؤشر مباشر على شيء يمكنني استخدامه لبدء تشغيل سيارتي. لذلك ، أطلقت الأمر EngineStart بالنيابة عن مستخدم شرعي من حسابي ، ثم حاولت الاتصال به من خلال حساب مستخدم آخر ، والذي لا يجب أن يكون لديه حق الوصول إلى النظام. ورداً على ذلك ، تلقيت رسالة خطأ: "هذا الحساب خارج سياق التسلسل الهرمي." لذا ، ربما ، لن تنجح طريقة القرصنة هذه. ومع ذلك ، إذا نظرت إلى واجهة برمجة التطبيقات هذه ، فسترى أنها تكرر المعلومات - يمكن مقارنة عنوان البريد الإلكتروني للمستخدم بمعرف حسابه.



إذا كنت تطور واجهة برمجة تطبيقات أو تخترق واجهة برمجة تطبيقات ، فقد يكون تكرار المعلومات التي نراها في عنوان URL هذا مصدرًا للأخطاء. في هذه الحالة ، يمكن أن تظهر أخطاء API في أربع طرق مختلفة.



إذا نظرت إلى الحالتين 2 و 3 ، محاطة بدائرة باللون الأحمر ، يمكنك رؤية روابط مباشرة إلى الكائن. في كلتا الحالتين ، لا يتحقق النظام مما إذا كان مصرحًا لك بتنفيذ هذا الأمر. جربت الحالة 2 ولم تنجح ، ولكن ماذا عن الحالة 3؟ هنا علينا فقط استبدال معرف الحساب USER_EMAIL في عنوان URL ، حيث إنه مرتبط مباشرة بمعرف الحساب ACCOUNT_ID. في السابق ، استخدمنا معرف حساب الضحية ، والآن نستخدم حساب المهاجم. لذلك ، استخدمت معرف حساب المخترق ومعرف جهاز الضحية ، وأرسلت الأمر ، وكما هو متوقع ، تلقيت حالة الأمر "200 OK" وتحكمت في تطبيق MyCar.
وبالتالي ، باستخدام ثلاث ناقلات هجوم مختلفة ، تمكنا من القيام بكل شيء يمكن لمستخدم التطبيق الشرعي القيام به. هذا يعني أنه يمكنك العثور على أي سيارة في المدينة ، وتعيين طرازها وطرازها في التطبيق ، ثم فتح السيارة عن بعد وبدء تشغيلها. يمكننا إيقاف المنبه أو تشغيله ، وإجراء تغييرات على قائمة الخدمة للسيارة والتحقق من حالة أي فريق. وكل هذا يمكن القيام به بثلاث طرق مختلفة.



من الواضح أن مطوري MyCar حاولوا إصلاح أخطاء النظام بطريقة أو بأخرى. لذا ، في حالة كلمات المرور المشفرة ، يضعون ببساطة خادم وكيل عكسي أمام التطبيق لإخفاء بيانات الاعتماد المستخدمة للترخيص. تكمن المشكلة في أن الوكلاء العكسيين ليسوا سحريين وغير قادرين على إصلاح جميع المشاكل. لقد قاموا بحفظ إدخال SQL في خدمة طرف ثالث ، لذلك حتى بدون كلمة مرور ، لا يزال بإمكاني استخدامه من خلال إجراء التحقق من المستخدم.



قررت إلقاء نظرة فاحصة على بنية عنوان URL. ربما لاحظت أن جميع العناوين التي يستخدمها النظام تحتوي على m2m. بعد أن قررت أن هذا نوع من التفاعل الداخلي لآلية التفويض في تطبيق MyCar ، قمت بإدخال هذه الرسائل في Google واكتشفت موقع M2M Suite على الويب. الشيء الوحيد الذي عليك فعله بعد رؤية هذا النموذج هو إدراج علامتي اقتباس منفردتين هناك ومعرفة ما يحدث. وما يحدث هو أنك تحصل على حقنة SQL المناسبة (تصفيق الجمهور).





ويحدث هذا بعد أشهر قليلة من إبلاغ المطورين عن مشكلة في إدخال SQL. إذا كان التطبيق يحتوي على مثل هذه المشاكل ، فيجب إصلاحها في أقرب وقت ممكن ، ولكن كما ترى ، لم يفعل المطورون شيئًا. مثل هذا التجاهل للمستخدمين ، أجد أنه مسيء.

تحتوي وحدة MyCar على وحدة GPS ، بحيث يمكنها تتبع موقع سيارتك وعرضها في التطبيق. ولكن ، كما اتضح ، فإنها لا تخزن فقط الموقع الحالي للسيارات. يقومون بتخزين الكثير من المعلومات ، أكثر من اللازم لتتبع الموقع الحالي للجهاز. في حالتي ، لمدة 13 يومًا من استخدام التطبيق ، قاموا بتجميع أقل من ألفي نقطة تحديد الموقع الجغرافي للأماكن التي زرتها سيارتي. لا تذكر سياسة خصوصية مطور MyCar أي كلمة حول هذه المجموعة من المعلومات.

ومع ذلك ، فإنه يزداد سوءًا. يمكنك القول أن هذا مجرد أثر جانبي لتنفيذ خدمة تحديد الموقع الجغرافي. ولكن الحقيقة هي أنه بدلاً من مجرد إنشاء قائمة بالأماكن التي توجد فيها سيارتك ، فإنهم يستخدمون واجهة برمجة تطبيقات أخرى تقوم بتحليل هذه البيانات وتحديد الأماكن التي تكون فيها سيارتك في أغلب الأحيان. مرة أخرى ، على حد علمي ، لا توجد إشارة إلى مثل هذه الوظيفة في سياسة الخصوصية. ربما هذا ليس مفاجئًا جدًا ، لأنه بعد مجموعة من عمليات البحث ، وجدت الشركة الأم MyCar المسماة Procon Analytics ، وذهبت إلى موقعها وزرت قسم الأسئلة الشائعة. هنا جئت عبر السؤال: "كيف يمكنك ضمان أمن البيانات؟". كانت استجابة الشركة: "على عكس البيئات السحابية العامة التي تقاتل من أجل أولوية التخزين ،تستخدم Procon Analytics سحابة افتراضية خاصة بها ، والتي يتم استخدامها حصريًا لمستخدمي تطبيقنا ومحمي من المستخدمين الآخرين. هذه بيئة سحابية خاصة مع درجة عالية من الحماية ، والتي توفر سهولة الوصول وسرعة تقديم الخدمة. من خلال العمل مع Procon Analytics ، يمكنك التأكد من أن بياناتك محمية بشكل جيد. " أنا لا أعرف حتى ماذا أقول ...



إذا ذهبت إلى صفحة الفيسبوك الخاصة بهم ، يمكنك معرفة المزيد من الاهتمام. هنا يكتبون مباشرة: "حماية المعلومات عن سيارتك أمر حيوي!". حسنًا ، يمكنني فقط أن أوافق على هذا البيان.

لذا ، بالعودة إلى السؤال الذي بدأته: "كيف يحدث هذا وكيف يمكن تجنبه"؟ والأهم من ذلك كيف يمكننا كمجتمع منع ذلك؟

هذه هي نهاية تقريري ، ولكن لا يزال بإمكاني الإجابة على سؤالين (تصفيق الجمهور).

هل تسأل إذا قاموا بإصلاح كل شيء؟ في الوقت الحالي ، أعتقد أنهم قاموا بإصلاح جميع الأخطاء التي أبلغتها لهم ، باستثناء أوجه القصور في سياسة الخصوصية ، التي ذكرتها في نهاية الخطاب. في المرة الأخيرة التي راجعتها ، لم يتغير كل شيء. بالنسبة للسؤال ، هل يمكنني تعديل معلمات وحدة التحكم في المحرك الإلكتروني ECU بهذه الطريقة ، سأجيب أن مهمتي كانت تعديل معلمات السيارة فقط في تطبيق MyCar. يقوم بتخزين التمثيل الرقمي للسيارة ، والذي يتم تحريره باستخدام الوصول المباشر إلى الكائن ، حقن SQL ، أو ناقل هجوم آخر.

السؤال الأخير هو: هل لدي نظام تشغيل المحرك بدون مفتاح في السيارة مع زر البدء ، وكيف هو الوضع مع قفل عجلة القيادة في هذه الحالة؟ إجابتي هي أن MyCar يحتوي على مثل هذا الزر ، لذلك لا يحتوي هذا النظام على قفل عجلة القيادة. أظن أنه إذا قمت بتثبيت هذا النظام ، فلا يمكنك بالتأكيد الاعتماد على قفل لقفل عجلة القيادة.


القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك VPS القائم على السحابة للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات 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.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles