Coinhive Javascript Cryptocoin Miner erklärt [Trojaner]

JavaScript Trojaner Hacking Guide Tutorial Steffen Lippke
JavaScript Trojaner Hacking Guide Tutorial Steffen Lippke

JavaScript Trojaner oder geniale JavaScript Apps? Segen und Fluch zugleich!

Single Page Applications (SPA) bestehen zu 100 % aus JavaScript und der Nutzer profitiert davon.

Auf der anderen Seite entwickeln Hacker Web Viren und Trojaner mit JavaScript, die viel Macht über den Browser und das Betriebssystem haben können.

Dieser Post solle einen Überblick über die JavaScript Trojaner geben.

Entwicklung der mächtigsten Script-Sprache: JavaScript

1995 entwickelt Brendan Eich bei Browserhersteller Netscape „LiveScript“. Die Webentwickler sollen mit LiveScript die statischen Webseiten interaktiver gestalten können. Später nannte das Unternehmen LiveScript in JavaScript um.

Der Sinn + Zweck von JavaScript

Früher konnten die Entwickler nur Server-seitige Script-Sprachen verwenden. Der Endnutzer musste für jede Interaktion die Webseite neu laden, was bei einer 1KiB/Sekunden-starken Leitung länger dauern kann. Das ECMAScript soll einen standardisierten JavaScript-Kern schaffen, der die wesentlichen Funktionen, einer Programmiersprache darstellen.

JavaScript – objektorientiert Sprache

Mit JavaScript können Entwickler ihre Webanwendung nach objektorientierte Ansätze entwickeln. TypeScript (Microsoft JavaScript) eignet sich für die Objektorientierung, weil dieser den TypeScript Code in JavaScript-Code übersetzt.

Pakte und Bibliotheken mit JavaScript

Die Regelungen des ECMAScript dienen den Paketmanager Node.js als Grundlage, mit dem Entwickler Open-Source-Bibliotheken in JavaScript einbinden können.

In der Vergangenheit entdeckten Sicherheitsforscher Backdoors in beleibten JavaScript-Bibliotheken. Jede Software, die diese Bibliotheken verwendet, ist anfällig für Hacker.

Gefahr JavaScript – Hacking im Browser

Die drei Scripts können Entwickler in jede Webseite einbetten. JavaScript ist Segen und Fluch zugleich.

Früher waren aus diesem Grund die Erweiterungen NoScript beliebt. Heute funktionieren viele Webseiten ohne die Client-Script-Sprache nicht mehr.

Fallstudie: Locky – Social Engineering JavaScript Trojaner

Der Virus Locky verteilt sich mit JavaScript im Browser. Ein Downloader nutzt eine Verschleierungstechnik, um die Schadsoftware unbemerkt auf den Computer zu laden.

Über Spam-E-Mails konnte sich der Virus im Web verbreiten. Das Opfer erhält eine E-Mail, die auf einer Social-Engineering-Attacke basiert. Der Inhalt der E-Mail fordert dem Nutzer auf, dn schädlichen E-Mail-Anhang zu öffnen. Die Anhänge nennen sich „Rechnung Oktober.pdf.exe“ oder „Inforamtionsblatt.pdf.exe“. Mit dem Ausführen installiert sich der Downloader, der den Schadcode versteckt in Multimedia herunterlädt und entpackt.

Der Locky-Virus basiert auf JScript, einer Microsoft-Abwandlung von JavaScript. Ein Download-Stream kann den JavaScript Trojaner auf die Festplatte laden.

Das Hacking-Modell basiert nicht auf einer Lücke (Exploit), sondern auf einer Unachtsamkeit bzw. Unwissenheit der Nutzer.

Krypto-Miner – Wie Kriminelle mit Viren Geld verdienen

Mit JavaScript und Deiner Rechenleistung Deines Computers können Hacker Krypto-Miner aktivieren. Diese schürfen mit Deinem Strom und Rechenleistung Kryptowährung wie Bitcoins.

