Comment TeamViewer stocke les mots de passe



TeamViewer est un programme populaire pour l'accès à distance au bureau. Par conséquent, il est assez intéressant de voir comment il stocke les mots de passe. En bref, les mots de passe sont cryptés dans le registre Windows. Pour le chiffrement, l'algorithme AES-128-CBC et la clé secrète 0602000000a400005253413100040000 sont utilisés .

Cette méthode d'enregistrement des mots de passe et l'escalade de privilèges associée ont été officiellement enregistrées le 7 février 2020 en tant que vulnérabilité CVE-2019-18988 (s'applique à toutes les versions de TeamViewer jusqu'au 14/07/1965 inclus).

Le spécialiste de la sécurité novice qui a dévoilé cette vulnérabilité est tombé dessus par accident. Il dit qu'il a travaillé pour le client et lors de la sauvegarde a remarqué les clés de registre TeamViewer, qui ont été appelées OptionsPasswordAESet SecurityPasswordAES.

Par la suite, il s'est intéressé à la nature de ces clés et à la manière dont TeamViewer stocke les mots de passe en général. Il les a importés dans un nouveau système dans une machine virtuelle et a lancé le scanner BulletPassView , qui collecte les mots de passe dans le système. Le scanner a donné le mot de passe TeamViewer en texte clair.


Scanner BulletPassView

Puis, en utilisant le programme Cheat Engine (pour les jeux de piratage pour Windows), un spécialiste a recherché ce mot de passe dans la RAM - et l'a retrouvé en texte brut. Plus tard, il s'est avéré que cette vulnérabilité avait déjà été corrigée il y a deux ans sous le nom CVE-2018-14333 .

Ensuite, il est temps de vérifier d'où provient la clé dans la mémoire du client TeamViewer: du serveur ou de l'hôte local. Il s'est avéré qu'il n'y a pas de trafic réseau, mais il y a toujours un mot de passe dans la mémoire. L'ingénierie inverse du binaire TeamViewer utilisant IDA Pro, API Monitor , procdump et Frida a pris plusieurs semaines, mais n'a rien donné, bien que le gars ait maîtrisé plusieurs nouveaux outils en cours de route, de sorte que le processus ne peut pas être appelé inutile.

Lors de la recherche d'informations, il s'est avéré que beaucoup de personnes se demandaient déjà comment trouver les clés AES pour les jeux Unity dans les ressources. Il s'est avéré qu'il s'agit d'un processus très simple, pour lequel il suffit d' utiliser un débogueur . Six heures plus tard, il a trouvé un morceau de code TeamViewer responsable du cryptage 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ò^¨×.

Ce code prend quelques octets du registre ServerPasswordAESet les déchiffre avec la clé obtenue par XOR'a valeur prescrite esiet eax. Le résultat est une clé 0602000000a400005253413100040000et la valeur de IV est égale 0100010067244F436E6762F25EA8D704.

Dans TeamViewer 14, le nouveau moteur de script vous permet d'augmenter les privilèges en NT AUTHORITY\SYSTEMlisant le mot de passe TeamViewer dans le registre avec des droits d'utilisateur.

Eh bien, vous pouvez également décrypter certains autres mots de passe en recherchant [SecurityPasswordAES], [OptionsPasswordAES], [SecurityPasswordExported] ou [PermanentPassword] avec le paramètre de recherche [filetype: reg].

TeamViewer a corrigé cette vulnérabilité dans les versions récentes. Comme le programme crypte maintenant les mots de passe, ils ne l'ont pas encore compris.



GlobalSign PKI- .



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

All Articles