Comme le suppose le titre de ce post je parle ici de néthodes pas très honnêtes pour cacher ses cookies et utiliser de faux clics pour une utilisation que je vous laisse personnelle ( nous y reviendrons). Dans ce post je présente seulement les méthodes de mise en place du cookie stuffing ou du faux clic. Pour le reste (trouver ou placer les images, comment cacher la fraude etc.) je vous laisse les commentaires.
Le but
Cookie Stuffing :
Le but de la manipulation est de charger un cookie cible chez un utilisateur qui ne se doute de rien. En temps normal, ce cookie se lance chez votre visiteur lorsqu’il clique sur une pub affiliée, et qu’il se rend sur une boutique. Si il passe un achat avec votre cookie sur son pc, vous touchez un certain pourcentage de vente. Malheureusement, ce visiteur peut très bien visiter votre site tous les jours, voir votre pub pour un Mac Air Book Pro, et prendre sa décision d’achat grâce à vous. Cependant, il peut passer l’achat sans vous, et ne pas passer par votre bannière pour se rendre sur le site du vendeur.
La solution c’est le cookie stuffing : vous forcez l’upload d’un cookie sans un click volontaire. Bien entendu, cela vous permet de mettre votre cookie ‘de force’ sur des sites qui ne sont pas à vous ;-) .
Le click frauding :
Je ne sais pas trop quel nom on donne généralement à la technique que je vais d’ecrire qui se base sur le cookie stuffing, mais je pense que click hiding ou click frauding convient (si quelqu’un le sais, n’hésitez pas à commenter). Qu’ est-ce que nous essayons de faire avec du clic frauding? Et bien tout simplement simuler un click d’ un visiteur sur un lien donné ou une bannère. A quoi ça sert? Je ne pense pas avoir à vous apprendre que le traffic d’un site n’a qu’une seul vocation : apporter plus de visiteurs qui vont encore plus cliquer sur les bannière … qui vont générer des revenues.
Une autre utilisation concerne les nouveaux médias de bookmark sociaux. En effet, on a souvent un classement de nos sites dépendant des clics. L’un des plus utilisés dans le monde francophone est certainement wikio, et cette astuce fonctionne aussi pour lui.
La technique
Le contexte
Les deux méthodes de base qui existent pour cacher des cookies (equivalent aux clics, je parlerai donc de cookie pour mentionner les deux par la suite) sont les suivantes :
Dans la suite de ce post je vous donne des précisions sur la deuxième méthode que j’ai utilisé pour avoir quelque chose comme 2000 clics en 5 ou 6 heures pour un concours bidon.
Le but était de faire le plus de clics (réels) sur une URL donnée. Dans mon cas c’étais androidparty.be/Jice. Cependant, afin de cacher un brin la fraude, pour retirer l’URL du referer sur lequel nous allons injecter notre code, j’ai créé une adresse du type miniurl (bit.ly ou autre). Si vous avez des idées pour cacher votre referer, ou utiliser un aléatoire ( un petit script suffit, mais on passe toujours par des referer qui font douter comme les rétrecisseurs d’url).
Le code
Le code que j’ai mis en place se base sur deux articles que vous retrouverez en fin de page. Il utilise le module apache mod-rewrite pour regarder si le referer est humain ou si il s’agit d’un site. Dans le cas d’un humain il va afficher une image banal. Dans le cas d’un site, il va regarder si l’ip a déjà été utilisée dans les 12 dernières heures, et si c’est le cas a affiché la-dite image. Sinon, il envoie notre code grâce a la fonction php header.
Tout d’abord on utilise une image innocente, comme pixel.gif, qui va nous servir d’image à afficher lorsque l’on a des doutes sur la provenance de l’ip (sans referer, ou moteur de recherche etc). Je vous laisse en commentaire préciser quelles sont les ip ou conditions à attribuer à l’affichage de l’image.
Ensuite, il faut définir le comportement à utiliser pour l’appel d’une fausse image que l’on appellera fake_pixel.gif. Cette image n’existe pas réellement, il s’agit juste d’un pointeur vers notre fichier malicieux pixel.php. On crée donc le fichier .htaccess qui va bien :
RewriteEngine On
RewriteBase /
RewriteRule fake_pixel.gif pixel.php [L]
Vous allez peut être devoir modifier rewritebase si vous ne lancer pas le script à partir de la racine.
Cela permet l’appel du fichier pixel.php de manière ‘invisible’. Vous pouvez donc l’appeler par toute page grâce à la balise classique, et personne ne se doutera qu’elle appelle en réalité un script php :
<img src="fake_pixel.gif" alt="" >
Cela vous le placerez dans les pages victimes de votre cookie stuff. Celles-ci peuvent se trouver sur votre site … ou pas ;-)
Voyons à présent ce que contient le fichier pixel.php :
<?php
if(!$_SERVER['HTTP_REFERER']){
header("Content-type: image/gif");
readfile('pixel.gif');
} else {
$targ=veriff_add("list_ip.txt"); //ip sont enregistrées et comparées
if($targ){
header("Location: http://tinyurl.com/androidparty-Jice");
} else {
header("Content-type: image/gif");
header("Status: 200",true);
readfile('pixel.gif');
}
}?>
Voilà donc le code. Si le referer n’existe pas, on renvoie l’image directement. Sinon on compare avec notre liste d’ip et on l’ajoute si l’ip n’a pas déjà été utilisée dans les xx heures. La fonction veriff_add vous est personnelle. C’est elle qui enregistre vos ip, et ajoute une fonction aléatoire pour ne pas envoyer toutes les ips d’un seul coup sur la cible.
Améliorations :
Avec le script actuel, lors de la première connexion d'une cible, celle-ci distingue effectivement qu'il manque une image. Je voulais essayer de faire de l’ajax pour palier ce problème, mais le manque de temps (et une soutenance de stage en préparation) m’en a empêché. Le but est d’afficher quand même, pour une premiere connexion, une image après avoir chargée la page cible. J’ai essayé avec la fonction buffer de php, mais sans succès. Si vous avez des idées, je suis preneur.
Ce soucis d’image absente ne vaut que si vous voulez injecter un lien. Si vous voulez injecter un cookie pré-construit, qui ressemble à celui d’un affilié quelconque, le header de l’image peut toujours être envoyé après l’ enregistrement du cookie (voir lien article 2 ci-dessous).
Où poser votre image cible? Et bien en premier lieux sur tous vos sites. Comme ca, ils lanceront tous une connexion vers votre affilié ou concours. Plus barbare/bucheron, vous pouvez aller injecter votre image sur certains sites sociaux à forte population. Nénamoins, mon meilleur résultat a eu lieu avec un fameux moteur de petites annonces US … dans la section rencontre pour adultes 8-) (on s’en doutait pas tiens) .
Une autre idée serait de profiter du hotlinking de certaines de vos images pour pointer vers votre script malicieux. Quelques modifications pourraient même être réalisées pour afficher néanmoins la bonne image aux visiteurs des sites qui vous volent la bande passante. Le schéma serait le suivant :
- pour toute demande d’image provenant de l’extérieur, on renvoie en URL rewrite vers un fichier redir_img.php
- Ce fichier prend en argument l’adresse de l’image demandée
- Il utilise une modification du script ci-dessus pour envoyer notre lien, et/ou afficher la bonne image.
Ca demande un peu plus de code, mais c’est une bonne façon de faire payer son travail ( et ses images) : piquer les visiteurs des pompeurs :-D
Les ressources annexes :
Article 1 servant de base à ce post : http://www.esrun.co.uk/blog/cookie-stuffing-revisited
Article 2 servant de base à ce post : http://www.siteduzero.com/tutoriel-3-4731-images-cookies-loading.html
L’utilisation sur Wikio : http://www.deliciouscadaver.com/comment-forcer-vos-visiteurs-a-voter-pour-vous.html