Geniale Programmierer entwickelten eine Software wie Coinhive, die Kryptowährung auf anderen Computern über JavaScript minen kann. Für das Mining braucht der Programmierer viel Rechenleistung und Strom, den die Programmierer nicht bezahlen möchten. Beim Minen berechnet der Computer neue „Blöcke“. Diese Blöcke sind Datenspeicher, in der Algorithmus die Transaktionen von Verkäufe / Kauf von der Kryptowährung speichert.

Der Krypto-Minern als Software bedroht den Nutzer nicht, sondern bei einer Infektion muss der Nutzer System-Leistungseinbußen hinnehmen. Der Hacker versucht ein verteiltes System mit einem Botnetz von infizierten Computern aufzubauen. Je mehr Opfer der Crypto-Miner infiziert, desto mehr Gewinn können die Kriminellen aus dem Krypto-Minen genieren.

Stromverbrauch Krypto-Netzwerk Bitcoin

Rechenleistung kostet viel Geld. Crypto-Miner brauchen noch mehr Strom!

Um die Kryptowährung Bitcoin am Leben zu erhalten braucht die Miner weltweit 56,79 Terawattstunden (optimiert) pro Jahr bzw. bei realistischen Schätzungen 73,12 Terawattstunden.

70 Terawattstunden Strom verbraucht das Land Österreich in einem Jahr. Den Algorithmus könnten die Macher strom-effizienter gestalten – das wünschen sich die Miner nicht, weil sonst der Bitcoin unsicherer wird.


Praxis: JavaScript Trojaner entwicklen mit JavaScript

Der folgende JavaScript-Code kann die modernen Browser wie Chrome, Edge und Firefox in die Knie zwängen.

Die Browser Firefox und Chrome versuchen den Nutzer vor groben oder absichtlichen Programmier-Fehlern mit Blockaden zu schützen. Wie einfach ein Hacker die Blockaden umgehen kann, möchte ich mit den folgenden 3 Beispiel-Viren zeigen:

  1. CPU-Schleife: Weniger als 50 Zeilen Code bringt die CPU zur Weißglut. Mit 100 % Auslastung kann der Nutzer den Computer kaum noch bedienen.
  2. RAM-Füller: Der JavaScript Trojaner kann eine Workstation mit 128 GB RAM im Speicher überlasten. Der Browser oder das Betriebssystem stürzen bei der Ausführung ab.
  3. Keylogger: Mit diesem Programm können Hacker unbemerkt Passwörter stehlen.

Loop.js – Aus der CPU eine Heizung bauen

Loop.js besteht aus Schleifen und Selbst-Aufrufen. Durch zufällige Schleifenaufrufen (Math.random()) vermeiden der Code, dass Firefox das Vorhaben unterbindet.

Rekursive Schleifenaufrufe blocken die modernen Browser. Mit Zufall wirkt der JavaScript Trojaner wie normal geschriebenes Programm. 3 Funktionen mit zwei Verzweigungen reichen aus für die optimale Verwirrung aus.

Mit diesem Programm kannst Du Deine CPU als Heizung im Winter nutzen.

Schwer zu arbeiten bei solchen Loops
Schwer zu arbeiten bei solchen Loops

Fillram.js – RAM füllen bis er platzt

Der JavaScript-Code Fillram.js basiert auf loop.js. Per Zufall rufen die Schleifen die einzelnen Funktionen verzweigt auf.

JavaScript stellt einen Listener zur Verfügung, der bei jedem Tastaturdruck ein Event geniert. Dieses Event beinhaltet den Wert der Tastatur z. B. einen Buchstaben, Absatz oder Leerzeichen.

Bei dem Löschen-Tastendruck fügt die Funktion kein Element zum Array hinzu, sondern löscht mit der pop()-Funktion das letzte Element aus dem Array.

Nach 10 Minuten Aufnahmezeit kann eine JavaScript XHR-Anfrage die ersten Abschnitte an den Server senden.

Beim Auswerten von den Tastendrucksequenzen sucht der Hacker nach dem Nutzernamen des Users und analysiert die Sequenz danach.

Der Nutzer könnte mehrmals sein Passwort falsch eingeben. Einem Enter oder Mausklick trennt die falschen Passwörter von dem richtigen Passwort.



Quelleangabe Bilder: Icons und SVG-Grafiken im Titelbild von Microsoft PowerPoint 2019, frei verfügbar nach EULA

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.