E
_Emma_
Original poster
Cегодня речь пойдёт о программе TeamViewer(В дальнейшем: TV) как вы уже могли понять из названия)
Популярная программа и встаёт вопрос о безопасности.Дальше мы расмотрим то как храняться пароли в программе УДАЛЁННОГО ДОСТУПА.)
Для шифрования используется алгроритм AES-128-CBC и спец.ключ - 0602000000a400005253413100040000
Один из начинающих специалист по ИБ рассказывал что наткнулся на уязвимость совершенно случайно.По его словам во время резервного копирования он заметил ключи реестра TV под названиями OptionsPasswordAES и SecurityPasswordAES.
Интерес взял верх и запустив сканер BulletPassView,он выдал пароли открытым текстом
Также выяснилось что пароль храниться в открытым виде в оперативной памяти.Данная уязвимость уже была обнаружена два года назад и была названа CVE-2018-14333
Настал момент выяснить откуда берётся ключ шифрования
Сервер или локальный хост??
Было выяснено что сетевой трафик отсуствует.
Реверс-инженеринг TV с помощью IDA Pro, , и показало следущий результат:
Был найден фрагмент кода TV отвечающий за 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 закрыла эту уязвимость в последних версиях. Как теперь программа шифрует пароли, ещё не разобрались.
Популярная программа и встаёт вопрос о безопасности.Дальше мы расмотрим то как храняться пароли в программе УДАЛЁННОГО ДОСТУПА.)
Для шифрования используется алгроритм AES-128-CBC и спец.ключ - 0602000000a400005253413100040000
Один из начинающих специалист по ИБ рассказывал что наткнулся на уязвимость совершенно случайно.По его словам во время резервного копирования он заметил ключи реестра TV под названиями OptionsPasswordAES и SecurityPasswordAES.
Интерес взял верх и запустив сканер BulletPassView,он выдал пароли открытым текстом

Также выяснилось что пароль храниться в открытым виде в оперативной памяти.Данная уязвимость уже была обнаружена два года назад и была названа CVE-2018-14333
Настал момент выяснить откуда берётся ключ шифрования
Сервер или локальный хост??
Было выяснено что сетевой трафик отсуствует.
Реверс-инженеринг TV с помощью IDA Pro, , и показало следущий результат:
Был найден фрагмент кода TV отвечающий за 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 закрыла эту уязвимость в последних версиях. Как теперь программа шифрует пароли, ещё не разобрались.