Ein in den letzten Jahren heiß diskutiertes Thema war Clickjacking. Aber was genau ist Clickjacking eigentlich, wofür wird es eingesetzt und vor allem: Wie wird es umgesetzt? In diesem Artikel geh ich genau auf diese Sachen ein.
Inhaltsverzeichnis
Was ist Clickjacking?
Clickjacking beinhaltet eigentlich zwei Worte, Click und Hijacking (Klickdiebstahl). In den vorigen Jahren wurde Clickjacking auf diverse Arten und Weisen genutzt. Das wohl populärste Beispiel war das sogenannte Facebook Click- oder auch Like-Jacking.
Ahnungslose Leute wurden auf dubiose Internetseiten mit einem vermeintlich “schockierenden” Video gelockt. Sobald sie auf den Play-Button des “Videos” (was eigentlich ein simples Image war) geklickt haben, war die Tat auch schon vollbracht: Im Endeffekt hat derjenige nämlich nicht den abspielen Knopf geklickt, sondern einen, hinter der Maus versteckten Like/Share Button, der dafür gesorgt hat, dass der Video-Link direkt auf der eigenen Pinnwand landet.
In der Blackhat-Szene hat sich für dieses Szenario der Begriff “Social Trust” etabliert. Social Trust beschreibt die Wahrscheinlichkeit, dass Freunde/Bekannte auf einen Link klicken. In der Tat, man muss kein Atomphysiker sein: Wenn die eigene Mutter, die beste Freundin oder Jemand, der einem nahe steht einen Link bei Facebook propagiert, dann wird das schon seine Gründe haben. Die ausnahmslos reißerischen Titel haben für noch mehr Interesse gesorgt.
Aus dem erfolgreichen Test entwickelten sich noch diverse andere Methoden à la AdSense ClickJacking, Cookie-Stuffing mit realem Klickverhalten, Toolbar Downloads u.v.m. Doch genug der Erklärung, schauen wir uns im Detail an, wie diese Technik im Einzelnen angewandt wird, wo sie explizit zum Einsatz kommt, was es für Probleme gibt und wie man Patterns, die zwielichtig für Affiliate Manager aussehen, vermeiden kann.
Pay per Click (AdSense & Co)
Der wohl beliebteste Einsatz von Clickjackern lag ohne jedweden Zweifel bei Google AdSense. Billiger Traffic aus einem Land ist schnell gekauft, Zeit diesen zu monetarisieren.
Die ersten Case-Studies haben sich alle darauf fokussiert, eine Seite zu erstellen, die den Benutzer zum Klicken animiert. Es wurde, genau wie beim Facebook-Likejacking auch eine One-Page erstellt, mit einem Bild, dass ein Video darstellen sollte und zwei tatsächlich sichtbaren AdSense-Ads.
Das Bild sah in etwa so aus:
Der Traffic, der auf der Seite gelandet ist, hatte hinter dem Mauszeiger das versteckte AdSense-Div. Beim Klick auf den vermeintlichen Play-Button wurde also auf die versteckte Werbung im Hintergrund geklickt und es gab Provision.
So einfach, wie es scheint, war es dann aber im Endeffekt doch nicht. AdSense Accounts wurden reihenweise gesperrt. Aber warum? Ganz einfach:
Die Patterns:
- Überdurchschnittlich hohe CTR
- Die Klickposition (x, y) wurde von AdSense aufgezeichnet
- Jeder, der die Seite betrat, wurde “geclickjacked”
Wie also konnte man die CTR natürlich aussehen lassen, die Klick-Position variieren und dafür sorgen, dass nur bestimmter Traffic tatsächlich was von dem Clickjacking “abbekommt”?
Fangen wir mit der Klick-Position an. Die AdSense Ads gibt es in verschiedenen Größen, Text/Image, Text und Image only. Textanzeigen zu clickjacken war relativ schwierig, warum? Schauen wir uns doch mal eine AdSense-Textanzeige an:
Die einzigen Bereiche, die dort angeklickt werden können, sind tatsächlich die roten Headlines. Nicht unbedingt einfach alle klickbaren Pfade auf der X und Y Achse zu definieren, vor allem nicht, wenn man unterschiedlich große Textanzeigen hat.
Die meisten haben sich daraufhin für Image-Ads entschieden, was das ganze erheblich einfacher macht. Eine Image-Ad kann an jeder Position angeklickt werden und führt zu einem validen Klick.
Doch auch da war für den Blackhat der eigentlich absolut keine Ahnung von programmiertechnischen Aspekten hatte, das Ende vom Lied. Wie also bestimmt man nun einen zufälligen Punkt innerhalb eines Bildes? Das ist relativ einfach gelöst:
1 2 3 4 5 6 7 8 9 10 | <?php public static function GetRandomPoint($imageWidth, $imageHeight) { $out = array(); $out['X'] = mt_rand(0, $imageWidth); $out['Y'] = mt_rand(0, $imageHeight); return $out; } ?> |
Man weiß von Anfang an, wie groß die Ad ist, dementsprechend übergibt man der Methode GetRandomPoint die Dimensionen und bekommt einen zufälligen Punkt innerhalb des Bildes wieder, den man im Endeffekt an sein Script weiter geben kann.
Das Click-Pattern-Problem wäre also gelöst, aber wie filtert man den Traffic, sodass nicht jeder gehijacked wird? Dafür gibt es wirklich viele Ansätze, ich werde nur auf den wohl Bekanntesten eingehen, den Referrer-Check. Ziel ist es bei dieser Methode, nur Leuten, die von Referrer(n) X kommen das Clickjacking-Script “unter zu jubeln”. Schauen wir uns das ganze doch mal codeseitig an:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php public static function IsValidClickjackVictim() { // Unsere Liste aller zu erlaubenden Referrer $allowedReferrers[] = array(); $allowedReferrers[] = 'google.com'; $allowedReferrers[] = 'facebook.com'; $allowedReferrers[] = 'gekauftertraffic.de'; //... $checkReferrer = $_SERVER['HTTP_REFERER']; foreach ($allowedReferrers as $key) if (stripos($checkReferrer, $key) !== false) return true; return false; } ?> |
(Mir ist bewusst, dass dieser Algorithmus natürlich manipulierbar ist, es ist auch nur zur Veranschaulichung gedacht!) Ruft man jetzt also in dem PHP-Script IsValidClickjackVictim() auf und der User hat “google.com”, “facebook.com” oder “gekauftertraffic.de” im Referrer, gibt die Methode true, ansonsten false zurück. Bei true als Rückgabewert bindet man das Script ein, bei false nicht.
Mit diesem kleinen Snippet hat man übrigens direkt auch Problem 1 mit der CTR gelöst. Sollte die CTR dennoch zu hoch sein, bietet sich an, Junk-Traffic zu kaufen, den der Clickjacker einfach in Ruhe lässt.
Forced Downloads
Spätestens seit der Erfindung des “Ihr Adobe Flash-Player ist veraltet”, boomen Pay-Per-Install Programme. Nun ist es in der heutigen Zeit relativ schwierig, genau selbige an den Mann zu bringen. Das haben auch die jeweiligen Programmbetreiber gemerkt und geben dem Affiliate nun die Möglichkeit, den Dateinamen des Downloads dynamisch für Conversion-Tests zu ändern.
Der Ansatz für Downloads ist so einfach wie genial: Adult Traffic. Gerade dieser Traffic ist enorm anfällig für Download-Programme, erst recht, wenn auf einmal eine Datei im Download-Manager erscheint, die “You-Have-Been-Hacked.exe”, “Your-Computer-Is-Infected.exe” oder “Youporn-Gave-You-A-Virus.exe” heißt (die Open-Rate ist überdurchschnittlich hoch, probier es gerne selbst aus!)
Was also machen? Ganz einfach: Man besucht die üblichen Tube-Portale, die ich hier nicht verlinken möchte, macht einen Screenshot von einem Video (bizarre Videos funktionieren extrem gut) und verfährt wie beim Like-Jacking auch, mit einer HTML Seite und dem Video als Screenshot (Note für die, die’s ausprobieren möchten: Popup-Traffic funktioniert nicht ansatzweise so gut wie Overlay-Traffic!)
Cookie Stuffing
So alt wie das Affiliate-Marketing ist wohl auch das Cookie-Stuffing. Cookie-Stuffing beschreibt nichts anderes, als einen (ohne wissentliche Benutzerinteraktion) ausgeführten Klick auf einen Affiliate-Link.
Für die Anwendung aus diesem Bereich gibt es etliche Ansätze, die ich hier nicht weiter ausführen möchte. Mit ein wenig Kreativität wird sich jeder wohl sein eigenes Bild machen können.
Ist ClickJacking illegal?
Ja. Und wenn man damit rum experimentieren will, dann bitte “under the radar” und möglichst nicht in Deutschland, das könnte nämlich arge Probleme geben. 😉 Alles, was hier veröffentlicht wird, dient lediglich zu Schulungszwecken!
Begib dich nicht auf diese dunkle Seite des Marketings, über kurz oder lang wirst du (neben den vielen gesperrten Accounts) keine Freude daran haben! Ich hoffe trotzdem, dass ich dir mit diesem Artikel einen kleinen Einblick in die Welt des Blackhat-Marketings geben konnte. 🙂