Bankentrojaner haben in den letzten Jahren unter Cyberkriminellen an Popularität verloren. Einer der Gründe ist die Entwicklung von Schutztechnologien für Antivirenanbieter und Webbrowser-Entwickler. Es ist schwierig, einen Angriff mit einem Bankier durchzuführen, weshalb viele Virenschreiber auf einfachere und rentablere Tools umsteigen: Verschlüsseler, Miner und Software zum Stehlen von Kryptowährungen.
Viele, aber nicht alle. Wir haben eine neue Familie von Bankern entdeckt, die neue Techniken zur Manipulation des Browsers verwenden. Anstatt Code komplex in den Browserprozess einzuführen, um dessen Aktivität zu überwachen, erfasst die Malware Windows-Ereignisse im Wartezyklus für Nachrichten, um die Werte von Objekten zu überprüfen, die sich auf Bankvorgänge beziehen.
Nachdem die Malware die Arbeit mit Online-Banking entdeckt hat, fügt sie schädliches JavaScript in die Webseite ein - über die Entwicklerkonsole im Browser oder direkt in die Adressleiste. Operationen werden ohne das Wissen und die Beteiligung des Benutzers durchgeführt. Auf den ersten Blick können Sie mit einem einfachen Schema die erweiterten Mechanismen zum Schutz von Browsern vor komplexen Angriffen umgehen.
Einführung
Wir haben diese Cybergruppe zum ersten Mal im Januar 2018 bemerkt, als sie frühe Entwicklungen verteilte - zum Beispiel ein Programm zum Stehlen von Kryptowährung durch Ändern der Brieftaschenadresse in der Zwischenablage. Die Gruppe beschäftigte sich mehrere Monate lang mit Kryptowährung und veröffentlichte danach die erste Version des Bankiers. Ab dem 13. März werden ESET-Antivirenprodukte diese als Win32 / BackSwap.A erkennen.
In der folgenden Grafik sehen Sie laut unserer Statistik einen starken Anstieg der Erkennungen im Vergleich zu früheren Projekten. Die Autoren verbessern den Banker und veröffentlichen fast täglich neue Versionen (mit Pausen für das Wochenende).
Abbildung 1. Entdecken Sie Win32 / BackSwap.A und verwandte frühere ProjekteVerteilung und Ausführung
Win32 / BackSwap.A wird in Spam-E-Mails verteilt, die einen verschleierten JavaScript-Loader aus der Nemucod-Familie im Anhang enthalten. Derzeit richten sich diese Newsletter an Benutzer aus Polen.
Wir haben auf den Maschinen des Opfers oft einen
anderen bekannten Win32 / TrojanDownloader.Nymaim-Bootloader gefunden, der sich wahrscheinlich auf die gleiche Weise verbreitet. Derzeit wissen wir nicht, ob dieser Zufall oder diese Familien miteinander verwandt sind.
Die Nutzdaten werden als modifizierte Version einer legitimen Anwendung geliefert, die teilweise von einer böswilligen Komponente neu geschrieben wurde. Die für Änderungszwecke verwendete Anwendung ändert sich regelmäßig - wir haben TPVCGateway, SQLMon, DbgView, WinRAR Uninstaller, 7Zip, OllyDbg und FileZilla Server in dieser Qualität beobachtet.
Die Anwendung wird so geändert, dass sie nach ihrer Initialisierung auf schädlichen Code umschaltet. Zu diesem
_initterm()
fügen die Autoren einen Zeiger auf eine schädliche Komponente in der Funktionstabelle
_initterm()
, die sich innerhalb der Laufzeit der C-Bibliothek befindet und globale Variablen und andere Teile des Programms initialisiert, bevor die Funktion main () aufgerufen wird.
Abbildung 2. Array von Zeigern _initterm einer legitimen Anwendung, an deren Ende ein Zeiger auf den Banker-Shellcode hinzugefügt wirdDie Methode ähnelt der Trojanisierung. Der Unterschied besteht darin, dass in unserem Fall die ursprüngliche Anwendung nach dem Initialisieren der Malvari nicht mehr funktioniert. Der Zweck der Methode besteht nicht darin, den Benutzer zu maskieren, sondern der Erkennung und Forschung entgegenzuwirken. Analysten finden es schwieriger, diesen Banker zu erkennen, da viele Reverse Engineering-Tools wie IDA Pro die ursprüngliche main () - Funktion als legitimen Start des Anwendungscodes anzeigen. Nicht die Tatsache, dass der Analyst auf den ersten Blick etwas Verdächtiges bemerkt.
Die Nutzlast ist ein positionsunabhängiges Binärcodeobjekt mit eingebetteten Daten. Zeichenketten werden im Klartext gespeichert, sodass Sie bereits subtile Spuren ersetzen können, da alle erforderlichen Windows-APIs durch Hashing gesucht werden. Zu Beginn der Arbeit sorgt die Malware für Persistenz, indem sie sich selbst in den Startordner kopiert und anschließend zu den Funktionen des Bankiers wechselt.
Traditionelle Injektionsmethoden
Ein gewöhnlicher Bankier, der über die Online-Banking-Oberfläche Geld vom Konto des Opfers stiehlt, stellt sich oder ein spezielles Modul in den Adressraum des Browserprozesses vor. Aus mehreren Gründen ist dies keine leichte Aufgabe. Zunächst kann die Injektion durch ein antivirales Produkt abgefangen werden. Außerdem sollte die Bittiefe des implementierten Moduls mit der Bittiefe des Browsers übereinstimmen - das 32-Bit-Modul sollte nicht in den 64-Bit-Prozess eingebettet sein und umgekehrt. Daher erfordert ein Angriff zwei Versionen desselben Moduls - 32- / 64-Bit.
Nach einer erfolgreichen Injektion sollte das Bankmodul die mit dem Browser verbundenen Funktionen erkennen und abfangen. Er benötigt Funktionen, die für das Senden und Empfangen von HTTP-Anforderungen im Nur-Text-Format vor der Verschlüsselung bzw. nach der Entschlüsselung verantwortlich sind. Die Komplexität beim Auffinden von Funktionen variiert von Browser zu Browser. In Mozilla Firefox werden sie von der Bibliothek nss3.dll exportiert, und ihre Adressen sind anhand ihrer bekannten Namen leicht zu finden. Google Chrome und andere Chromium-basierte Browser verbergen diese Funktionen. Dies zwingt Virenschreiber dazu, spezielle Schemata für eine bestimmte Version des Browsers zu entwickeln und die Taktik zu ändern, wenn neue Versionen veröffentlicht werden.
Wenn die Funktionen gefunden und abgefangen werden (und die Antivirenlösung sie nicht erkannt hat), kann der Bankier den HTTP-Verkehr ändern oder das Opfer auf Websites umleiten, die legitime Online-Banking-Ressourcen simulieren und Zertifikate fälschen. Ähnliche Methoden werden von den berühmten
Bankentrojanern Dridex ,
Ursnif, Zbot, Trickbot, Qbot und vielen anderen verwendet.
Neue Browser-Manipulationsmethode
Win32 / BackSwap.A implementiert einen völlig anderen Ansatz. Bunker verwendet Elemente der grafischen Windows-Shell und die Nachahmung von Benutzereingaben. Die Methode mag trivial erscheinen, ist jedoch effektiv, da Sie damit die bekannten Probleme der herkömmlichen Injektion lösen können. Erstens interagiert die Malware auf Prozessebene nicht mit dem Browser. Dank dessen sind keine besonderen Privilegien und die Umgehung von Antivirenprogrammen erforderlich, die vor herkömmlicher Injektion schützen. Der zweite Vorteil für Angreifer besteht darin, dass der Banker nicht von der Browserarchitektur oder seiner Version abhängig ist. Ein Code funktioniert für alle.
Malware verfolgt die URL der besuchten Seite, indem sie Ereignis-Hooks für einen bestimmten Bereich relevanter Ereignisse festlegt, die über die Windows-Nachrichtenwarteschleife verfügbar sind, z. B. EVENT_OBJECT_FOCUS, EVENT_OBJECT_SELECTION, EVENT_OBJECT_NAMECHANGE und mehrere andere. Der Handler sucht nach URL-Werten, indem er nach Zeichenfolgenobjekten sucht, die mit HTTPs beginnen, die durch Aufrufen der Methode
IAccessible
Ereignisschnittstelle IAccessible abgerufen werden.
Abbildung 3. Empfang zum Abrufen der URL der aktuellen Seite im Browser. Diese Adressen werden durch Überprüfen des Teilstrings [ht] tp [s] (rot hervorgehoben) erhalten.Anschließend sucht Win32 / BackSwap.A nach bankbezogenen Adressen und Browserfenster-Headern, um anzuzeigen, dass der Benutzer eine Überweisung vorbereitet.
Abbildung 4. Der Bankier sucht nach Codezeilen für bestimmte Banken. Die erste Zeile ist der Fenstertitel, die zweite der URL-TeilNachdem der Banker das gewünschte gefunden hat, lädt er bösartiges JavaScript herunter, das einer bestimmten Bank entspricht, und fügt es in den Browser ein. Die Injektion erfolgt auf einfache, aber effektive Weise.
In älteren Beispielen fügt Win32 / BackSwap.A ein schädliches Skript in die Zwischenablage ein und simuliert einen Tastendruck zum Öffnen der Entwicklerkonsole (STRG + UMSCHALT + J in Google Chrome, STRG + UMSCHALT + K in Mozilla Firefox). Fügen Sie dann den Inhalt des Puffers (STRG) ein + V) und drückt ENTER, um den Inhalt der Konsole auszuführen. Die Malware wiederholt dann die Tastenkombination, um die Konsole zu schließen. Zu diesem Zeitpunkt wird das Browserfenster unsichtbar - ein normaler Benutzer wird höchstwahrscheinlich denken, dass der Browser einige Sekunden lang einfriert.
In neuen Versionen wird die Schaltung verbessert. Anstatt mit der Entwicklerkonsole zu interagieren, wird ein schädliches Skript direkt aus der Adressleiste über ein
spezielles JavaScript-Protokoll ausgeführt , eine Funktion, die von den meisten Browsern nicht ausreichend genutzt wird. Der Bankier ahmt das Drücken von STRG + L nach, um die Adressleiste auszuwählen, LÖSCHEN, um das Feld zu löschen, "gibt" die Zeichen in "Javascript" durch einen Aufruf von SendMessageA in einer Schleife ein und fügt dann ein schädliches Skript mit der Kombination STRG + V ein. Das Skript wird nach "Drücken" der EINGABETASTE ausgeführt. Am Ende des Prozesses wird die Adressleiste gelöscht, um Kompromissspuren zu entfernen.
In Abbildung 5 sehen Sie einen Teil des injizierten Codes in der Konsole. Zunächst definiert Win32 / BackSwap.A einen Browser, indem der Klassenname des ausgewählten Fensters (blau markiert) überprüft wird. Schädliches JavaScript wird in den Puffer kopiert (rot markiert). Dann wird der Transparenzwert des Browserfensters auf "3" geändert, wodurch es unsichtbar wird (lila markiert). Der Teil, der sich auf die
ToggleBrowserConsole
Funktion
ToggleBrowserConsole
, mit der die Konsole
ToggleBrowserConsole
und ausgeschaltet wird, ist
ToggleBrowserConsole
.
Abbildung 5. SkriptinjektionWin32 / BackSwap.A unterstützt Angriffe auf Google Chrome und Mozilla Firefox. Die Unterstützung für Internet Explorer wurde in neueren Versionen hinzugefügt. Die Methode eignet sich für die meisten Browser mit einer Entwicklerkonsole oder der Möglichkeit, JavaScript-Code über die Adressleiste auszuführen (Standardbrowserfunktionen).
Drei gefährdete Browser verfügen über eine interessante
Sicherheitsfunktion , die
Self-XSS-Angriffe verhindert : Wenn ein Benutzer versucht, kopierten Text beginnend mit „Javascript:“ in die Adressleiste einzufügen, wird das Protokollpräfix gelöscht und muss erneut manuell eingegeben werden, um das Skript auszuführen. Win32 / BackSwap.A umgeht dieses Hindernis, indem es die Zeicheneingabe eines Präfixes in der Adressleiste simuliert, bevor das kopierte schädliche Skript eingefügt wird.
Ein weiteres Sicherheitstool ist in Mozilla Firefox implementiert. Der Browser verbietet standardmäßig das Kopieren von Skripten auf die Konsole. Stattdessen wird eine Benachrichtigung über mögliche Risiken angezeigt und der Benutzer wird gezwungen, zuerst manuell den Ausdruck "Einfügen zulassen" einzugeben, um das Einfügen kopierter Zeichen zu ermöglichen. Um diese Sicherheitsmaßnahme zu umgehen, sieht Win32 / BackSwap.A die Ausführung eines Shell-Befehls vor (Abbildung 6), der Änderungen an der Konfigurationsdatei
prefs.js
und diesen Schutz
prefs.js
.
Abbildung 6. Ein Shell-Befehl, der den Schutz vor dem Einfügen eines Skripts in die Firefox-Konsole aufhebtSchädlicher JavaScript-Code
Win32 / BackSwap.A verwendet für jede Zielbank ein spezielles Skript. Da alle Banken unterschiedliche Standorte haben, ist der Code unterschiedlich und hat unterschiedliche Variablen. Skripte werden in die Seiten eingefügt, auf denen nach Angaben des Bankiers die Vorbereitung der Überweisung erfolgt. Die implementierten Skripte ersetzen heimlich die Kontonummer des Empfängers durch eine andere. Wenn das Opfer die Überweisung sendet, wird das Geld auf das Konto des Angreifers überwiesen. Gegenmaßnahmen gegen nicht autorisierte Überweisungen (Zwei-Faktor-Authentifizierung) sind machtlos, da der Kontoinhaber die Übermittlung von Geldern bestätigt.
Die Autoren von Win32 / BackSwap.A haben Skripte für die Zusammenarbeit mit fünf polnischen Banken geschrieben: PKO Bank Polski, Bank Zachodni WBK SA, mBank, ING und Pekao. Die Betreiber entfernen einige Banken aus der Liste der Ziele - in den meisten neuen Versionen sind noch drei Banken übrig: PKO BP, mBank und ING. In älteren Versionen senden Angreifer die Kontonummer des Empfängers von C & C-Servern auf gehackten WordPress-Sites. In neuen Versionen werden Nummern in den schädlichen Skripten selbst gespeichert. Konten ändern sich häufig - in fast jeder neuen Kampagne wird eine neue Kontonummer verwendet.
Banker sind an Überweisungen in einem bestimmten Bereich interessiert - normalerweise zwischen 10.000 und 20.000 polnischen Zloty (168.000 bis 337.000 Rubel). Das Skript ersetzt nicht nur die Kontonummer des Empfängers, sondern auch das Eingabefeld durch ein falsches - der Benutzer sieht die richtige Nummer und ahnt nichts.
Abbildung 7. Teil des schädlichen JavaScript-Codes. Rot markierte Websites sind dafür verantwortlich, den Überweisungsbetrag zu überprüfen und die Kontonummer des Empfängers zu ersetzenFazit
Win32 / BackSwap.A beweist, dass die Konfrontation zwischen der Sicherheitsbranche und Virenschreibern nicht immer eine neue ausgefeilte Technik und Taktik erfordert. Browser verbessern den Schutz vor Code-Injection, sodass die Autoren der Malware auf andere Angriffsmethoden umgestellt haben und nur eine in Win32 / BackSwap.A implementiert ist.
ESET- Antivirenprodukte erkennen eine Bedrohung wie Win32 / BackSwap.A.
ESET-Spezialisten informierten Entwickler über kompromittierte Browser über eine neue Angriffsmethode.
IoCs
9BC4C1D5403DDD90712CE87225490A21D1EDC516 JS/Nemucod.EAN trojan
CF5A74C268661501156663F74CD5E20603B0F261 Win32/BackSwap.A trojan
6251F9AD0E5F551AC4A6B918EF366E86C4CCFDC4 Win32/BackSwap.A trojan
2DC9760A7C6E9D261C73EFB7B2604840734BC058 Win32/BackSwap.A trojan
A68901D0D8C1247FF280F9453E3AE45687C57566 Win32/BackSwap.A trojan (JavaScript)