يحتوي هذا المستودع على إثبات استغلال الثغرة الأمنية في برنامج TeamViewer والتي تمكن المستخدم الذي لا يتمتع بأي امتيازات من تحميل برنامج تشغيل Kernel عشوائيًا في النظام. أود أن أشكر مبادرة Zero Day على التنسيق معهم للإبلاغ عن الثغرة الأمنية والكشف عنها بشكل مسؤول.
يمكن العثور على تفاصيل البحث الذي انتهى بهذه الثغرات الأمنية في سلسلة المدونات التالية المكونة من ثلاثة أجزاء على مدونتي. إنها تغطي هذه الثغرات الأمنية بمزيد من التفاصيل وتظهر أيضًا أين فشلت أثناء العملية. الجزء الثالث هو الجزء الممتع :P.
فيديوهات الاستغلال تجدها هنا:
بعد التمكن من انتحال (بعض المصادقة البسيطة كما هو مفصل في المدونة) عميل TeamViewer صالح عند الاتصال بخدمة SYSTEM IPC، كان من الممكن تشغيل تثبيت برنامج تشغيل عشوائي. لم يكن برنامج TeamViewer يتحقق من توقيع برنامج التشغيل الذي تم تثبيته.
وبالتالي، أصبح من الممكن توسيع امتيازات USER إلى KERNEL بفضل برنامج TeamViewer.
أحد أفضل الطرق هو استخدام التقنية المعروفة BYOD، إحضار برنامج التشغيل الخاص بك الضعيف لتحميل برنامج تشغيل صالح موقّع إلى Windows Kernel ثم استغلاله لتنفيذ إجراءات مميزة من مستوى المستخدم، مثل تغيير الرمز المميز لرمز تعسفي عملية مع واحدة مميزة.
عندما يتم تثبيت برنامج TeamViewer على النظام، فإنه يقوم بإنشاء خدمة تعمل كـ SYSTEM، TeamViewer_service.exe
تعتبر هذه الخدمة مساعدة للعميل في بعض المهام. وبالتالي، لا يعمل العميل بامتيازات مرتفعة ويتم تفويض بعض المهام إلى الخدمة.
يتم تنفيذ الاتصال بالخدمة (IPC) من خلال مآخذ التوصيل (باستخدام Overlapped I/O و IoCompletionPort ). بشكل افتراضي، تستمع خدمات نظام TeamViewer إلى 5939/tcp على المضيف المحلي.
لا يقوم برنامج TeamViewer بتصفية المعلمة التي يرسلها العميل للمطالبة بتثبيت برنامج التشغيل أو التحقق من التوقيع، وما إلى ذلك.
لذا فإن الفكرة هي: سنقوم بمحاكاة عميل تلفزيوني ويطلب تثبيت برنامج تشغيل VPN مع الإشارة إلى ملف INF آخر. لقد قمت بإعادة استخدام نفس INF الأصلي لبرنامج TeamViewer ولكن في مسار آخر (غير مميز) لإعادة تسمية برنامج التشغيل "السيئ" إلى teamviewervpn.sys ، حيث أن هذا هو اسم برنامج التشغيل الذي يتم استهدافه بواسطة INF الأصلي.
يؤدي هذا إلى تجاوز خيار TeamViewer أيضًا . تتطلب التغييرات حقوقًا إدارية على هذا الكمبيوتر .
يكون هذا التحقق فعالاً فقط عبر واجهة المستخدم الرسومية، حيث يتم تعطيل خيارات برنامج TeamViewer عند النقر فوق الزر مع مستخدم لا يتمتع بالامتيازات. ولكن من الممكن الاتصال بالمقبس وتنفيذ تحميل برنامج التشغيل التعسفي.
يعتمد الاستغلال على الإصدار بسبب رسالة IPC حيث حدد العميل معرف المنتج (PID) الخاص به وبيانات أخرى ضمن الإصدار. يجب أن يتطابق إصدار العميل مع إصدار خدمة النظام. يجب تعديل الاستغلال (الأسطر من 140 إلى 143) في Main.cpp إلى إصدار TeamViewer_service.exe المستهدف.
لذلك، في الأساس، نقوم بانتحال عميل TeamViewer الذي يتصل بخدمة النظام ونطلب تثبيت برنامج تشغيل عشوائي. يرجى من خدمة TeamViewer تحميله في Kernel.
يحتوي برنامج TeamViewer على رسالة IPC أخرى مشابهة جدًا للرسالة الأولى التي اكتشفتها أولاً (تم طرحها عند النقر فوق تثبيت برنامج تشغيل VPN ). هذه الرسالة الأخرى هي تثبيت برنامج تشغيل الطابعة .
لذا، بشكل أساسي، CVE-2024-7479 وCVE-2024-7481 متماثلان، لكن برنامج TeamViewer ارتكب نفس الخطأ مرتين. الرسالة متشابهة جدًا، على الرغم من اختلافها. لديهم معرف طريقة IPC مختلف.
النتائج هي نفسها، يمكن تحميل برنامج تشغيل تعسفي.