ClickJacking : Comment on vous “vole” vos clics

6 août 2009

Avez-vous entendu parler du ClickJacking ? Cette technique qui permet d’utiliser vos clics à d’autres fins ?

Je vous propose dans cet article de voir le principe, les buts et le contexte d’utilisation de cette “attaque”. Nous pourrons aussi voir un exemple, plus proche du Proof Of Concept qu’autre chose, mais toujours intéressant à étudier :) .

Tout d’abord le principe. Certaines propriétés du langage HTML nous permettent de rendre des objets complètement transparents. Et d’autres nous permettent de superposer des pages les unes sur les autres.
Imaginons donc deux pages superposées l’une sur l’autre, une des deux étant transparente. Lorsque vous cliquez quelque part, les clics sont alors effectués sur les deux pages, même si vous ne “voyez” le résultat que sur une seule.

Mais une vidéo vous expliquera ça bien mieux que tout un pâté de texte :) . Voici donc la vidéo PoF, permettant d’autoriser une application flash à activer la webcam :
http://www.youtube.com/watch?v=gxyLbpldmuU

Maintenant, pourquoi utiliser une attaque de ce type ?

Eh bien pour toutes les choses requérant des clics à des endroits précis, et invariants ( c’est à dire en général tout ce qui est configuration de Flash ), faire valider des formulaires pré-remplis, …

Enfin, cette attaque a l’avantage d’être relativement discrète…
Pour vous protéger ( eh oui, sortez couvert :) ), je vous conseille l’excellente extension “NoScript” pour Firefox ( https://addons.mozilla.org/fr/firefox/addon/722 ).

Maintenant, essayons de mettre en place une attaque de ce style.

Imaginons une page clickjackme.html, de code source :

<html>
<head><title>ClickJackMe !</title></head>
<body>
<form action="http://www.perdu.com" method="POST">
<input type="submit" value="ClickJackMe!" />
</form>
</body>
</html>

Vous l’aurez compris, le but est que le visiteur clique sur notre bouton “ClickJackMe!”. Les propriétés HTML qui vont nous servir sont “z-index” permettant de régler la profondeur, et opacity pour l’opacitée des pages. Nous utiliserons en plus de ça un filtre ( alpha(opacity=0) ).

Pour inciter notre visiteur à cliquer, nous allons mettre un bouton pour “Skip intro” :)

Le code source de notre page lambda.html :

<html>
<head>
<title>Page Lambda</title>
</head>
<body>
    <div id="lambda" style="z-index:-10; position:absolute; top:1px; height:10px; padding-top:15px; width:100%; padding-left:35px; ">
        <input type="button" value="Skip Intro" />

    </div>
    <div id="evil" style="z-index:10; opacity:0; filter:alpha(opacity=0);">
        <iframe id="iframe" src="clickjackme.html" frameborder="O"  style="opacity:0; filter:alpha(opacity=0);" />
    </div>
</body>
</html>

J’imagine que vous voulez voir ce que cela donnerait si nous n’avions pas cacher la page clickjackme.html . C’est tout simple, remplacez opacity:0 par opacity:60 par exemple ( c’est en % ). Vous remarquerez que nos deux boutons ( Skip intro  et ClickJackMe! ) sont l’un sur l’autre.

Il n’y a pas très longtemps, il y avait possibilité de bypasser les filtres de Noscript, avec par exemple pour l’équivalent d’une iframe: <object data=”http://www.google.com” width=”200″ height=”200″></object>

Ce problème à été réglé dans la dernière version de NoScript ;)

Can You Crack a Code?

6 août 2009

