Thursday, April 17, 2008

Detecter l'escroc

Quand on lit le papier de Dowd (cf. entree precedente), et que l'on est technique, on pense comprendre ce qui se passe. Certains y arrivent tres bien, d'autres comprennent les choses a moitie et surfent sur la vague pour essayer d'en tirer un soupcon de renommee, mais en racontant des conneries.

J'ai en tete un post de monsieur Ptacek sur le blog de Matasano, a la fin de ce dernier on peut lire:
First, even though IE and Firefox use different Flash builds, the addressing inside them is compatible. The exploit works in both places.
Bon certes le monsieur a des connaissances techniques (ou pas), mais clairement son post est une escroquerie. Je vais me concentrer uniquement sur cette phrase la, les lecteurs avises pourront noter d'autres anneries tout au long de l'article.

J'ai fini l'exploit sous IE, ca marche impec, XP SP2, SP3rc2, Vista, cool. Maintenant je regarde Firefox. On est plus sous flash9[d,e].ocx mais dans npswf32.dll. "Compatible addressing"? Ca semble louche. Et effectivement le tableau AS3_argmask n'est pas du tout au meme endroit. On peut voir dans le commentaire de Mark au sujer de ce post:

1. Address you need to overwrite (location of AS3_argmask)
...

Issue #1 could possibly cause problems, but hey - exploiting both browsers at once worked out alright by doing multiple overwrites, so you could probably do multiple overwrites to address different versions of Flash also. But, I have never confirmed this, so I can’t be sure.

Et voila la solution. Il suffit de faire plusieurs overwrite differents, histoire de remplacer le mask de l'opcode marker pour IE et Firefox, le reste des constantes utilisees etant des offsets relatifs, donc pas de soucis pour cela. Plusieurs SWF sans bytecode ne crasheront pas le browser si vous faites suffisamment attention, puis un final avec le bytecode non-verifie permettra d'executer votre shellcode.

Escroc.

2 comments:

mxatone said...

Il est clair qu'il y a une différence énorme entre lire un papier et en "comprendre" ou plutôt en percevoir le sens. Que de s'en être imprégner au point d'avoir soit même fait un exploit. Je n'avais pas lu personnellement le blog en entier, j'avais bien aimé la première phrase mais je préférais lire moi même cet article que d'avoir l'avis d'une personne qui elle même n'avait fait que le lire.

C vrai que l'article avance que l'exploitation est possible sur firefox et ie avec un meme SWF. Ca me paraissait aussi bien etrange car pour avoir reverse (un tout petit peu) flash, j'avais remarque qu'il existait deux dll differentes, chacune identique sauf au niveau de l'interface de communication javascript / activex. J'ai compris la nuance sur cette phrase :

"Some testing
was done for generating SWF files that exploited the vulnerability multiple
times (by containing multiple corrupt “DefineSceneAndFrameLabelData”
tags)".

Ptacek n'auras donc que survoler le sujet.

Kostya said...

Demain j'essaie plusieurs Tag plutot que plusieurs SWF, ca me simplifiera la vie! Merci :)