مساوئ برتوكول الـUpnp ومخاطرة علي أنترنت الأشياء وكيف يمكن أن يستغل عن بعد
مع التطور التكنولوجي السريع الذي أصبحنا فيه أصبحت التكنولجيا تدخل في حياتنا كل يوم أكثر فأكثر .
وهذا التدخل علي هيئه أشكال كثيره أهمها أنترنت الأشياء فأصبح لدينا غلايه متصله بالأنترنت وتلفاز متصل بالأنترنت حتي أصبح هناك بيوت تبني ذكيه بالكامل !
وهنا تكمن المشكله حيث أن معظم الشركات بل ويكاد يكون جميعها لا يهتمون بحمايه هذه الأجهزه بقدر ما يهتمون بأن يكون يعمل بطريقه جيده وبه العديد من المميزات ليجذب العديد من المشترين ولا يفكرون أو يلقون نظره حتي علي نظامه الأمني قبل أن يتصل بالأنترنت وأنا هنا لا أتكلم عن هجمات الـmisconfiguration التي تحدث كثيرا مع هذه الأجهزه فعلي سبيل المثال Mirai Botnet يستخدم كلمات السر الأفتراضيه للـIoT أو أنترنت الأشياء في كثير من هجماته ولكنه ليس هذا موضوعنا اليوم.
سأريك اليوم كم الأهمال الذي ستجده فكل الذي يتطلبه الأمر هو شخض جاهزا للحفر (البحث).
سوف نبدأ حديثنا بالتحدث عن برتوكول الـUPNP وهو برتوكول يستخدم بكثره في أنترنت الأشياء وهنا تكمن الكارثه وستعلم لماذا بعد قليل.
برتوكول upnp هو يعتبر بمثابه مجموعه من البروتوكولات والذي صنع خصيصا من أجل أن يجعل الأجهزه الموجوده بالشبكه مثل الأجهزه الشخصيه والطابعات والهواتف وغيرها من الأجهزه أن تكتشف بعضها علي الشبكه ومن ثم يقومون بتبادل البيانات والتي هي تكون عباره عن تفاصيل الجهاز والأكشنز التي تستطيع تنفيذها مثل تغيير الأعدادات وغيرها والـEvents وغيرها وهو يعتمد في هذا علي بروتوكول الـHTTP وبروتوكول الـSOAP (والذي هو بروتوكول للتواصل بين الأنظمه المختلفه علي هيئه XML ويستطيع أن يعتمد في أيصال الرسائل علي برتوكول الـHTTP , الـTCP , الـUDP , الـSMTP أو الـJMS ولكنه في الغالب يستخدم HTTP من خلال حزم UDP لضمان السرعه ) ويستخدم بروتوكولSSDP في أكتشاف الأجهزه الأخري التي علي الشبكه .
بدون الدخول في تفاصيل أكثر عن كيفيه عمله تستطيع أن تبحث عنه بنفسك أذا أردت تفاصيل أكثر.
والأن سنتحدث عنه من الناحيه الأمنيه ولما هو غير أمن.
- المشكله الأولي به هي أنه Authenticationless أو كما يقال Insecure by design بمعني أنه مقصود أن يصنع غير أمن فا بالتالي أذا كان مفعل في أي جهاز يستطيع أي أحد أن يتصل به !
ولذلك تلجأ بعض الشركات الي طبقه أضافيه من الحمايه وهي عن طريق تأمين الجهاز أكثر وهناك حل موجود بالفعل ولكنه غير رسمي ويسمي بالـUPnP-UP أختصارا لـUniversal Plug and Play – User Profile والتي تتيح بعمل توثيق أو Authentication للمستخدم الذي يقوم ببعض الأكشنز (Actions) المهمه ولكن للأسف قليله للغايه الشركات التي تهتم بحمايه هذا البرتوكول والذي يؤدي في النهايه الي أجهزه غير مؤمنه فـعلي سبيل المثال تخيل ان يكون البروتوكول مفعل علي جهاز الروتر (Router) الخاص بك ( والذي بالمناسبه العديد من الأشخاص يقومون بتفعيله بجهل منهم مما قد يفعل بحجه فتح منفذ في جدار الحمايه الخاص بالروتر من أجل الألعاب الأونلاين مثلا والعديد من الأسباب ) الأن أذا أصيب جهاز بداخل الشبكه ببرمجيه خبيثه ما ستستطيع أن تفتح منفذ خاص بها بالروتر لتتصل مع السيرفر الخاص بها متجاوزه جدار الحمايه وتستطيع القيام بالعديد من الأشياء الأخري التي سنراها بعد قليل. - المشكله الثانيه به أنه يمكن الأتصال به من خارج الشبكه في بعض الحالات مثل أن تكون هناك ثغره في الروتر تتيح هذا وبالفعل أكتشف العديد من الثغرات بهذا الشكل أو بطريقه أخري سنشرحها في نهايه المقال فعلي سبيل المثال في سنه 2011 قام باحث أمني ببرمجه أداه تستغل ثغره موجوده في بعض الأجهزه تتيح له الأتصال بأجهزه الروترز المفعل بها البروتوكول من خارج الشبكه وفتح منفذ بها وعرضت الأداه في مؤتمر DEFCON 19 وهكذا
والأن كفا كلاما فلنبدأ بالشرح العملي 😀
أختراق الأجهزه عن طريق برتوكول الـUPNP
الأعتراف بعدم المعرفه لا ينقص من شخصك ولكن أدعاء المعرفه يفعل فا بالنسبه لي أنا كنت في البدايه لا أعلم شيئا عن بروتوكول الـUpnp من قبل الا فيما يستخدم ولم أجرب أن أتصل من خلاله من قبل أو أنظر اليه من الناحيه الأمنيه حتي في مره كان هناك تلفاز سامسونج ذكي متصل معي علي شبكتي الخاصه ومن ثم خطر لي أن أختبره فبعد أن فحصته بالـNmap وفحص الخدمات ومحاولات كثيره لأختراقه تبقي برتوكول وحيد لم أجرب معه شئ وهو الـupnp فبدأت أقرأ حتي قررت أن أتصل به وبعد بحث عرفت أن هناك أداه مخصصه لهذا تسمي Miranda وهي أداه مبنيه علي البايثون وموجوده بشكل أفتراضي في توزيعه Kali Linux وقمت بأستخدامها في أختراق التلفاز وأجهزه أخري بعدها كما سنشرح بعد قليل 😀
أداه Miranda بها العديد من الخصائص دعنا نشرح أهمها والباقي ستفهمه بنفسك ونحن نخترق 😀
لأكتشاف الأجهزه التي علي الشبكه المفعل بها بروتوكول الـUPNP يقوم البروتوكول بأستخدام بروتوكول أخر يسمي SSDP كما ذكر سابقا فا عند أستخدامك أداه Miranda ستتعرض لأمرين كل أمر منهم يقدم نوع من البحث :
- الأول هو msearch وهو يقوم بأرسال رسائل SSDP لكل الأجهزه التي علي الشبكه وينتظر الأستجابه فأن أستجابوا فالخدمه مفعله وميزته أنه سريع وعيبه ان هذا البحث فوضوي للغايه بمعني أنه اذا قام أحد بتحليل الشبكه فسيجد العديد من الحزم مرسله من جهازك أو كان هناك بالفعل نظام IDS أو IPS وكان مدير الشبكه مهيأه من قبل !
- الثاني هو pcap وهو عكس الأخر حيث أنه يقوم بالتنصت حتي يرسل جهاز أخر حزمه SSDP فيعلم أن الخدمه مفعله به وميزته التخفي فهنا لا شئ يرسل من الجهاز وعيبه بالطبع البطئ فأنت عليك الأنتظار حتي يرسل جهاز حزمه SSDP.
الأن لنبدأ بالأختراق 😀
أختراق تلفاز سامسونج الذكي
في هذا الجزء سأشرح لكم الثغره التي أكتشفتها مؤخرا في تلفازات سامسونج الذكيه
في البدايه بعد تشغيل الأداه قمت بأستخدام أمر msearch وذلك لأنها بالفعل شبكتي 😀 فكانت النتيجه
والأن نقوم بتطبيق الأمر host list لعرض الأجهزه الملتقطه ومعرفه رقم كل جهاز
من الصوره نجد أن التلفاز رقم 1 والجهاز الأخر المفتوح به العديد من المنافذ هذا سنشرح أختراقه بعد التلفاز 😀
والأن نقوم بتنفيذ الأمر host get 1
الأن حصلنا علي المعلومات اللازمه للأتصال ونستطيع أستعراضها عن طريق الأمر host info 1
كما نري قائمه deviceList فلنري ما بداخلها عن طريق الأمر host info 1 deviceList ولاحظ حاله الحروف والكلمات في الأوامر القادمه
ندخل علي قائمه dialreceiver
نجد معلومات أكثر عن التلفاز والأن نفتح قائمه services
ومن ثم dial ومن ثم actions
وهنا أكتشفت شئ وقت كتابه هذه المقاله أن التحديث الأخير للتلفاز من يومين قد صلح هذه الثغره ونحن الأن لا نستطيع التحكم في الجهاز مما يأكد أن الثغره قد اقفلت بعد نشري لأكتشافها منذ خمس أيام علي مواقع التواصل الأجتماعي والذي هو يعتبر بمثابه رقم قياسي لهم لتصليح الثغره حتي قبل أن أكتب عنها :3
أن خطر في بالك الأن لم نشرت الخطوات السابقه كلها بعد أن علمت أن الثغره قد أقفلت ؟
في الحقيقه كنت أقصد نشرها لأنها نفس الخطوات لأختراق التلفاز الفرق الوحيد أن بجانب dialreceiver التي كنا وجدناها كنا سنجد فرع أخر يسمي MediaRenderer ومن بعد فتحه كنا سنجد ثلاث خدمات (services) كل واحده تعطيك أكشنز (Actions) مختلفه تستطيع القيام بها مختلفه عن الأخري فعلي سبيل المثال من ضمن الخدمات التي كانت موجوده خدمه RenderingControl والتي عند أستعراض الأكشنز التي بها مثلما فعلنا مع dial كنت ستري الأتي :
كما نري العديد من الأشياء الجيده التي نستطيع القيام بها مثل معرفه الصوت وتغييره ومعرفه مدي أضائه الشاشه والتحكم بها وهكذا والأن اذا أردنا أرسال أكشن من هذه الأكشنز ماذا سنفعل ؟
ستستخدم نفس الأمر لكن مع أستبدال info بـ send ومسح أنواع القوائم فعلي سبيل المثال في حالتنا هذه كان الأمر :
host info 1 deviceList MediaRenderer services RenderingControl actions
فيصبح
host send 1 MediaRenderer RenderingControl
ومن ثم نضيف أسم الأكشن فعلي سبيل المثال أذا أردنا ضبط الصوت سنختار من القائمه التي بالصوره بالأعلي SetVolume
لكن لاحظ أنه عند أرسال أي أكشن سيقوم بسؤالك بعض الأسأله ليس لها علاقه بهدفك لكن أنا بعد تجربه عرفت قيمتها فعلي سبيل المثال قد يسألك علي InstanceID هذا سيكون قيمته صفر كل مره وقد يسألك علي Channel ولكن أذا نظرت الي القيم المتاحه (Allowed Values) لن تجد بها الا كلمه واحده Master قم بكتابتها وفي بعض الأحيان عند أرسال أكشن عباره عن تفعيل أو عدم تفعيل ليس به قيمه لأختيارها مثل كتم صوت التلفاز يكون مفعل أو غير مفعل ستجده يسألك علي قيمه تسمي بالـBoolean لا تقلق أذا كنت جديد في عالم البرمجه فدعني أخبرك أنه في البرمجه الـBoolean هو عباره عن نوع من البيانات لا يمكن أن يحمل الا قيمتين وهو (True-False) أو في لغات أخري (1-0) أو بالعربي 😀 حقيقي أو غير حقيقي فا في حاله أكشن مثل SetMute سيسألك علي القيمه وستجد في القيم المتاحه مكتوب 1 أو 0 فا بالتالي ستستخدم 1 اذا كنت ترغب بتفعيله فتكتم صوت التلفاز أو 0 اذا أردت عدم كتمه وهذا مثال علي عند تغيير صوت التلفاز :
ومن ثم أنظر الي تلفازك ستجده الصوت تغير مع ضغطه الأنتر الأخيره كأنه نوع من أنواع السحر :V
التحكم في مستقبل رقمي (Receiver) من نوع Humax
بعد أختراقي للتلفاز بدأت بأختبار كل جهاز لدي علي الشبكه فكان من ضمنها مستقبل رقمي متصل الأنترنت ومتصل بنفس التلفاز الذكي السابق أختراقه 😀
في البدايه قمت بالبحث عن طريق الأمر msearch فكانت النتيجه
بعد تجاهل الجهاز صاحب الأيبي رقم 192.168.1.7 لأنه التلفاز ستجد أن الجهاز صاحب الأيبي رقم 192.168.1.2 به أربع منافذ مفتوحه يعمل عليها برتوكول الـupnp وفي الحقيقه هذا الجهاز هو المستقبل اذا الأن ليس أمامنا الا تجربه كل منفذ علي حدا
اذا الأن نستخدم الأمر host list
كما نري أمامنا 0,2,3 و 4 فلنبدأ برقم 0 بالترتيب بالأمر host get 0
سنجد أن هناك نوع من الخطأ قد ظهر وهو ليس بباشره خير ولكن لنكمل وننفذ الأمر host info 0 deviceList
ندخل علي قائمه HMXRCUServer ومن ثم services لأختصار الوقت
لا نجد شئ اذا هذا ليس المنفذ المناسب الأن نتصل برقم 2
تم الأتصال بدون أخطاء وهذه بادره خير 😀 لأختصار الوقت والكتابه بفتح deviceList ومنها فتحت MediaServer ومنها قمت بفتح services فوجدت
من الواضح هنا أنهم خدمات لهم علاقه بالملفات الموجوده علي الـMedia Server ولتوفير الوقت عند أرسال أي أكشن موجود بأي خدمه منهما سيعطينا خطأ بجانب القيم الكثيره التي سيسألها وهذا مثال علي ما قمت بتجربته للبحث عن فيلم Batman وهو موجود بالفعل عليه
كما نري خطأ فلنجرب مع رقم 3 ولعدم تضييع الوقت لن نجد فيه شئ اذا سنجد في 4
كما نري لا يوجد خطأ وعندما نري القوائم نجد
حسنا هذه بادره خير لنري الخدمات التي بها
حسنا بدأنا نري خدمات شبيهه باللتي وجدتها بالتلفاز لنجرب RenderingControl ونري ما الأكشنز الموجوده بها
حسنا يبدوا أننا وصلنا :V لنجرب أكشن منهم بالطريقه السابق ذكرها وليكن SetVolume لنعلي الصوت وراقب القيم التي سأقوم بأدخالها
وبالفعل صوت المستقبل أصبح 100 وأزعج من بالبيت :V
وهكذا كل خدمه سيكون بها أكشنز مختلفه لتقوم بها بنفس الطريقه ولكن لا داعي لذكرها حتي لا نطيل المقاله أكثر…
والأن ننتقل الي الجزء الأخير في المقاله ولكن أولا لنخفض الصوت المستقبل مجددا فقد أصبح مزعجا قليلا :”D
الأختراق من خلال بروتوكول الـupnp عن بعد
كما ذكرنا من قبل برتوكول الـupnp هو برتوكول غير أمن وأكتشف به العديد من الثغرات من قبل علي عده أجهزه قد قامت الشركات فيها بعملimplement بطريقه خاطئه أكثر ولكن بجانب كل هذا اذا كان روترك لا يوجد به أي ثغرات تسمح بالأتصال به من خارج الشبكه هل يعني هذا أنك أمن ؟
للأسف لا فكما نعلم أن البرتوكول يعتمد الرسائل من نوع SOAP والتي هي في أساس عباره عن XML كما ذكر من قبل وهذا للأسف قد يمكن المهاجم من أن يستغل داله xmlhttprequest الموجوده بلغه جافا سكربت من أن يرسل SOAP Message عبر جهازك لأي جهاز مع علي الشبكه وهذا لحسن الحظ لا يمكن أن يتم الا اذا عرف المهاجم الأيبي الداخلي الخاص بالجهاز الهدف الموجود معك بالشبكه ولكنه في النهايه ممكن ومن المحتمل أن يجرب كل الأحتمالات الوارده ان كان يعرف أنك علي شبكه منزليه اذا فا بنسبه كبيره أنت علي subnet واحد واذا عرف الـsubnet وانت بالفعل تستخدم subnet واحد اذا فهو عرف جميع الأحتمالات التي سيقوم بتجربتها فعلي سبيل المثال سيقوم بعمل صفحه ويب بها كود جافاسكربت يرسل SOAP Messages لكل الـIPs بدايه من 192.168.1.1 لـ192.168.1.255 ومن ثم يجعلك تقوم بفتح هذه الصفحه!
في النهايه اذا لم تجعلك هذه المعلومات تخاف من المستقبل لا أعرف ما الذي قد يجعلك تخاف !
Upnp هو بروتوكول خطر للغايه والمفاجئ أن قليل من الناس من يعلمون عنه وعن مدي خطره ويعطونه الأهتمام الذي يستحقه والأن بعد أن بت تعلم عنه كل هذا ماذا ستفعل الأن ؟
الموضوع شرحك له بالتفصيل رائع وتعجبت لم رايت شخص يتكلم عنه مصري
في بعض النقاط الهامه مثل ان بروتكول تم كشف العديد من الثغرات remote code execution
كما انت قولت والشركات اصدرت ترقيعات عامه بسببه تم وقف الكثيير من الاستخدامات الخاصه
وبيعتمد في نطاق Cisa
علي تقرير بسيط
Plug and Play capabilities for users
,وبيتكلم عن هجمات War Driving/Walking
في بيئه عمل البرتكول وشرحك رائع وتفصيل رائع احسنت علي هذا المجهود
ازاي ممكن اتواصل معاك يا استاذ كريم كنت حابب استفسر بعد اذنك عن كام حاجة
تقدر حضرتك تبعتلي علي الفيس بوك أو تويتر زي ماتحب
https://www.facebook.com/kareem.shoair
https://twitter.com/D4Vinci1
شكرا جزيلا على هدا المقال الجميل انترنات الأشياء قادمة بقوة و مخاطر استعمالها قادم أيضا لول لم أكن اعرف هدا البروتكول
بالمقال معلومات أول مرة أسمع بها
شكرا لكم على هذا العمل الخيري الجبار.
عيد مولد مبارك للجميع
نسأل الله عز وجل ان يكرمنا و اياكم
رُؤية أكرم الخلق سيدنا و حبيبنا محمد عليه افضل الصلاة و التسليم
شكرا لك فعلا شرح جبار ومفصل
احسنت وبقوة
الله يعطيك العافيه ويتكتب أجرك