TeamViewer如何存储密码



TeamViewer是一种流行的程序,用于远程访问桌面。因此,查看密码存储方式非常有趣。简而言之,密码在Windows注册表中被加密。为了进行加密,使用了AES-128-CBC算法和秘密密钥0602000000a40000525341313100040000

这种保存密码的方法和相关的权限提升已于2020年2月7日正式注册为漏洞CVE-2019-18988(适用于TeamViewer的所有版本,包括07/14/1965)。

揭露此漏洞的新手安全专家偶然发现了此漏洞。他他为客户端工作,在备份期间注意到TeamViewer注册表项,称为OptionsPasswordAESSecurityPasswordAES

随后,他对这些键是什么以及TeamViewer一般如何存储密码感兴趣。他将它们导入到虚拟机中的新系统中,并启动了BulletPassView扫描程序,该程序收集系统中的密码。扫描程序以明文形式给TeamViewer密码。


扫描仪BulletPassView

然后,使用Cheat Engine程序(用于Windows下的游戏破解),专家在RAM中搜索此密码-并再次以纯文本形式找到它。后来发现,此漏洞早在两年前就已修复为 CVE-2018-14333

然后是时候从TeamViewer客户端的内存中检查密钥的位置:从服务器还是从本地主机。原来,没有网络流量,但是内存中仍然有密码。使用IDA Pro, API Monitor procdump Frida对TeamViewer二进制文件进行反向工程花费了几周的时间,但没有给出任何结果,尽管此人一路掌握了一些新工具,所以该过程不能被称为无用。

在搜索信息期间,事实证明,已经有很多人想知道如何在资源中找到Unity游戏的AES密钥。事实证明,这是一个非常简单的过程,使用调试器就足够。六个小时后,他发现了一段负责AES加密的TeamViewer代码:

=================================================
"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密码来增加特权

嗯,您还可以通过使用搜索参数[filetype:reg]来搜索[SecurityPasswordAES],[OptionsPasswordAES],[SecurityPasswordExported]或[PermanentPassword],从而解密其他一些密码。

TeamViewer已在最新版本中关闭了此漏洞。由于该程序现在可以加密密码,因此他们还没有弄清楚。



GlobalSign PKI- .



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

All Articles