برنامج TeamViewer هو برنامج شائع للوصول عن بعد إلى سطح المكتب. لذلك ، من المثير للاهتمام أن نرى كيف يخزن كلمات المرور. باختصار ، يتم تشفير كلمات المرور في سجل Windows. للتشفير ، يتم استخدام خوارزمية AES-128-CBC والمفتاح السري 0602000000a400005253413100040000 .تم تسجيل هذه الطريقة لحفظ كلمات المرور وتصعيد الامتيازات المرتبط بها رسميًا في 7 فبراير 2020 باعتبارها الثغرة CVE-2019-18988 (تنطبق على جميع إصدارات برنامج TeamViewer حتى 07/14/1965).عثر أخصائي الأمن المبتدئ الذي كشف النقاب عن هذه الثغرة عن طريق الصدفة. و يقول انه يعمل لحساب العميل وأثناء النسخ الاحتياطي لاحظت مفاتيح التسجيل برنامج TeamViewer، التي كانت تسمى OptionsPasswordAES
و SecurityPasswordAES
.في وقت لاحق ، أصبح مهتمًا بمعرفة هذه المفاتيح وكيف يخزن برنامج TeamViewer كلمات المرور بشكل عام. قام باستيرادها إلى نظام جديد في جهاز افتراضي وأطلق الماسح الضوئي BulletPassView ، الذي يجمع كلمات المرور في النظام. أعطى الماسح كلمة مرور برنامج TeamViewer بنص واضح.Scanner BulletPassViewبعد ذلك ، باستخدام برنامج Cheat Engine (لاختراق الألعاب في Windows) ، بحث متخصص عن كلمة المرور هذه في ذاكرة الوصول العشوائي - ووجدها مرة أخرى في نص عادي. في وقت لاحق اتضح أن هذه الثغرة قد تم إصلاحها بالفعل قبل عامين باسم CVE-2018-14333 .ثم حان الوقت للتحقق من مكان أخذ المفتاح من ذاكرة عميل TeamViewer: من الخادم أو من المضيف المحلي. اتضح أنه لا توجد حركة مرور شبكة ، ولكن لا تزال هناك كلمة مرور في الذاكرة.استغرقتالهندسة العكسية لبرنامج TeamViewer الثنائي باستخدام IDA Pro و API Monitor و procdump و Frida عدة أسابيع ، لكنها لم تقدم أي شيء ، على الرغم من أن الرجل أتقن العديد من الأدوات الجديدة على طول الطريق ، لذلك لا يمكن وصف العملية بأنها غير مجدية.أثناء البحث عن المعلومات ، اتضح أن عددًا قليلًا من الأشخاص تساءلوا بالفعل عن كيفية العثور على مفاتيح AES لألعاب Unity في الموارد. اتضح أن هذه عملية بسيطة للغاية ، وهي كافية لاستخدام مصحح الأخطاء . بعد ست ساعات ، وجد قطعة من كود TeamViewer المسؤول عن تشفير AES:=================================================
"ServerPasswordAES"=hex:88,44,d7,0a,b2,96,2a,3d,63,16,3c,ff,e4,15,04,fb
=================================================
Takes 8844d70ab2962a3d63163cffe41504fb into xmm0
Takes 5B659253E5E873D26723B7D5EAC06E3B into xmm1
pxor xmm0, xmm1
movdqa xmmword ptr ds:[eax],xmm0
[eax] = D3214559577E59EF04358B2A0ED56AC0
movdqa xmm1,xmmword ptr ds:[esi] | [esi] = 25C8C8BD4298BB32A57EECBDBD045BBB
movdqa xmm0,xmmword ptr ds:[eax] | [eax] = D3214559577E59EF04358B2A0ED56AC0
aesdec xmm0,xmm1 | One round of an AES decryption, using Equivalent Inverse Cipher, 128-bit data (state) from xmm1 with 128-bit round key from xmm2/m128; store the result in xmm1.
movdqa xmmword ptr ds:[eax],xmm0 | [eax] = 6F AA 98 76 DE 11 7D 8D 7E B6 EE 61 2D 3D 15 52
movdqa xmm1,xmmword ptr ds:[esi+10] | [esi+10]=[008FDE10]=79 DC 78 A6 67 50 73 8F E7 E6 57 8F 18 7A B7 06
add esi,20 |
dec ecx | ecx = 3
aesdec xmm0,xmm1 | do the actual decryption
movdqa xmmword ptr ds:[eax],xmm0 | [eax]=[008FDC90]=E3 58 26 46 A7 37 12 40 85 1C C0 43 7D 1F 1E 30
Three more rounds of aesdec then
aesdeclast xmm0, xmm1 .| Last round of AES decryption, using Equivalent Inverse Cipher, 128-bit data (state) from xmm2 with a 128-bit round key from xmm3/m128; store the result in xmm1.
008FDC90 01 00 01 00 67 24 4F 43 6E 67 62 F2 5E A8 D7 04 ....g$OCngbò^¨×.
يأخذ هذا الرمز بضع بايتات من السجل ServerPasswordAES
ويفك تشفيرها بالمفتاح الذي تم الحصول عليه بواسطة القيمة المحددة من XOR'a esi
و eax
. والنتيجة هي مفتاح 0602000000a400005253413100040000
، وقيمة IV متساوية 0100010067244F436E6762F25EA8D704
.في برنامج TeamViewer 14 ، يسمح لك محرك البرمجة النصية الجديد بزيادة الامتيازات من خلال NT AUTHORITY\SYSTEM
قراءة كلمة مرور برنامج TeamViewer في التسجيل بحقوق المستخدم.حسنًا ، يمكنك أيضًا فك تشفير بعض كلمات المرور الأخرى عن طريق googling [SecurityPasswordAES] أو [OptionsPasswordAES] أو [SecurityPasswordExported] أو [PermanentPassword] باستخدام معلمة البحث [filetype: reg].قام برنامج TeamViewer بإغلاق هذه الثغرة الأمنية في الإصدارات الأخيرة. نظرًا لأن البرنامج يقوم الآن بتشفير كلمات المرور ، لم يكتشفوها بعد.
GlobalSign PKI- .

: +7 (499) 678 2210, sales-ru@globalsign.com