Überblick
Seit mehreren Jahren verfolgen die Forscher von Proofpoint die Verwendung von First-Stage-Downloadern, die von Bedrohungsakteuren zur Installation anderer Formen von Malware während und nach ihren bösartigen E-Mail-Kampagnen verwendet werden. Vor allem in den letzten zwei Jahren sind diese Downloader immer robuster geworden und bieten fortschrittliche Profiling- und Targeting-Funktionen.
Noch wichtiger ist, dass Downloader und andere Malware wie Botnets und Banking-Trojaner Ransomware als primäre Nutzlast verdrängt haben und Bedrohungsakteuren die Flexibilität geben, eine Reihe von Malware in sekundären Infektionen einzusetzen. Einer der am weitesten verbreiteten, Smoke Loader, wurde beispielsweise ausgiebig genutzt, um Nutzlasten wie Ursnif und The Trick-Bankentrojaner abzuwerfen, sowie seine eigenen Module für Anmeldeinformationen und andere Informationen und Datendiebstahl, neben anderen bösartigen Funktionen, zu verwenden.
Seit Ende August 2019 haben die Forscher von Proofpoint die Entwicklung und den Verkauf eines neuen modularen Loaders namens Buer durch seine Autoren verfolgt. Buer verfügt über Funktionen, die mit Smoke Loader konkurrieren, wird aktiv auf bekannten Untergrundmarktplätzen verkauft und ist für Anwender gedacht, die eine schlüsselfertige Lösung von der Stange suchen.
Kampagnen
August 28, 2019
Am 28. August beobachteten Proofpoint-Forscher bösartige E-Mail-Nachrichten, die scheinbar auf frühere legitime E-Mail-Konversationen antworten. Sie enthielten Microsoft-Word-Anhänge, die Microsoft-Office-Makros verwenden, um die Nutzlast der nächsten Stufe herunterzuladen.
Abbildung 1: Beispiel für einen Microsoft-Word-Anhang, der in der Kampagne vom 28. August 2019 verwendet wurde
Wir beobachteten, dass die Nutzlast der nächsten Stufe von URLs heruntergeladen wurde, darunter:
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
Die abgelegte Nutzlast trug den Namen verinstere222.xls oder verinstere33.exe (eine Namenskonvention, die der Akteur in dieser Zeit verwendete). Anstelle der Dreambot-Variante von Ursnif, die häufig mit diesem Akteur in Verbindung gebracht wird, handelte es sich bei der Nutzlast um einen undokumentierten Lader, der zuvor noch nie in freier Wildbahn beobachtet wurde.
In den folgenden Wochen im September und Oktober beobachteten die Forscher von Proofpoint und andere Mitglieder der Infosec-Community mehrere Kampagnen desselben Akteurs, die entweder die Dreambot-Variante von Ursnif oder diesen neuen Lader abwarfen.
Oktober 10, 2019
Am 10. Oktober beobachteten Proofpoint-Forscher eine Malvertising-Kampagne in Australien, die auf das Fallout Exploit Kit (EK) umleitete und den neuen Loader ablegte.
Abbildung 2: HTTP-Netzwerkverkehrsspur mit dem Fallout-EK, das anfällige Browser ausnutzt
Der Loader warf dann mehrere Malware-Nutzlasten der zweiten Stufe ab, darunter KPOT-Stealer, Amadey und Smoke Loader.
Oktober 21, 2019
Seit Anfang Juli beobachteten die Forscher von Proofpoint etwa 100 Kampagnen, bei denen Ostap fast ausschließlich mehrere Instanzen von The Trick lud. Am 21. Oktober beobachteten die Proofpoint-Forscher jedoch bösartige E-Mail-Nachrichten mit Betreffzeilen wie „Penalty Notice # PKJWVBP“, die Microsoft Word-Anhänge enthielten. Die Dokumente enthielten Makros, die, falls aktiviert, Ostap ausführen würden. Wir beobachteten, dass Ostap diesen Loader von
hxxps://185.130.104187/nana/kum.php?pi=18b&
herunterlud, der wiederum den Trick „ono22“ von seinem C&C: garrisontxus
Abbildung 3: Netzwerkverkehr, der beobachtet wird, sobald das Makro in den bösartigen Dokumenten aktiviert ist.
Abbildung 4: Beispiel für einen Microsoft Word-Anhang, der in der Kampagne vom 21. Oktober verwendet wurde
Marktplatz &Funktionsanalyse
Da wir den Einsatz dieses neuen Loaders in mehreren unterschiedlichen Kampagnen beobachteten, gingen wir davon aus, dass er auf einem Untergrundmarkt an mehrere Akteure verkauft wurde. Darüber hinaus entdeckten wir in einem Untergrundforum eine Anzeige vom 16. August, in der ein Loader namens „Buer“ beschrieben wurde, der mit der Funktionalität der in den oben genannten Kampagnen beobachteten Malware übereinstimmte.
Die in den folgenden Wochen hinzugefügten und beworbenen Funktionen stimmen genau mit der Entwicklung des in diesen Kampagnen gefundenen Loaders überein.
Wir fanden einen Text aus einem Bulletin-Board-Posting des Autors in russischer Sprache, in dem er eine Zahlung von 400 US-Dollar für die Malware forderte und seine Dienste bei der Einrichtung der Software für potenzielle Kunden anbot, um sie zum Laufen zu bringen. Der Autor weist auch darauf hin, dass Updates und Fehlerkorrekturen kostenlos sind, aber ein Aufpreis von 25 Dollar für die „Wiederherstellung neuer Adressen“ erhoben wird.
Der folgende Text, den Proofpoint ebenfalls aus dem Untergrundmarktplatz extrahiert hat und von dem angenommen wird, dass er vom Autor der Malware stammt, ist eine Zusammenfassung der Funktionalität des Loaders, wie sie im russischen Original beschrieben wird:
Abbildung 5. Text aus einem Beitrag im Untergrundforum, in dem die Funktionalität des Buer Loader-Bots beschrieben wird
In ähnlicher Weise werden in der Anzeige auch die Funktionen des Kontrollpanels aufgeführt. Der Autor merkt an, dass der modulare Bot vollständig in C geschrieben ist und ein in .NET Core geschriebenes Bedienfeld verwendet, wobei er die höhere Leistung sowohl des Clients als auch des Servers aufgrund der Wahl der Programmiersprache hervorhebt.
- Der Beschreibung zufolge hat der Bot eine Gesamtnutzlast von 55 bis 60 Kilobyte, funktioniert als native ausführbare Windows-Datei und dynamische Link-Bibliothek, läuft vollständig im residenten Speicher und ist mit 32-Bit- und 64-Bit-Betriebssystemen von Microsoft Windows kompatibel.
- Der Bot kommuniziert über eine HTTPS-Verbindung und kann sowohl nach der Entschlüsselung als auch nach dem Rebuild aus der Ferne über das Kontrollpanel aktualisiert werden.
- Der Autor weist außerdem darauf hin, dass der Loader als Ersatzprozess einer vertrauenswürdigen Anwendung läuft und mit Rechten auf Benutzerebene arbeitet.
- Vor allem läuft die Software nicht in den GUS-Staaten (ehemalige Sowjetstaaten wie Russland).
Die Anzeige beschreibt die folgenden Funktionen für den Server und das Kontrollpanel:
- Das Kontrollpanel wird damit beworben, dass es auch in .NET Core geschrieben ist, und weist auf die einfache Installation auf Ubuntu / Debian Linux Server Systemen hin.
- Der Server bietet eine breite Palette von Statistiken, einschließlich Zählern für online, lebende, tote und gesamte Bots; ein Echtzeit-Update für die Liste der Bots; ein Dateidownload-Zähler; und eine Möglichkeit, Systeme nach Art des Betriebssystems, Zugriffsrechten der installierten Bots und Anzahl der logischen CPU-Kerne zu filtern.
- Die von den infizierten Systemen heruntergeladenen Dateien werden in verschlüsselter Form auf dem Server gespeichert, wobei der Zugriff durch ein Token gewährt wird.
- Außerdem weist der Autor darauf hin, dass der Server – wie die Bots selbst – keine API-Anfragen verarbeitet, die aus GUS-Mitgliedsländern gesendet werden.
Der Forenbeitrag enthielt auch technische Versionshinweise für den Buer-Loader und das Kontrollpanel (Version 1.1.2). In der Einleitung wies der Autor darauf hin, dass der Start des Loaders nun aus drei Schritten besteht – wenn die ersten beiden Schritte auf dem infizierten System nicht erfolgreich sind und die Injektion in den Surrogatprozess fehlschlägt (z.B. aufgrund von Inkompatibilität mit der Krypto selbst), wird der Loader stattdessen unter seinem eigenen Prozess ausgeführt.
In den Versionshinweisen wird für den Lader Folgendes genannt:
- Der Lader verwendet eine FastFlux-Architektur.
- Der Lader arbeitet unter einem vertrauenswürdigen Prozess in Microsoft Windows. Der MemLoadEx-Prozess unterstützt jetzt x64-Exe als vertrauenswürdige Anwendung.
- MemLoad wurde aktualisiert und unterstützt jetzt native x32-Exe.
In den Versionshinweisen werden die folgenden Funktionen für das Control Panel genannt:
- Der API-Zugriff erfolgt über HTTPS mit Unterstützung für selbstsignierte Zertifikate.
- Unterstützung für die Bearbeitung von Aufgaben im Panel. Der Benutzer kann die Aufgabe während der Ausführung stoppen und die Nutzlast und die Anzahl der Ausführungen ändern.
- Die Möglichkeit, eine Aufgabe nach Bot-ID zu erstellen, wurde hinzugefügt. Sehr geeignet für Punktlasten.
- Ein Schritt-für-Schritt-Fenster für die Erstellung von Aufgaben.
- Eine Benachrichtigung, die es ermöglicht, sich über die benötigten Bots online zu informieren.
- Die Eindeutigkeit der Bot-ID wurde erhöht.
- Tags wurden dem Panel hinzugefügt, die es ermöglichen, Bots für spätere Aktionen mit ihnen zu sortieren.
- Der Computername wird in der Tabelle angezeigt.
- Verbesserte Krypto-Kompatibilität.
- Hinzugefügt wurde eine Bot-Historie.
- „Das Panel erweitert sich jetzt auf Docker“ (Unterstützung von Docker-Containern).
- Anmerkung eines Proofpoint-Forschers: Wir vermuten, dass diese Funktion der einfachen Integration in geleaste Docker-Hosts dient und die Installation vereinfacht, obwohl das Panel/C&C möglicherweise auf einem kompromittierten Docker-Host installiert werden könnte.
- Validierung der Datei auf dem Panel. Jetzt wird das Panel die Datei, die der Lader nicht herunterladen kann, nicht mehr übersehen und den Client darüber benachrichtigen.
- Aufgaben können jetzt wiederholt werden.
Abschließend beschrieb der Autor die folgenden technischen Änderungen für Version 1.1.9. Diese sind bemerkenswert, da sie zeigen, dass die Malware aktiv und professionell weiterentwickelt wird.
- Der Loader hat eine neue Methode zum Starten von Extern für lokale Dateien erhalten. Die Vorteile der Methode sind Einzigartigkeit und kein CreateProcess / ShellExecute durch den Lader. Der Start erzeugt einen vertrauenswürdigen Prozess ohne irgendwelche Befehle an ihn.
- Das Panel hat die Möglichkeit, alle Bots zu markieren, die eine bestimmte Aufgabe ausgeführt haben. Dies ermöglicht es dem Benutzer, die Nutzlast an bestimmte Gruppen von Bots zu verteilen.
- Implementierte Integrations-API. Verfügbare Dokumentation dafür.
- Die Möglichkeit, eine Datei per Referenz im Proxy-Modus zu senden, wurde hinzugefügt. Die Datei wird in verschlüsselter Form an den Bot übertragen.
- Der Fehler bei der Zählung von Bots nach Land wurde behoben und andere Verbesserungen wurden hinzugefügt.
Screenshots des Kontrollpanels
Die folgenden Screenshots des Kontrollpanels wurden in die unterirdische Werbung aufgenommen und zeigen einige der Backend-Funktionen, die Kunden zur Verfügung stehen, einschließlich Telemetrieüberwachung, Hostfilterung und mehr.
Abbildung 6: Bedienfeld-Anmelde-UX für den Buer Loader C&C
Abbildung 7: Bot-Telemetrie-Überwachungsbildschirm für das Buer Bedienfeld.
Abbildung 8: Bot-Telemetrie-Überwachungsbildschirm im dunklen Modus für das Buer-Kontrollzentrum.
Abbildung 9: Kontrollzentrum-Filteransicht, die nach Microsoft Windows-Architektur gefilterte Remote-Bots zeigt.
Abbildung 10: Ansicht des Bedienfelds mit Dateiverwaltung für Loader-Aufgaben
Abbildung 11: Ansicht des Bedienfelds mit entfernten Bots, sortiert nach Benutzerrechten.
Abbildung 12: Ansicht des Kontrollpanels, Aufgabenstatus
Abbildung 13: Ansicht des Kontrollpanels, Erstellung einer Aufgabe
Malware-Analyse
Buer Loader ist eine neue Downloader-Malware, die zusätzliche Nutzlasten herunterlädt und ausführt.
Anti-Analyse-Funktionen
Der Loader enthält einige grundlegende Anti-Analyse-Funktionen:
- Überprüfung auf Debugger durch Inspektion des NtGlobalFlags im Process Environment Block (PEB) und Thread Environment Block (TEB)
- Überprüfung auf virtuelle Maschinen unter Verwendung der Red Pill , No Pill und verwandter Mechanismen
- Überprüfung der Locale, um sicherzustellen, dass die Malware nicht in bestimmten Ländern ausgeführt wird (Abbildung 14)
Abbildung 14: Malware-Prüfung, um sicherzustellen, dass sie nicht in bestimmten Ländern ausgeführt wird
Persistenz
Die Persistenz wird durch die Konfiguration eines Registrierungseintrags „RunOnce“ eingerichtet. Je nach Version führt der Registry-Eintrag die Malware direkt aus oder plant eine Aufgabe zur Ausführung.
Verschlüsselte Zeichenketten
Dieses Beispiel enthält eine Funktion zur Verschlüsselung von Zeichenketten.
Abbildung 15: Entschlüsselungssequenz für Strings
Die folgende Funktion ist ein Beispiel dafür, wie man die verschlüsselten Strings in Ghidra mit Jython entschlüsselt:
Abbildung 16: Entschlüsselungssequenz für Strings (Python-Version)
Abbildung 17: Beispiel für die Entschlüsselung von Strings
Windows-API-Aufrufe
Dieses Beispiel verwendet einen Hashing-Algorithmus, um die meisten seiner Windows-API-Aufrufe aufzulösen. Der Hash-Algorithmus stellt sicher, dass jedes Zeichen des API-Namens ein Großbuchstabe ist. Dann wird jedes Zeichen um 13 nach rechts gedreht (ROR) und addiert.
Abbildung 18: Hashing-Algorithmus zur Auflösung von Windows-API-Aufrufen
Die folgende Funktion ist ein Beispiel dafür, wie Python zur Auflösung von API-Aufrufen verwendet werden kann.
Abbildung 19: Beispiel für ein Python-Skript, das zur Unterstützung bei der Auflösung von gehashten Windows-API-Aufrufen verwendet wird
Die folgende Tabelle enthält eine Liste einiger ausgewählter verwendeter Hashes und der entsprechenden Windows-API-Namen:
CreateMutexW |
0xed619452 |
OpenMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tabelle 1: Windows-API-Aufrufe mit ausgewählten Hashes
Befehl und Steuerung
Befehls- und Steuerungsfunktionen (C&C) werden über HTTP(S)-GET-Anfragen abgewickelt. Ein Beispiel-Befehls-Bake sieht wie in Abbildung 20 aus:
Abbildung 20: Beispiel-Befehls-Bake
Diese Anfragen gehen an die „Update API“ und enthalten einen verschlüsselten Parameter. Dieser Parameter kann entschlüsselt werden durch:
- Base64-Entschlüsselung
- Hex-Entschlüsselung
- RC4-Entschlüsselung (der in den analysierten Beispielen verwendete Schlüssel war „CRYPTO_KEY“)
Ein Beispiel für den Klartextparameter ist
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Es enthält Pipe-begrenzte Daten, bestehend aus:
- Bot-ID (SHA-256-Hex-Hash verschiedener Systemparameter wie Hardwareprofil-GUID und -Name, Computername, Volume-Seriennummer, und CPUID)
- Ein SHA-256-Hash des eigenen ausführbaren Abbilds
- Windows-Version
- Architektur-Typ
- Anzahl der Prozessoren
- Benutzerrechte
- Computername
Eine Beispiel-Befehlsbeacon-Antwort ist in Abbildung 21 dargestellt:
Abbildung 21: Beispiel für eine Befehls-Baken-Antwort
Sie kann ähnlich wie der obige Anforderungsparameter entschlüsselt werden, mit der Ausnahme, dass die hexcodierten Bytes durch Bindestriche getrennt sind. Ein Beispiel für eine Klartext-Antwort ist in Abbildung 22 dargestellt:
Abbildung 22: Klartext-Befehls-Baken-Antwort
Der entschlüsselte Text ist ein JSON-Objekt, das verschiedene Optionen für das Herunterladen und Ausführen einer Nutzlast enthält:
- type – es gibt zwei Typen:
- update – update self
- download_and_exec – download and execute
- options – gibt Optionen für die herunterzuladende Nutzlast an:
- Hash – gilt nur für den Typ „update“, um festzustellen, ob ein neues Update verfügbar ist
- x64 – gibt an, ob die Nutzlast 64-bit ist
- FileType – wird in den analysierten Samples nicht verwendet
- AssemblyType – wird in den analysierten Samples nicht verwendet
- AssemblyType – wird in den analysierten Samples nicht verwendet
- AssemblyType – wird in den analysierten Samples nicht verwendet. wird in den analysierten Beispielen nicht verwendet
- AccessToken – wird zum Herunterladen der Nutzlast verwendet (siehe unten)
- External – gibt an, ob die Nutzlast von der C&C oder einer externen URL heruntergeladen wird
- method – Methode der Ausführung:
- exelocal – Prozess erstellen
- memload – Nutzlast injizieren und manuell laden
- memloadex – Nutzlast injizieren und manuell laden
- loaddllmem – Nutzlast injizieren und manuell laden
- parameters – Parameter, die in der Befehlszeile übergeben werden
- pathToDrop -. wird in den untersuchten Beispielen nicht verwendet
- autorun – gibt an, ob die Registry RunOnce Persistenz für die Nutzlast einrichten soll
- modules – siehe Abschnitt Module weiter unten
- timeout – wird in den untersuchten Beispielen nicht verwendet
Nutzlasten, die vom C&C Server heruntergeladen werden, werden über Anfragen an die „Download API“ durchgeführt, wie in Abbildung 23 zu sehen ist:
Abbildung 23: Herunterladen von Nutzdaten von C&C
Ein Beispiel für den Klartext-Anforderungsparameter ist unten dargestellt:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Er enthält die ID des Bots und den „AccessToken“ aus der Beacon-Antwort. Wenn die Nutzlast vom C&C heruntergeladen wird, wird sie mit RC4 verschlüsselt. In den analysierten Beispielen war der Schlüssel „CRYPTO_KEY“.
Module
Die Command Beacon-Antwort enthält eine „Module“-Liste. Proofpoint-Forscher haben noch nicht beobachtet, dass Buer-Module in freier Wildbahn verwendet werden, aber basierend auf dem Code wird diese Liste Module AccessTokens enthalten. Der Name der Moduldatei wird abgefragt, indem ein AccessToken an die „Modul-API“ des C&C gesendet wird. Das Modul wird dann über die „downloadmodule API“ heruntergeladen. Sobald es heruntergeladen und entschlüsselt ist, wird es mit der „loaddllmem“-Methode geladen.
Schlussfolgerung
Ein neuer Downloader, Buer, ist in letzter Zeit in einer Reihe von Kampagnen aufgetaucht, und zwar über Malvertising, das zu Exploit-Kits führt; als sekundäre Nutzlast über Ostap; und als primäre Nutzlast, die Malware wie den Banking-Trojaner The Trick herunterlädt.
Der neue Loader verfügt über robuste Geotargeting-, Systemprofilierungs- und Anti-Analyse-Funktionen und wird derzeit in Untergrundforen mit Mehrwert-Setup-Diensten vermarktet. Der russischsprachige Autor bzw. die Autoren entwickeln den Downloader aktiv mit ausgefeilten Control Panels und einem reichhaltigen Funktionsumfang weiter, was die Malware auf den Untergrundmärkten wettbewerbsfähig macht.
Der Downloader ist in C geschrieben, während das Control Panel in .NET Core verfasst ist, was auf eine Optimierung der Leistung und einen geringen Download-Footprint sowie auf die Möglichkeit hinweist, das Control Panel problemlos auf Linux-Servern zu installieren – die integrierte Unterstützung für Docker-Container wird die Verbreitung auf gemieteten Hosts, die für bösartige Zwecke genutzt werden, und möglicherweise auch auf kompromittierten Hosts weiter erleichtern. Die letztgenannte Fähigkeit ist in den angekündigten Funktionen und Versionshinweisen enthalten.
Got it, but I don't know what this is. Downloaded Word doc: https://t.co/Y8tX8wTsOa – Follow-up EXE persistent on the infected Windows host: https://t.co/sowNIRDPbI pic.twitter.com/4isqbsMAa9
— Brad (@malware_traffic) October 11, 2019
https://www.cert.pl/en/news/single/ostap-malware-analysis-backswap-dropper/
https://www.proofpoint.com/us/threat-insight/post/ostap-bender-400-ways-make-population-part-with-their-money
https://www.aldeid.com/wiki/X86-assembly/Instructions/sidt
https://www.aldeid.com/wiki/X86-assembly/Instructions/sldt
Indikatoren für Kompromittierung (IOCs)
IOC |
IOC Type |
Description |
fa699eab565f613df563ce47de5b82bde16d69c5d0c05ec9fc7f8d86ad7682ce |
sha256 |
|
http[://45.76.247[.177:8080/api/update/ |
URL |
Buer C&C callback |
6c694df8bde06ffebb8a259bebbae8d123effd58c9dd86564f7f70307443ccd0 |
sha256 |
|
197163b6eb2114f3b565391f43b44fb8d61531a23758e35b11ef0dc44d349e90 |
sha256 |
|
https[://173.212.204[.171/api/update/ |
URL |
Buer C&C callback |
9e8db7a722cc2fa13101a306343039e8783df66f4d1ba83ed6e1fe13eebaec73 |
sha256 |
(Fallout Drop) |
http[://134.0.119[.53:8080/api/update/ |
URL |
Buer C&C callback |
ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f |
sha256 |
(Ostap drop) |
https[://garrisontx[.us/api/update/ |
URL |
Buer C&C callback |
https[://185.130.104[.187/nana/kum.php?pi=18b |
URL |
Ostap-Instanz dropping Buer – 2019-10-.21 |
753276c5887ba5cb818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-.11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
Domain|IP |
Buer C&C 2019-11-.28 |
ET und ETPRO Suricata/Snort Signaturen
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029078 || ET TROJAN Buer Loader Download Request
2839684 || ET TROJAN Buer Loader Successful Payload Download
2029080 || SSL/TLS Certificate Observed (Buer Loader)