webconsul

the best webconsul(ting)

Stuxnet – digitaler Erstschlag zum Cyberkrieg

Sie sind hier: Startseite » Sicherheit

Frank Rieger: Der digitale Erstschlag ist erfolgt
Und damit hat der Pressesprecher vom CCC recht.

Lang und breit will ich hier auch gar nicht die Fakten wiedergeben, lest euch den obig verlinkten Artikel bei der FAZ unbedingt durch und schaut dann weiter in Franks privaten Blog und direkt auf den Post mit Titel:
stuxnet: targeting the iranian enrichment centrifuges in Natanz?

Weitere Meinung dazu gibt es auch im Post betitelt Willkommen im Cyberkieg auf netzpolitik.org.

Achja, wer den Podcast Alternativlos noch nicht kennt, sollte selbigen auch unbedingt abonnieren. Frank und Fefe machen dort richtig gutes Radio beziehungsweise endlich mal Berichte mit genügend Hintergrundwissen und -recherche, die für jeden Geek interessant ist. Also auf, reinhören!

Update:

FTD: Free Paid Content – Wie man es NICHT macht!

Sie sind hier: Startseite » Sicherheit

Der Tweet vom bösen SEO Fehler auf Financial Times Deutschland erlaubt das Lesen von kostenpflichtigen Artikeln mit dem Verweis auf den Artikel Fehler auf Financial Times Deutschland von Sebastian Klipper hat mich dazu inspiriert einen FTD Free Paid Content Redirect zu schreiben:

FTD Free Content Redirect:

<?php
  $url = str_ireplace('www', 'm', $_GET['s']);
  header("Location: $url?mode=simple");
?>

Die Quintessenz des Skripts ist oben dargestellt, in meinem Code ist etwas mehr (Sicherheit + Styling) drin, wird aber nicht benötigt.

Über diesen Link könnt ihr also Artikel kostenfrei aufrufen, indem ihr einfach die originale Artikel-URL einfügt und danach weitergeleitet werdet.

Dies ist ein wunderschönes Beispiel, warum clientseitige Redirects bzw. Sicherheitschecks nicht funktionieren.
Auf der User-Seite kann man eben alles modifizieren, schließlich ist es mein Rechner der den Inhalt kontrolliert.

Also liebe Admins von FTD, lest diesen Beitrag und passt daraufhin eure Umleitung anhand der Browser-Identifikation an.

Liebe Leser: sollte die Umleitung von FTD serverseitig gelöst werden, dann stellt einfach euren User-Agent um und kommt trotzdem an der wertvollen Inhalt ;-)

Also liebe Admins: solltet ihr zuviele kostenfreie Zugriffe erhalten, baut einen Login/Cookie vor euren Paid Content und zwingt somit alle Leser zum Kauf eurer Inhalte.

UPDATE: Der ursprüngliche Fund stammt von Marko Rogge.

Facebook Spam – Caught on Webcam Clickjacking

Sie sind hier: Startseite » Sicherheit

Heute ist scheinbar der Tag des Spams. Genauso wie im vorherigen Artikel handelt dieser über Spam, genauer Facebook Spam und eine aktuelle Kampagne mit dem Titel “Caught on Webcam”.

Einen link dazu gibt es natürlich nicht, aber die Domain ist einfacherweise mit den drei Wörter, – statt Leerzeichen unter einer .info-Domain zu erreichen.

Ruft man die Seite auf, präsentiert sich auf dem Bildschirm folgender Inhalt:

Facebook Spam - Caught on Webcam


Auf den ersten Blick ist es nicht sonderlich spammy, sondern eher eine solide Altersfreigabe, da man den Inhalt ja vor jungen Augen schützen muss. Der geneigte Surfer wird sich dann gleich auf den “Verify”-Button stürzen um an den Inhalt zu kommen, wegen dem er ja gekommen ist.

Aber Vorsicht, denn genau hier lauert die Gefahr bzw. der Trick:

Facebook Spam - Caught on Webcam - Visible iFrame


In obigem Screenshot habe ich mit Firebug den Facebook-Like-Button aka “Gefällt mir” sichtbar gemacht.
Würde man sich also zielstrebig auf den Verify-Button stürzen, merkt man lediglich in seinem Profil, dass man eine doch eher unliebsame Seite “mag”.

Dies ist die bisher ausgefeilteste Taktik, die ich bei bisherigen Facebook-Clickjacking-Seiten gefunden habe. Wie ich damals geschrieben hatte, ist mittlerweile ein alter Hut.

Geschickt in diesem Beispiel ist auch, dass von der Startseite aus, eine weitere Datei vom Server geladen wird, die main.php. Ein Aufruf selbiger gibt nur die Meldung mit einem Link zur Startseite aus. Scheinbar will da jemand nicht, dass man direkt an den Quellcode kommt (weswegen auch der Rechts-Klick mit einem Alert-Fenster überschrieben wurde).

Der Button wird mit folgendem Code eingebunden und positioniert:
<div z-index:12; id="verify-button">                                    
  <div style="z-index:2; filter:alpha(opacity=0); -moz-opacity:0.0; -khtml-opacity: 0.0;opacity: 0.0;">
    <iframe src="http://www.facebook.com/plugins/like.php?href=caught-on-webcam.info%2F&layout=button_count&show_faces=true&width=450&action=like&colorscheme=light&height=21" allowTransparency="true"></iframe>
  </div>
  <div style="z-index:1;"><img src="http://i53.tinypic.com/dm6wjk.gif" ></div>      
  <div style="z-index:3;"><img onclick="share()" style="cursor:pointer" src="http://i54.tinypic.com/2ue4qy9.gif" ></div>
</div>

Die hervorgehobenen Stellen im obigen HTML-Code dienen allesamt zum Versteck und Positionierung des Like-iframes. Aus Lesbarkeitsgründen habe ich Angaben die Höhe, Breite, Umrandung und Co weggelassen.
Neben den unterschiedlichen CSS-Attributen opacity und filter:alpha und dem allowTransparency=”true” wird über eine geschickte Nutzung des z-index der “Verify”-Button in den Hintergrund (z-index: 1), der iframe darüber (z-index: 2) und darüber der valide (z-index: 3) “Share”-Button gelegt.
So dient alles seinem Zweck und der Nutzer klickt entweder auf “Gefällt mir” oder auf “Share” und der Spammer hat sein Ziel erreicht.

Das Wichtige an obigem Beispiel ist aber, dass die Seite wie eine App gestaltet ist und man eben über an die main.php nicht direkt herankommt.
Was ich mir gut vorstellen kann oder ich selbst machen würde ist, dass man mit

if($_SERVER["HTTP_REFERER"] == 'http://www.myspammysite.info/') {
  // clickjacking content
} else {
  // good content
}

den direkten Aufruf unterbindet und somit eine eingehendere Analyse vermeidet. Wird dies noch mit einer IP-Blacklist erweitert, die den internen Adressen des Facebook-Unternehmens entspricht, dann kann auch niemand verdacht schöpfen.
Bis zum Schrieb dieses Artikel konnten so knapp 65.000 (genauer 65,975) Besucher veräppelt werden.

Dies ist gerade mal wieder eine schöne Attacke die unter dem Radar fliegt. Viele von diesen geschickt ausgearbeitet und noch ein wenig modifiziert und man kann ein ziemlich großes Netzwerk damit aufbauen, ohne, dass irgendjemand etwas davon mitbekommt ;-)

Wie immer dient dieser Post als Proof-Of-Concept und sollte natürlich nicht nachgemacht werden.

Das Archiv der Originaldateien könnt ihr hier herunterladen: caught-on-webcam.info-Dateien (sowohl die index.html als auch eingebunde main.php)

Let’s Spam XING – oder wie man XING als Referrerspam missbrauchen kann

Sie sind hier: Startseite » Sicherheit

Heute Morgen bin ich über einen Tweet auf eine interessant Meldung von Franz Neumeier gestoßen.
Dieser ist wie ich auf XING angemeldet und schrieb den Artikel Kreative Spam-Idee in XING.

Lest euch den Artikel durch, sodass ihr wisst, was mit folgendem Skript erreicht werden soll:
<?php

$names = [...]; // Array, Datenbank, Namensbuch, ...

for($i=0; $i<sizeof($names); $i++) {
   $site = 'http://www.myspammysite.info/?who='.$names[$i];
   $url = 'https://www.xing.com/profile/'.$names[$i];

   $c = curl_init($url);
   curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; ...) Gecko/20061204 Firefox/2.0.0.1");
   curl_setopt($c, CURLOPT_REFERER, $site);
   curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($c, CURLOPT_HEADER, 0);
   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
   $r = curl_exec($c);
}
?>

Damit funktioniert die ganze Technik schon.
Über $names werden alle Namen geladen und im Schema Vorname_Nachname zusammengefügt und dann einfach über eine Schleife der Reihe nach geladen.
$site wird dabei immer auf den gewünschten Referrer gesetzt, sodass man seine Werbeseiten dort unterbringen kann.

Wie man das Skript genau modizifiert, dass es dem XING-System nicht auffällt und ihr unter dem Radar fliegen könntet, solltet ihr euch selbst überlegen.

Gerade da XING eine intelligente Zielgruppe anspricht, sollte man nicht unbedingt mit nackten Frauen oder Casinos Werbung machen, sondern vielleicht mit XY… ;-)

Auf jeden Fall ist es eine kreative Idee, die hier als Proof-Of-Concept dargestellt werden sollte.

Als XING-User kann man nichts dagegen unternehmen, XING selbst könnte allerdings solche Aufrufe erkennen und unterbinden.

Böser Bot! Scraper aus Deinem Blog ausschließen

Sie sind hier: Startseite » Sicherheit

Seit einiger Zeit tummeln sich diverse Crawler auf meinem Blog, die meine Inhalte übernehmen und auf anderen Seiten veröffentlichen.
Das wäre ja kein Problem, wenn man das entsprechend mit angibt.

Daher habe ich nun folgende drei Schritte unternommen um automatisches Scrapen zu erschweren:

  1. RSS-Feed auf Kurzfassung umgestellt: Admin-Panel -> Einstellungen -> Lesen -> Newsfeed Kurzfassung
  2. Yoasts RSS Footer Plugin um einen Link und eine Ursprungsnotiz hinzuzufügen
  3. Die index.php von WordPress folgendermaßen modifiziert:


<?php
// Bots und Scraper ausschliessen:
function botcheck($ua) {
  $matches = array("java", "libwww", "perl", "curl");
  for($i=0; $i<sizeof($matches); $i++)
    if(stristr($ua, $matches[$i])) {
      return true;
    } else {
      return false;
    }
}

if(botcheck($_SERVER['HTTP_USER_AGENT'])) {
  echo "Böser Bot: geh weg!<br/>Falls Du doch kein Bot bist, überprüfe bitte deinen User-Agent.";
} else {
  define('WP_USE_THEMES', true);
  require('./wp-blog-header.php');
}
?>

Ist zwar im Sinne der Rechenleistung und Website-Geschwindigkeit nicht optimal, aber zumindest werden alle Bots die sich im User-Agent mit Java, Perl und vielem mehr ausgeben entsprechend mit einer Meldung abserviert.
Die Modifizierung muss direkt in der Index-Datei im WordPress-Root-Verzeichnis gemacht werden, da diese die restliche Auslieferung vorantreibt. Im WordPress Theme selbst funktioniert das nicht.

Klar, das löst nicht alle Probleme, aber zumindest erschwert es die Sache etwas und plumpes Content-Scraping funktioniert damit nun nicht mehr.

Schauen wir mal, welcher Bot zuerst seinen User-Agent umstellt ;-)

PS: Natürlich werden einige Bots auch über die robots.txt blockiert, aber Scraper halten sich leider nicht daran ;-)

8 Kommentarregeln um kein Spam zu sein

Sie sind hier: Startseite » Sicherheit

Als Follow-Up zu meinem letzten Post habe ich mal den hier aufschlagenden Kommentarspam analysiert.

Neben zahlreichen russichen Posts, Verweisen auf die üblichen Download- und Medikamentseiten, sind in letzter Zeit sowohl die Urlaubsbranche als auch Anbieter von Roulette-Systemen deutlich aktiver.

So macht es keinen Sinn in einem Blog wie diesen, der hauptsächlich über computer- und internetrelevante Themen schreibt Mietwägen und Flughäfen in Mallorca anzupreisen, oder?

Sucht man aber die Möglichkeit in themenrelevanten Blogs zu posten, dann findet man schnell keine wirklich guten Seiten, da diese fast ausschließlich von anderen SEOs betrieben werden. Tjo, die Branche ist eben hart umkämpft, schließlich kann sich nicht jeder billigen Urlaub leisten oder hat ihn gar verdient.

Auch wenn ich das aufkommen dieser Art von Blogbeiträgen vor der Urlaubssaison auf jeden Fall nachvollziehen kann, so kann ich eher weniger verstehen, warum gerade Roulettechats sich hier aktiv bewerben wollen.
Da dies wohl eine einzigartige Trenderscheinung ist um den Platzhirsch im Ranking zu vertreiben, will ich mal nicht so kleinlich sein.
Aber alleine die Menge an unterschiedlichen URLs die hier aufschlagen lässt wohl die auf die Arbeit eines der Branchengrößen und/oder mehrere schließen ;-)

Das hießt, abschließen solltet ihr euch merken:

    Postet

  1. auf themenrelevanten Seiten
  2. in gleicher Sprache
  3. honorierend den Autor/Webmaster persönlich gegenüber
  4. verhindet Blacklisiting durch Erkennung der Anti-Spam-Systeme
  5. mit einem registrierten und individualisierten Account
  6. postet mehrmals im gleichen Blog
  7. mit Bezug auf den Inhalt des Posts
  8. nicht wie ein Spam-Kommentar

Das dürften die wichtigsten 8 Kommentar-Spam-Regeln sein um nicht zu sagen Richtlinien.

Blogspamming like a Pro

Sie sind hier: Startseite » Sicherheit

In den letzten zwei Posts steht, wie man Inhalte von anderen Seiten scrapet oder zur eigenen Verarbeitung lädt.

Dieser Post gehört wie manche anderen auch wieder in die Kategorie: don’t try this at home und macht es nicht, damit könntet ihr gegen irgendwelche Gesetze und/oder Richtlinien verstoßen.

ABER stellt euch folgendes Szenario/Anwendungsgebiet vor:

  1. Suche in der Google Blogsuche nach neuen Trends und Themenrelevanz
  2. Laden des jeweiligen Blogposts und
    1. Analyse des Inhalts
    2. Modifizieren des Inhalts
    3. Erstellen eines Kommentars
    4. Posten des Inhalts aus 2.2. in eigenen Blog
  3. Verschleierung der Spuren via Referer, User-Agent und Co
  4. Verwendung von registrierten (und eingerichteten Blogaccounts)

Dabei ist im Punkt 2.1. genau darauf zu achten, welche Form von Anti-Spam-Methoden benutzt werden.
Die lässt sich aber eindeutig Anhand diverser Merkmale im Quellcode identifizieren und danach suchen und entsprechend reagieren.

In 2.1. sollte man auch weiterhin auf den Autor eingehen und ihn bzw. den Nickname grüßen (evtl. auch sogar dem Link zur Autorenpage folgen und davon den (Vor-)Namen verwenden).

Das ergibt einen perfekten Kommentar in Punkt 2.3. den man einfach mit einem potentiell übermittelten Cookie und dem richtigen Referer versandt werden kann, sodass man in den meisten Fällen einfach durchkommt.

Die Methode kann man insofern verbessern, dann man sich manuell auf der jeweiligen Seite registiert und den oft benötigten ersten Post per Hand erstellt und dann die Daten in die Datenbank aufnimmt und ab da automatisch mit dem Webmaster “interagiert” ;-)

Dort könnte man zum Beispiel folgende Daten speichern:

ID BlogUrl Autor/-en Thema Username Passwort AntiSpam-Plugin Postfrequenz Feed

Auch hier ist wieder ein Schelm wer böses denkt, schließlich kann man im Internet doch nicht spammen oder seinen Unfug treiben.

An alle mit schwarzen Hüten: schämt euch und habt Spaß mit eurem Sportwagen ;-)

PS: Gut zusammengefasst auch nochmals hier: Linkbuilding Details

How To Hijack Facebook Like – oder: wie bringe ich Deinen Like-Button unter (meine) Kontrolle

Sie sind hier: Startseite » Sicherheit

===DISCLAIMER===
Dieser Beitrag ist definitiv in die Kategorie Blackhat und damit in Deutschland als nicht nutzbar einzustufen.
Bitte haltet euch daran und respektiert, dass der Release des Codes nur als Proof of Concept dient und so keinesfalls genutzt werden darf und soll.
Wer dies macht, macht es auf eigene Gefahr und macht sich unter Umständen strafbar.
===/DISCLAIMER===

Genug der mahnenden Worte.
Heute geht es in einem einfachen aber effektiven Beispiel darum, wie ich Kontrolle über den Like-Button auf Facebook bekomme.
Damit könntet ihr eure Social Media Optimierung auf eure Links einfach durchführen, denn jeder Websitebesucher mag euch automatisch und teilt dies dann auch freudig allen seinen Freunden mit. Ob er mag oder nicht.

Als was man diese Methode genau bezeichnet weiß ich nicht, ist an dieser Stelle auch egal, denn es soll ja sowieso nicht gemacht werden. Man könnte es als Clickjacking bezeichnen.

Und zwar kommt der Nutzer auf eine Seite und es wird ein kleines Skript geladen, welches sich an seinen Mauszeiger hängt und bei einem Klickevent eben auf den Button drückt.
Klingt simpel, ist es auch:
Facebook Like Button Hijack
Das Skript gibt es als Archiv zum Download hier: fb-hijack-direct

Das funktioniert ganz einfach, da in der JavaScript-Datei eine HTML-Division erzeugt wird, mit folgendem Inhalt:
<iframe id="ifra" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.google.de/&layout=standard&show-faces=true&width=650&action=like&colorscheme=light" scrolling=no frameborder=0 width="30px" height="25px" style="opacity:.0;filter: alpha(opacity=0); -moz-opacity: 0.0;"></iframe>
Damit wäre die zu mögende Adresse http://www.google.de/.
Zu bermerken ist hierbei, dass der CSS-Style das ganze unsichtbar macht.

Wenn Du das Skript auf genau der Seite nutzt, dessen URL gehypt werden soll, dann funktioniert es. Denn der iframe sendet an Facebook den richtigen Referer, sodass auch so mancher Sicherheitscheck umgangen werden kann.

Der Hook document.onmousemove=followmouse erledigt dann den Rest, denn die Funktion followmouse nimmt jeweils die aktuelle Position des Mauszeigers, korrigiert dann die Position des obigen divs mit dem enthaltenen iframe, sodass sich der Zeiger immer über der jeweiligen Klickposition, dem Like-Button, befindet.

In Anlehnung an meinen Post damals zur effektiven Steigerung der Conversion Rate mittels Browserhistory kann man dieses Beispiel natürlich auch noch aufwerten und vorher überprüfen, ob der User überhaupt schonmal auf Facebook war und sich dort gegebenfalls schon eingeloggt hat.
Das Beispiel dazu gibt es in diesem Archiv als Download:
fb-hijack-visited

UPDATE: Genutzt wird das aktuell über diverse Tattoo oder ähnliche Seiten!

Also lasst euch nochmals sagen, dass ihr das auf keinen Fall nutzen sollt.
Und wenn ihr das doch macht, dann seid ihr böse Buben!
Diesen Jungs dürfte das gefallen.

Effektiver Spamschutz mit JavaScript

Sie sind hier: Startseite » Sicherheit

Für einen Kunden habe ich gestern folgende Methode implementiert um effektiv die Unternehmensadressen für Spambots unzugänglich zu machen.

Das Prinzip ist relativ einfach, denn der gewünschte E-Mail Link wird folgendermaßen gesetzt:
<a href="mailto:#" title="username">username --at-- example . de</a>

Damit funktioniert der Klick auf die E-Mail-Adresse noch nicht. Der gesetzte title-Tag verrät aber schon, dass aus diesem die E-Mail-Adresse erzeugt werden soll, sodass man doch mit einem Klick den Empfänger im zum Beispiel Microsoft Outlook schon gesetzt hat.

Es reicht jetzt am Seitenende folgendes JavaScript zu laden:
for(var i=0; i<document.getElementsByTagName('a').length; i++)
  if(document.getElementsByTagName('a')[i].href.match(/mailto:/))
    document.getElementsByTagName('a')[i].href =
       'mailto:'+document.getElementsByTagName('a')[i].getAttribute('title') +'@example.de';

Wichtig ist dabei, dass der Code im Template am Ende eingefügt wird, am besten vor oder nach dem schließenden body-Tag.
In dem kurzen JavaScript-Snippet wird jeder Link auf der Seite betrachtet, falls er “mailto:” enthält, wird der Link mit “mailto:$title@exmaple.de” ersetzt. Wobei $title eben den Wert des gesetzten Attributs enthält.

Ziemlich einfach, oder?
Damit kann man als Webdesigner den Kunden einfach zufrieden stellen und das Layout bzw. Webtemplate schnell und effektiv absichern.

AntiVirus Fakes zur Infektion neuer Systeme

Sie sind hier: Startseite » Sicherheit

Vor ein paar Stunden habe ich in meinem Feedreader den Beitrag von F-Secure zu darkmarket.ws gesehen.

In dem darin verlinkten Video werden am Ende Webseiten gezeigt, die gezielt Unternehmensseite nachahmen um ahnungslose User in die Falle tappen zu lassen.
Gerade da die Seiten professionell aussehen und dem User der Unterschied von Fake zu Original nicht auf Anhieb klar wird, stellt das ein großes Problem dar.
Denn würden die Scammer statt einem Fake AntiVirus-Durchlauf eine echte Freeware ausliefern und ihr eigenes Programm nur auf die White-/Ignoreliste setzen, dann würden sogar alle anderen richtig erkannt und entfernt werden.

Das soll jetzt keine Anregung für die bösen Jungs sein, aber kann vielleicht ein Whitehat testen, ob das so klappen könnte?