Tuesday, September 25, 2007

De la virtualisation

Ces derniers jours j'ai pu bosser sur l'overflow du serveur DHCP de VMware, l'exploit est disponible dans le programme CANVAS Early Update d'Immunity (c'est pas gratuit je sais). Je n'avais pas eu l'occasion de regarder attentivement vmnetdhcp.exe auparavant, j'y avais jete un oeil lors de la sortie du heap overflow du daemoin de NAT, pour m'apercevoir qu'il etait base sur le DHCPd d'ISC, et penser dans la foulee "Pas la peine de m'attarder dessus, le serveur d'ISC a deja ete largement audite".

Grossiere erreur de ma part. Ca m'apprendra. Ce qu'il faut remarquer c'est que que le vmnetdhcp.exe n'est lie a aucun port UDP standard, comme on pourrait l'attendre d'un serveur DHCP. Il utilise une raw socket pour capturer le trafic sur les interfaces vmnet* (ou autres si vous l'avez active dessus), l'analyser et eventuellement repondre aux requetes qui l'interessent. Ce que ne fait pas le dhcpd d'ISC a ma connaissance. La ou le bas blesse, c'est que les developpeurs ont justement rate cette nouvelle portion de code. En se debrouillant convenablement, il est possible de declencher un Integer Underflow (on va dire que c'est A-B avec B>A, A>0, B>0, donc un resultat negatif) sur une variable qui finit en parametre taille d'un memcpy().

L'operation de copie a lieu de la pile vers la pile, la destination etant plus proche du haut de la pile (ou le bas dans ImmDbg). Marrant. On aboutit bien evidemment a une violation d'acces lors d'une tentative d'ecriture au dela de la limite de la pile - enfin si une page w est mappee apres, ca sera declenche apres cette page. Heureusement sous Windows, le gestionnaire d'exception est aussi dans la pile, avec un peu de mojo on l'a ecrase avec des donnees sous notre controle, et le tour est joue! C'est la version simplifiee :)

Maintenant le reel probleme: quand on developpe des exploits et que l'on cherche des vulnerabilites a longueur de journee, il faut de nombreux OS, dans differentes versions et differents langages. C'est la que la virtualisation aide beaucoup, plein d'OS sur une seule machine. On peut alors avoir suffisamment de cibles pour tester les exploits, etre sur que tout marche bien, etc. Mais quand la faille est dans le logiciel de virtualisation? Et bien la c'est plus complique. Apres avoir fait le tour des VMwares installes a Immunity, il s'avere que tous sont des VMware Server sur des Windows XP SP2 ou bien des Linux - et Linux c'est pas mon dada. Donc une seule version a cibler... Et bien evidemment VMware refuse de s'installer dans une machine virtuelle. Grmbl.

Bon a Miami il fait moche (et oui ca arrive), il pleut, ca va me donner une excuse pour depiler les series qui s'accumulent et lire mes Dexter (le 3e opus vient de sortir, je l'ai recu hier!)., la serie reprenant le 30 septembre. Mes activites noctures d'hier ne m'ont pas permi de voir Chuck, Heroes et Journeyman, je commente des que j'en ai l'occasion.

No comments: