Versteckspiele mit JavaScript

Ein kleiner und leicht verständlicher Ausflug in die Welt der JavaScript-Programmierung, um zu zeigen, wie extrem schwierig es ist, „bösartigen“ JavaScript-Code als solchen zu erkennen


Der im Moment wohl häufigste Weg, wie versucht wird, Ihnen Malware unterzujubeln, ist per E-Mail und arbeitet mit einem zweistufigen Verfahren:

Sie bekommen eine Mail mit einem Anhang, der im wesentlichen aus einem kleinen Programm geschrieben in JavaScript besteht. Lassen Sie diesen Code laufen, lädt er die zweite Stufe, das eigentliche Schadprogramm, direkt von irgendwoher aus dem Internet herunter und bringt es zur Ausführung.

Heute gängige Antiviren-Programme versagen mehr oder weniger beim Abwehren der ersten Stufe. Sie sind nur selten in der Lage zu erkennen, dass solcher JavaScript-Code im Prinzip „bösartig“ ist: Kein Alarm, keine Warnung, keine Blockade – der Code rutscht meistens einfach so durch!

Ich möchte Ihnen heute zeigen, warum das so ist.

Nehmen wir an, eine Software soll Ihren Computer davor schützen, dass via JavaScript der Text Hackerangriff! angezeigt wird. Das folgende völlig triviale einzeilige JavaScript-Programm tut genau das und darf also nicht zur Ausführung gelangen:

alert('Hackerangriff!');

Das sieht nach einer leichten Aufgabe aus für unser Schutzprogramm: Kommt der „gefährliche“ Text irgendwo im JavaScript-Code vor, und das hier ja offensichtlich der Fall, dann Ausführung blockieren.

Was ist aber mit folgendem Code, der genauso den fraglichen Text ausgibt, bei dem dieser aber schon nicht mehr einfach so im Programmtext zu finden ist:

alert('Hacker' + 'angriff!');

Wenn Sie nun finden, dass ein paar eingestreute Plus-Zeichen doch wohl für heutige Programme keine unüberwindbare Hürde darstellen, dann sehen wir weiter:

alert('!ffirgnarekcaH'.split('').reverse().join(''));

Sie ahnen vermutlich jetzt, wo das hinführt: JavaScript ist eine vollständige und mächtige Programmiersprache, und es gibt praktisch unendlich viele Möglichkeiten, via Code einen Text zusammenzubauen, und das ist natürlich ein grosses Problem.

Das Thema Künstliche Intelligenz ist zwar momentan in aller Munde, aber Programme, die andere Programme „lesen“ und dann sagen können, was die tun, sind noch in weiter Ferne. Heute gibt es praktisch nur einen generellen Weg, um herauszufinden, was JavaScript-Code tut: Man muss ihn ausführen, und es dürfte klar sein, dass es nicht einfach ist, das auf eine ungefährliche Art zu machen.

Wenn Hacker JavaScript-Code schreiben, der Trojaner auf Ihren Computer auf Ihren Computer laden soll, gehen sie vermutlich meistens so vor, dass sie den Code zunächst ganz normal schreiben, und ihn dann einem Programm übergeben, welches die „Verschleierung“ vollautomatisch erledigt.

Solche Programme nennt man auf Englisch obfuscators. Wie weit das gehen kann, sieht man an der Demo von jjencode. Diese macht aus unserer JavaScript-Zeile in der Originalversion das folgende, vollkommen korrekte JavaScript mit gleicher Funktion:

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\"+$.$__+$.___+"'\\"+$.__$+$.__$+$.___+$.$_$_+$.$$__+"\\"+$.__$+$.$_$+$._$$+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.$_$_+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$$$+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+$.$$$$+$.$$$$+"!'\\"+$.$__+$.___+");"+"\"")())();

Weil dieser Verschleierungs-Vorgang so einfach ist und voll automatisiert in den Mail-Versende-Prozess einbindbar, sind jeweils vom gleichen Trojaner-Downloader Dutzende, wenn nicht Hunderte, von Varianten im Umlauf!

Gefahren beurteilen kann so seine Tücken haben

Beim Nachdenken über verschiedene Gefahren und beim Abwägen derselben gegeneinander kann das menschliche Gehirn ziemlich leicht in eine Art „Falle“ geraten. Kennen Sie diese, könnte das bereits Ihr Urteilsvermögen stärken.


Es ist fast so etwas wie ein Hobby von mir, mich mit den verschiedenen Arten zu befassen, wie das menschliche Gehirn bei seiner Arbeit versagen kann, und auch Beispiele für „Versager“ zu finden, nicht zuletzt bei mir selbst. Ich beziehe mich hier auf Phänomene wie Denkfehler, die immer wieder vorkommen, über Dinge, die überraschend häufig missverstanden werden, über eigentliche Denkblockaden, usw.

Ich finde, man kann hier für sich sehr viel herausholen: Wenn man z.B. Denkfehler gut kennt und es dadurch schneller merkt, wenn man gerade selbst einen solchen macht, kann man viele Probleme einfacher bewältigen als andere Leute, die im Extremfall schlicht nicht glauben können, dass ihr Gehirn manchmal krasse Fehler begeht.

Ein interessantes Phänomen ist für mich, welche Probleme Menschen dabei haben können, Gefahren einschätzen.

Manchmal hat man in einer Situation verschiedene Vorgehensweisen offen, die aber alle mit Gefahren verbunden sind, so dass man zwischen diesen abwägen sollte: Man schätze die Grösse aller Gefahren und wähle dann diejenige Vorgehensweise, die mit der kleinsten Gefahr verbunden ist.

Hierbei kann einem allerdings etwas in die Quere kommen: Manche Gefahren kann man sich als Mensch so viel einfacher vorstellen als andere, dass sie wie ein Magnet auf das Gehirn wirken und man beim Abwägen kaum mehr davon loskommt.

Ok, höchste Zeit für ein Beispiel, um zu illustrieren, wovon ich hier überhaupt schreibe:

Für eine Reise kann ich entweder fliegen oder einen Fernbus nehmen. Ich überlege mir die Wahl von den Gefahren her. Eine Gefahr bei einer Reise ist natürlich ein Unfall. Ich stelle mir also auf der einen Seite einen Flugzeug-Absturz aus 10’000 Metern Höhe vor, und auf der anderen Seite eine Kollision des Fernbuses mit einem LKW.

Sehen Sie, worauf ich hinauswill? Die Vorstellung, in einer Metallkiste 10 Kilometer vom Himmel zu stürzen und dann am Boden zu zerschellen, wobei zu allem Übel der Absturz noch eine Weile dauert und ich also auf den Tod warten muss, ist einfach so viele Male schrecklicher als die Vorstellung eines Busunfalls.

Das macht es sehr schwierig, die grossen Unterschiede der Wahrscheinlichkeiten der beiden Unfall-Arten gebührend mit zu berücksichtigen: Der leicht vorstellbare Horror eines Flugzeugabsturzes wirkt tatsächlich wie ein Magnet auf das Gehirn, so dass Logik und Urteilsvermögen einen sehr schweren Stand haben.

Nicht umsonst ist Flugangst ein bekanntes Phänomen mit einer gewissen Verbreitung, aber Bus-auf-Autobahn-Unfall-Angst meiner Meinung nach so gut wie unbekannt.

Gibt es dieses Problem auch in der IT-Sicherheit? Ich denke ja, und ich glaube, ich habe ein konkretes Beispiel:

Wenn sich heute jemand die verschiedenen Optionen anschaut, wie er mit seinen zahlreichen Passwörtern umgehen will, kommt er bei Passwort-Managern vorbei und bei der Tatsache, dass er bei deren Einsatz alle seine Passwörter auf einen einzigen Haufen legt.

Und hier sehe ich sie nun, die Gefahr, die für ein menschliches Gehirn einen solchen Magneten darstellt, dass man kaum mehr weiterkommt mit dem Evaluieren aller Möglichkeiten. Es ist glasklar: Gibt’s irgend ein Problem mit meinem Passwort-Manager, sind gleich sämtliche Passwörter weg.

Das ist für mich das IT-Sicherheits-Äquivalent eines Flugzeugabsturzes!

Ich habe schon Threads gelesen in Foren, wo man über Passwort-Manager diskutierte und schon nach kurzer Zeit intensiv gestritten wurde darüber, wie doof man denn sein muss, dass man auch nur in Erwägung zieht, alle seine Eier (Passwörter) in einen einzigen Korb (Passwort-Manager) zu legen, was die Vorteile, die Passwort-Manager haben, und die Nachteile einer „händischen“ Verwaltung von Passwörter, an den Rand drängte.

Ich hoffe jetzt nicht, dass ich Sie so von Passwort-Managern überzeuge, und wenn Sie Flugangst haben sollten, werden Sie diese Ausführungen natürlich auch nicht einfach so kurieren. Aber ich hoffe, wenn Sie jetzt dank diesem Blog-Eintrag schneller merken, dass Sie ein solcher „Magnet“ anzieht und Sie aktiv gegensteuern können, ist etwas gewonnen.

Wenn das Opfer den Betrüger betrügt

Über eine Möglichkeit, Internet-Betrügern das Leben schwerer zu machen, die im Prinzip jedermann offensteht, aber nicht ungefährlich und auch einigermassen anspruchsvoll ist


Hat Sie auch schon die Lust gepackt, es diesen elenden Spam-Mail-Versendern mal so richtig heimzuzahlen? Oder betreuen Sie aus dem Internet erreichbare Server und überlegten sich, wie man gegen die Roboter zurückschlagen könnte, die ohne Ende Passwörter durchprobieren für Ihren SSH-Dienst auf Port 22? Oder erkannten eine Website gerade noch so als Fake- und Phishing-Ding und hätten am liebsten einen Versuch gestartet, in den betreffenden Server einzubrechen und alles zu löschen?

So verständlich und so natürlich derartige Gefühle sind: Mir ist im Verlaufe meiner bisherigen IT-Security-Ausbildung klar geworden, dass es für eine Privatperson in fast allen Fällen keine Möglichkeit gibt, auf eigene Faust irgendwie erfolgreich „zurückzuschlagen“.

Und selbst wenn, gibt es da noch die kleine Sache mit den Gesetzen, die ziemlich stark einschränken, was man machen darf, ohne selbst kriminell zu werden: Digitale Selbstverteidigung mit dem Argument Der hat zuerst geschossen ist nicht.

Es gibt allerdings eine Ausnahme, und die gefällt mir auch nach Jahren immer noch so gut, dass ich hier unbedingt davon berichten muss:

Wenn jemand versucht, Sie per E-Mail mit irgendeiner Masche hereinzulegen, können Sie antworten und den Eindruck erwecken, Sie hätten angebissen, dabei aber versuchen, die Sache so weit wie möglich in die Länge zu ziehen: Stellen Sie immer neue Rückfragen, bringen Sie Alternativ-Vorschläge zur Abwicklung des Geschäfts ins Spiel, machen Sie Zusagen und halten diese dann mit irgendwelchen Entschuldigungen doch nicht ein, usw.

Was bringt das? Nun, wenn Sie sich dabei geschickt anstellen, wendet der Betrüger eine Menge Zeit auf, um sich mit Ihnen herumzuschlagen, immer in der Hoffnung, dass am Schluss etwas bei Ihnen herauszuholen ist – Zeit, die dann bei der Suche nach neuen Opfern weggeht.

Man nennt so etwas auf Englisch Scam Baiting, wie in diesem Wikipedia-Artikel erklärt. Es gibt hierzu ganze Communities von Leuten, die sich untereinander austauschen und sich Tipps geben. Die bekannteste davon ist wohl 419 Eater. Auf Deutsch habe ich das Forum Scambaiter-Deutschland gefunden.

Schön ist auch die Liste 10 Great Scam Baiting Operations.

Das Ganze ist allerdings keineswegs ein einfaches und harmloses Vergnügen. Sie treten dabei ganz direkt in Kontakt mit Kriminellen, und auch wenn die wohl meistens ziemlich weit weg z.B. in Nigeria sitzen, dürfen solche Leute trotzdem Ihre wahre Identität und persönliche Informationen über Sie nicht in die Hände bekommen – das wäre einfach zu gefährlich.

Und man sollte diese Leute generell nicht unterschätzen: Die wissen auch, dass Scam Baiters unterwegs sind und dürften entsprechend misstrauisch und vorsichtig sein. Das arglose und einfach etwas schusselige Opfer glaubhaft zu spielen ist vermutlich nicht so einfach!