Un utilisateur averti pourra se demander pourquoi dans SChannel v5.1.2600.5834 (XP SP3 US plus ou moins a jour) on trouve la fonction IsSchEncryptionPermitted(), qui contient:
call ds:__imp__GetSystemDefaultLCID@0 ; GetSystemDefaultLCID() cmp ax, 40Ch jz short loc_767F41A7 push 0Ah ; cchData lea ecx, [ebp+LCData] push ecx ; lpLCData push 5 ; LCType push eax ; Locale call ds:__imp__GetLocaleInfoA@16 ; GetLocaleInfoA(x,x,x,x) test eax, eax jz short loc_767F41A7 lea eax, [ebp+LCData] push eax call _MyStrToL@4 ; MyStrToL(x) cmp eax, 21h jnz short loc_767F41B8 loc_767F41A7: ; CODE XREF: IsSchEncryptionPermitted()+1Aj ; IsSchEncryptionPermitted()+2Dj and _g_ProtEnabled, 0FFFFFFFCh mov _g_fFranceLocale, 1 |
Sauf que cette fois ci, le resultat n'est pas le meme. Si le Windows est francophone, on enleve les deux bits de poids faible de _g_ProtEnabled et on met a 1 une variable obscure.
Dans le code de SslReadRegOptions(), si _g_fFranceLocale est non 0, on ne prend pas en compte l'activation ou desactivation des protocoles specifies dans la base de registre, decrit dans la KB187498, si les bits de poids faible sont presents.
Les bits utilises pour l'activation des protocoles sont:
- "Multi-Protocol Unified Hello\\Client": 80000000h
- "Multi-Protocol Unified Hello\\Server": 40000000h
- "PCT 1.0\\Client": 2
- "PCT 1.0\\Server": 1
- "SSL 2.0\\Client": 8
- "SSL 2.0\\Server": 4
- "SSL 3.0\\Client": 20h
- "SSL 3.0\\Server": 10h
- "TLS 1.0\\Client": 80h
- "TLS 1.0\\Server": 40h
En conclusion, si je ne me suis pas plante, pas de drame - a part qu'un Windows francophone ne puisse pas faire de PCT du tout (client ou serveur). Ca m'aurait ete utile de savoir ca en 2004 pour l'exploit PCT Handshake...
Si quelqu'un veut confirmer, amusez-vous, je testerai sans doute dans la semaine pour verifier et mettrai a jour le post. Je n'ai pas d'explication au bannissement de PCT en France.
Et joyeux anniversaire a ma soeur!
2 comments:
Très intéressant ce blogue.
On trouve rarement des articles aussi technique en langue Française.
Bravo!
J'ajoute à mes favoris
C'est en effet étrange d'interdire PCT 1.0 et en même temps d'autoriser TLS 1.0. Le même test (GetSystemDefaultLCID / GetLocaleInfo) était présent dans le kernel mais il a été désactivé fin '99 après la modification de la loi par Jospin. PCT 1.0 était déja obsolète à cette époque, donc c'est peut-être un simple oubli ?
Post a Comment