En ces périodes de fêtes, et pous fêter la fin d’année, une gentille agence américaine nous propose de déchiffer un petit texte. J’ai nommé le Federal Bureau of Investigations ( http://www.fbi.gov/ ) et la belle image présente sur leur page d’accueil.

Aller, pour les plus fénéants, voici le code : VFWTDLCSWV. YD NSLMIJFWEJFD GSW SL NIJNQBLM FOBV EJFDVF DLNIGTFBSL. KBVBF YYY.AHB.MSK/NSCDC.OFZ FS EDF WV QLSY SA GSWI VWNNDVV

Alors, comment ne pas sauter sur cette occasion pour mettre en pratique ce que vous avez pu apprendre dans mes modestes articles ?

En effet, le YYY. nous mets tout de suite la puce à l’oreille. Mais oui, nous avons bien à faire à un chiffrement mono-alphabétique ( http://blog.4j4x.net/?p=7 ), et cette partie représente surement une URL .

Poussons plus loin, si vous le voulez bien :

YYY : pas de grand secret, on devine le WWW tant répandu.
AHB.MSK : Bon, un petit coup d’œil à l’URL qui nous nargue au-dessus… posons l’hypothèse : AHB.MSK = FBI.GOV

On revient à notre texte de départ. Pas grand chose d’intéressant sur le début, mais on devine le mot VISIT, juste avant l’URL. En effet, un rapide coup d’oeil aux fréquences de chaque lettre :

a 1.57480314961 %
b 4.72440944882 %
c 2.36220472441 %
d 6.29921259843 %
e 2.36220472441 %
f 9.44881889764 %
g 2.36220472441 %
h 0.787401574803 %
i 3.14960629921 %
j 3.14960629921 %
k 1.57480314961 %
l 5.51181102362 %
m 2.36220472441 %
n 5.51181102362 %
o 1.57480314961 %
p 0.0 %
q 1.57480314961 %
r 0.0 %
s 8.66141732283 %
t 1.57480314961 %
u 0.0 %
v 7.08661417323 %
w 5.51181102362 %
x 0.0 %
y 3.93700787402 %
z 0.787401574803 %

nous montrent qu’il est fort probable que vu son haut pourcentage d’apparition, notre F correspond au T anglais. On apprend par la même occasion qu’il y a 4 lettres inconnues.

Continuons notre investigation :

On remarque un W*, notre D correspondera surement à un E.
Un petit coup d’oeil dans notre URL, et que vois-ton ? .*T*
Or, la majorité des pages du site ont l’extension .htm

A partir de là, il n’est pas bien difficile de continuer.

On trouve alors le N pour un C, W pour U, I pour R, G pour Y, L pour N, T pour P, J pour A, E pour L, Q pour K et C pour D, nous dévoilant complétement l’url www.fbi.go/coded.htm, sur laquelle on nous souhaite d’”happy holidays”.

Voilà donc pour le challenge de cette année, vivement l’année prochaine :)

PS : par curiosité, regardons si  les correspondances ont été choisis au hasard ?

ABCDEFGHIJKLMNOPQRSTUVWXYZ => FIDELTYBRAVNGCH*K*OP*SU*WM

Sachant que la phrase clé n’admet aucun doublons, on y voit surement le mot Fidelity .

Mais à quoi corredpondrait la suite ? BRAV pour le courage ? ou bien il y manque certaines lettres intermédiaires ( le E, I, Y déjà utilisé ) ?

Bonjour tout le monde !

6 août 2009

Tout d’abord, une chose à dire : Enchanté !

Le pourquoi du comment de ce blog ?

Surement l’envie de publiez mes articles, mes essais, et toutes ces petites choses dans un “home sweet home”, tenu à jour, et pouvoir connaitre vous impressions dessus :) . Il est vrai que j’ai déja mon site ( http://4j4x.net ), néanmoins, l’interface “Shell”, et la fréquence à laquelle je le met à jour laissent désirer…

Je vous invite donc sur ce blog madeinWordpress, en éspérant qu’il vous plaira, que vous y apprendrez des choses, que vous aurez des sueurs froides, et que vous vous ferez plaisir en m’expliquant pourquoi je suis à côté de la plaque dans vos commentaires ;) .

Sur ceux, je vais pouvoir ( enfin ) mettre les articles déjà tout chaud / prêt, et me familiariser avec cette belle interface :] .

Le mot d’ordre est donc : Have fun !