
ETS5 Password Recovery Tool هي إثبات مفهوم لـ CVE-2021-36799
هل نسيت كلمة المرور لأحد مشاريع ETS5 الخاصة بك ولم تعد قادرًا على الوصول إلى تكوين تثبيت KNX؟ تتيح لك أداة استعادة كلمة مرور ETS5 استرداد كلمة مرور المشروع وأسرار أخرى محفوظة في مخزن مشروع ETS5. هذا ممكن لأن ETS5 يحتوي على عيب تصميمي كبير، حيث يستخدم كلمة مرور ثابتة وملح (salt) مشفرين في الكود لتشفير معلومات المشروع (CVE-2021-36799).
تخزين الأسرار التشفيرية في كود المصدر أمر غير مستحسن لأنه يمكن استعادتها عن طريق الهندسة العكسية للبرنامج، مما يوفر حماية قليلة تزيد عن تخزين المعلومات كنص واضح. قد يشكل ذلك تهديدًا لأمان تثبيتات KNX. إذا تمكن المهاجم من الوصول إلى الملفات في مخزن المشروع، فيمكنه فك تشفيرها على الرغم من عدم معرفة كلمة مرور المشروع. تسمح المعلومات الموجودة بداخلها بالتنصت وانتحال الهوية وإعادة تكوين أجهزة KNX. هذه مشكلة خاصة لأن ETS5 يعطي المستخدمين انطباعًا بأن كلمة مرور المشروع ستُستخدم لتشفير معلومات المشروع، وليس فقط للمشاريع المصدرة. لذا، فمن المحتمل أن العديد من المستخدمين ومتكاملي الأنظمة لم يتخذوا خطوات إضافية لضمان سرية مخزن المشروع. إذا قام ETS5 بتنفيذ التشفير بشكل صحيح وتم اختيار كلمة مرور قوية للمشروع، فسيشكل تحديًا أكبر للمهاجم، حتى إذا تمكن من الوصول عن بُعد إلى الكمبيوتر.
المعلومات السرية التالية غير مشفرة بشكل صحيح:
أداة استعادة كلمة مرور ETS5 هي إثبات مفهوم يوضح المشكلة عن طريق فك تشفير المعلومات الحساسة وعرضها. تم تطويرها كجزء من الإفصاح المنسق عن الثغرات وتم إصدارها بإذن من رابطة KNX. نشر الأداة يخدم الأغراض التالية:
تحذير: استخدم هذه الأداة فقط إذا كنت مخولًا قانونيًا لعرض معلومات المشروع. تجاوز التدابير الأمنية، حتى غير الفعالة، للحصول على معلومات لا يُسمح لك برؤيتها قد يكون جريمة في منطقتك القضائية.
يمكن تنزيل الملف التنفيذي من قسم الإصدارات. لا يحتاج إلى تثبيت ويمكن وضعه في أي دليل تختاره.
بدلاً من ذلك، إذا كنت لا ترغب في تشغيل برنامج غير موثوق على نظامك، يمكنك فك تشفير السمات الفردية من ملفات XML الخاصة بالمشروع على موقع CyberChef.
يعتمد البرنامج على .NET Framework 4.6 أو أحدث. يتضمن Windows 10 بالفعل إصدار .NET مناسب افتراضيًا. سيتعين على مستخدمي إصدارات Windows الأقدم تثبيت إصدار حالي من .NET Framework لتشغيل البرنامج.
على عكس ما توحي به واجهة المستخدم، لا يقوم ETS5 بتشفير ملفات المشروع المخزنة محليًا في C:\ProgramData\KNX\ETS5\ProjectStore بكلمة مرور المشروع. بدلاً من ذلك، يستخدم كلمة المرور الثابتة ETS5Password والملح Ivan Medvedev لإخفاء سمات محددة في ملفات XML الخاصة بالمشروع. الأسرار التشفيرية الثابتة هي ضد أفضل الممارسات، كما هو موضح في CWE-798 و CWE-321.
عملية إزالة الإخفاء هي:
Ivan Medvedev كسلسلة مشفرة بـ ASCII أو UTF-8.ETS5Password ككلمة مرور، وتمثيل البايت لـ Ivan Medvedev كملح. سيتم استخدام أول 32 بايت من مخرجات اشتقاق المفتاح كمفتاح، و16 بايت التالية كمتجه تهيئة (IV).يمكن العثور على تنفيذ لإزالة الإخفاء في ملف Deobfuscator.cs. نظرًا لأن كلمة المرور والملح ثابتان، سيكون من الممكن حساب المفتاح و IV مسبقًا لتخطي اشتقاق المفتاح. لا يتم ذلك في تنفيذ هذا البرنامج، لأنه يهدف إلى عرض جميع خطوات إزالة الإخفاء. ومع ذلك، إذا كنت بحاجة إلى المفتاح و IV، فهما مدرجان أدناه.
| Hex | Base64 | |
|---|---|---|
| المفتاح | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |
ملفات المشاريع المصدرة (.knxproj) لا تتأثر بهذا العيب التصميمي، وبالتالي لا يمكن استخدام هذه الأداة لاستعادة كلمة مرور المشروع لها. ملف .knxproj هو ملف ZIP يحتوي على ملف ZIP آخر به المعلومات الحساسة. يستخدم الأخير ضغط Deflate وتشفير ZipCrypto / PKWARE وكلمة مرور المشروع لاشتقاق مفتاح التشفير.
أثناء التحضير لأطروحتي "تحليل أمان بروتوكول KNXnet/IP الآمن"، قمت بالتحقيق في كيفية تخزين ETS5 لمعلومات المشروع. نظرًا لأن ETS يولد ويخزن مفاتيح وكلمات مرور تشفيرية تُستخدم بواسطة أجهزة KNX IP Secure لمصادقة بعضها البعض، وتوفير السرية للاتصالات المتعددة البث، وتأمين تكوين الأجهزة، فمن المهم الحفاظ على سرية المعلومات. إذا تمكن المهاجم من الوصول إلى معلومات المشروع المخزنة بواسطة ETS، فسيؤدي ذلك إلى اختراق أمان تثبيت KNX بالكامل.