ESET hat mit der brasilianischen Bundespolizei zusammengearbeitet, um das Grandoreiro-Botnet zu stören. ESET trug zu dem Projekt bei, indem technische Analysen, statistische Informationen und bekannte Domainnamen und IP-Adressen von Command-and-Control-Servern (C&C) zur Verfügung gestellt wurden. Aufgrund eines Designfehlers im Netzwerkprotokoll von Grandoreiro konnten die ESET-Forscher auch einen Einblick in die Viktimologie erhalten.

Die automatisierten Systeme von ESET haben Zehntausende von Grandoreiro-Samples verarbeitet. Der Domain-Generierungs-Algorithmus (DGA), den die Malware seit etwa Oktober 2020 verwendet, erzeugt pro Tag eine Hauptdomain und optional mehrere Failsafe-Domains. Der DGA ist der einzige Weg, den Grandoreiro kennt, um sich bei einem C&C-Server zu melden. Neben dem aktuellen Datum akzeptiert der DGA auch statische Konfigurationen - wir haben bis jetzt 105 solcher Konfigurationen beobachtet.

Die Betreiber von Grandoreiro haben Cloud-Anbieter wie Azure und AWS für das Hosting ihrer Netzwerkinfrastruktur missbraucht. ESET-Forscher lieferten Daten, die für die Identifizierung der für die Einrichtung dieser Server verantwortlichen Konten entscheidend waren. Weitere Ermittlungen der brasilianischen Bundespolizei führten zur Identifizierung und Verhaftung der Personen, die die Kontrolle über diese Server hatten. In diesem Blogpost erfahren Sie, wie wir die Daten beschafft haben, um die Strafverfolgungsbehörden bei der Durchführung dieser Störungsaktion zu unterstützen.

Hintergrund

Grandoreiro ist einer von vielen lateinamerikanischen Banking-Trojanern. Er ist seit mindestens 2017 aktiv und wird von ESET-Forschern seither genau beobachtet. Grandoreiro zielt auf Brasilien und Mexiko und seit 2019 auch auf Spanien ab (siehe Abbildung 1). Während Spanien zwischen 2020 und 2022 das am häufigsten angegriffene Land war, haben wir im Jahr 2023 eine deutliche Verlagerung des Schwerpunkts auf Mexiko und Argentinien beobachtet, wobei letzteres für Grandoreiro neu ist.

Grandoreiro-Figure-01-Heatmap
Abbildung 1. Erkennungsrate von Grandoreiro (Daten seit Januar 2020)

Was die Funktionalität angeht, hat sich Grandoreiro seit unserem letzten Blogpost im Jahr 2020 nicht sehr verändert. In diesem Abschnitt geben wir einen kurzen Überblick über die Malware und gehen später auf die wenigen Änderungen ein, hauptsächlich die neue DGA-Logik.

Wenn einer der lateinamerikanischen Banking-Trojaner einen Computer erfolgreich kompromittiert, sendet er in der Regel eine HTTP-GET-Anfrage an einen Remote-Server und übermittelt einige grundlegende Informationen über den kompromittierten Computer. Während ältere Grandoreiro-Builds diese Funktion implementierten, beschlossen die Entwickler im Laufe der Zeit, sie wegzulassen.

Grandoreiro überwacht regelmäßig das Fenster im Vordergrund, um ein Fenster zu finden, das zu einem Webbrowser-Prozess gehört. Wenn ein solches Fenster gefunden wird und sein Name mit einer beliebigen Zeichenfolge aus einer hartcodierten Liste bankbezogener Zeichenfolgen übereinstimmt, dann und nur dann nimmt die Malware die Kommunikation mit ihrem C&C-Server auf und sendet bis zur Beendigung mindestens einmal pro Sekunde Anfragen.

Der Anwender muss manuell mit dem kompromittierten Rechner interagieren, um das Geld des Opfers zu stehlen. Die Malware ermöglicht:

  • den Bildschirm des Opfers zu blockieren,
  • die Aufzeichnung von Tastenanschlägen,
  • Maus- und Tastaturaktivitäten zu simulieren,
  • die Freigabe des Bildschirms des Opfers und
  • gefälschte Pop-up-Fenster anzuzeigen.

Grandoreiro wird schnell und ständig weiterentwickelt. Gelegentlich sahen wir sogar mehrere neue Builds pro Woche, was es schwierig macht, den Überblick zu behalten. Wohl auch für den eigenen Überblick fügten die Betreiber von Grandoreiro im Februar 2022 eine Versionskennung zu den Binärdateien hinzu. In Abbildung 2 ist dargestellt, wie schnell sich die Versionskennung änderte. Im Durchschnitt gab es zwischen Februar 2022 und Juni 2022 alle vier Tage eine neue Version. In der einmonatigen Lücke zwischen dem 24. Mai 2022 und dem 22. Juni 2022 sahen wir weiterhin neue Samples mit fortschreitender PE-Kompilierungszeit, denen jedoch die Versionskennung fehlte. Am 27. Juni 2022 änderte sich die Versionskennung in V37 und wurde seitdem nicht mehr geändert, was darauf schließen lässt, dass diese Funktion eingestellt wurde.

Grandoreiro-Figure-02-Timeline
Abbildung 2. Versionsverlauf von Grandoreiro zwischen Februar und Juni 2022

Lateinamerikanische Banking-Trojaner weisen viele Gemeinsamkeiten auf. Grandoreiro ähnelt anderen lateinamerikanischen Banking-Trojanern vor allem durch die offensichtliche Kernfunktionalität und durch die Bündelung seiner Downloader in MSI-Installationsprogrammen. In der Vergangenheit haben wir einige Fälle beobachtet, in denen seine Downloader gemeinsam mit Mekotio und Vadokrist eingesetzt wurden, allerdings nicht in den letzten zwei Jahren. Der Grandoreiro-Bankentrojaner unterscheidet sich von den anderen Familien vor allem durch seinen einzigartigen Mechanismus zum Auffüllen von Binärdateien, der die endgültige ausführbare Datei massiv aufbläht (beschrieben in unserem Blogpost im Jahr 2020). Im Laufe der Zeit haben die Betreiber von Grandoreiro diese Anti-Analyse-Technik auch in ihre Downloader eingebaut. Zu unserer Überraschung wurde diese Funktion im dritten Quartal 2023 vollständig aus den Binärdateien des Banking-Trojaners und des Downloaders entfernt, und wir haben sie seitdem nicht mehr beobachtet.

Seit Februar 2022 haben wir eine zweite Variante von Grandoreiro beobachtet, die sich deutlich von der Hauptvariante unterscheidet. Wir sahen sie in kleinen Kampagnen im März, Mai und Juni 2022. Da die überwiegende Mehrheit der C&C-Server-Domänen nicht aufgelöst werden kann, sich die Kernfunktionen häufig ändern und das Netzwerkprotokoll nicht ordnungsgemäß funktioniert, sind wir der festen Überzeugung, dass es sich um eine in Arbeit befindliche Variante handelt. Daher werden wir uns in diesem Blogpost auf die Hauptvariante konzentrieren.

Grandoreiro Langzeitverfolgung

ESET-Systeme, die für die automatisierte, langfristige Verfolgung ausgewählter Malware-Familien entwickelt wurden, überwachen Grandoreiro seit Ende 2017 und extrahieren Versionsinformationen, C&C-Server, Ziele und seit Ende 2020 auch DGA-Konfigurationen.

DGA-Tracking

Die DGA-Konfiguration ist in der Grandoreiro-Binärdatei fest codiert. Jede Konfiguration kann durch eine Zeichenkette referenziert werden, die wir dga_id nennen. Die Verwendung unterschiedlicher Konfigurationen für die DGA führt zu unterschiedlichen Domänen. Auf den DGA-Mechanismus gehen wir später im Text näher ein.

ESET hat insgesamt 105 verschiedene dga_id aus den uns bekannten Grandoreiro-Samples extrahiert. 79 dieser Konfigurationen generierten mindestens einmal eine Domain, die im Laufe unserer Verfolgung zu einer aktiven C&C-Server-IP-Adresse aufgelöst wurde.

Die generierten Domains werden über den dynamischen DNS-Dienst (DDNS) von No-IP registriert. Die Betreiber von Grandoreiro missbrauchen diesen Dienst, um ihre Domains häufig zu ändern, damit sie mit der DGA übereinstimmen, und um IP-Adressen nach Belieben zu ändern. Die überwiegende Mehrheit der IP-Adressen, zu denen diese Domänen aufgelöst werden, wird von Cloud-Anbietern bereitgestellt, hauptsächlich AWS und Azure. Tabelle 1 zeigt einige Statistiken über IP-Adressen, die für Grandoreiro C&C-Server verwendet werden.

Tabelle 1. Statistische Informationen über Grandoreiro C&C-IP-Adressen seit Beginn unserer Beobachtung

Information Average Minimum Maximum
Number of new C&C IP addresses per day 3 1 34
Number of active C&C IP addresses per day 13 1 27
Lifespan of C&C IP address (in days) 5 1 425

Schon bald nachdem wir mit der Verfolgung der generierten Domains und der zugehörigen IP-Adressen begonnen hatten, stellten wir fest, dass viele Domains, die von DGAs mit unterschiedlichen Konfigurationen generiert wurden, auf dieselbe IP-Adresse verweisen (wie in Abbildung 3 dargestellt). Das bedeutet, dass an einem bestimmten Tag Opfer, die durch Grandoreiro-Samples mit unterschiedlichen dga_id kompromittiert wurden, alle mit demselben C&C-Server verbunden waren. Dieses Phänomen war kein Zufall - wir haben es während unserer Beobachtung fast täglich beobachtet.

Grandoreiro-Figure-03-Overlap
Abbildung 3. Schema einer IP-Überschneidung in zwei verschiedenen Grandoreiro-DGA-Konfigurationen

In sehr viel selteneren Fällen haben wir auch beobachtet, dass eine IP-Adresse einige Tage später von einer anderen dga_id wiederverwendet wurde. Nur dass sich in diesem Fall auch die von Grandoreiro für den Verbindungsaufbau verwendeten Parameter (die später im Text erläutert werden) geändert haben. Das bedeutet, dass die C&C-Server-Seite in der Zwischenzeit neu installiert oder neu konfiguriert worden sein muss.

Unsere ursprüngliche Annahme war, dass die dga_id für jede DGA-Konfiguration eindeutig ist. Dies erwies sich später als falsch - wir haben zwei verschiedene Konfigurationen beobachtet, die die gleiche dga_id verwenden. Tabelle 2 zeigt diese beiden, "jjk" und "gh", wobei "jjk" und "jjk(2)" zwei verschiedenen DGA-Konfigurationen entsprechen, ebenso wie "gh" und "gh(2)".

Tabelle 2 zeigt die Cluster, die wir beobachten konnten. Alle DGA-Konfigurationen, die mindestens eine IP-Adresse gemeinsam haben, befinden sich im selben Cluster und ihre zugehörigen dga_id sind aufgeführt. Cluster, die weniger als 1 % aller Opfer ausmachen, bleiben unberücksichtigt.

Tabelle 2. Grandoreiro DGA-Cluster

Cluster ID

dga_id list

Cluster size

% of all C&C servers

% of all victims

1

b, bbh, bbj, bbn, bhg, cfb, cm, cob, cwe, dee, dnv, dvg, dzr, E, eeo, eri, ess, fhg, fox, gh, gh(2), hjo, ika, jam, jjk, jjk(2), JKM, jpy, k, kcy, kWn, md7, md9, MRx, mtb, n, Nkk, nsw, nuu, occ, p, PCV, pif, rfg, rox3, s, sdd, sdg, sop, tkk, twr, tyj, u, ur4, vfg, vgy, vki, wtt, ykl, Z, zaf, zhf

62

93.6%

94%

2

jl2, jly

2

2.4%

2.5%

3

ibr

1

0.8%

1.6%

4

JYY

1

1.6%

1.1%

Der größte Cluster enthält 78 % aller aktiven dga_id. Er ist verantwortlich für 93,6 % aller IP-Adressen der C&C-Server und 94 % aller Opfer, die wir gesehen haben. Der einzige andere Cluster, der aus mehr als 1 dga_id besteht, ist Cluster 2.

Einige Quellen behaupten, dass Grandoreiro als Malware-as-a-Service (MaaS) betrieben wird. Das C&C-Server-Backend von Grandoreiro erlaubt keine gleichzeitige Aktivität von mehr als einem Operator auf einmal. Aus Tabelle 2 geht hervor, dass die überwiegende Mehrheit der von DGA produzierten IP-Adressen ohne klares Verteilungsmuster in Clustern zusammengefasst werden kann. In Anbetracht der hohen Bandbreitenanforderungen des Netzwerkprotokolls (wir gehen am Ende des Blogposts näher darauf ein) gehen wir davon aus, dass die verschiedenen C&C-Server als primitives Lastausgleichssystem verwendet werden und dass es wahrscheinlicher ist, dass Grandoreiro von einer einzigen Gruppe oder von einigen wenigen Gruppen, die eng miteinander kooperieren, betrieben wird.

C&C-Verfolgung

Die Implementierung des Netzwerkprotokolls von Grandoreiro ermöglichte es den ESET-Forschern, einen Blick hinter den Vorhang zu werfen und einen Einblick in die Viktimologie zu erhalten. Die C&C-Server von Grandoreiro geben Informationen über die verbundenen Opfer zum Zeitpunkt der ersten Anfrage an jedes neu verbundene Opfer weiter. Die Daten werden jedoch durch die Anzahl der Anfragen, ihre Intervalle und die Gültigkeit der von den C&C-Servern bereitgestellten Daten verzerrt.

Jedes Opfer, das mit dem C&C-Server von Grandoreiro verbunden ist, wird durch einen login_string identifiziert - eine Zeichenfolge, die Grandoreiro beim Aufbau der Verbindung erstellt. Verschiedene Builds verwenden verschiedene Formate und verschiedene Formate enthalten verschiedene Informationen. Wir fassen die Informationen, die aus dem login_string gewonnen werden können, in Tabelle 3 zusammen. Die Spalte Occurrence zeigt einen Prozentsatz aller Formate, die wir gesehen haben und die die entsprechende Information enthalten.

Tabelle 3. Übersicht der Informationen, die aus dem login_string eines Grandoreiro-Opfers gewonnen werden können

Information

Occurrence

Description

Operating system

100%

OS of victim’s machine.

Computer name

100%

Name of victim’s machine.

Country

100%

Country that the Grandoreiro sample targets (hardcoded in the malware sample).

Version

100%

Version (version_string) of the Grandoreiro sample.

Bank codename

92%

Codename of the bank that triggered the C&C connection (assigned by Grandoreiro’s developers).

Uptime

25%

Time (in hours) that the victim’s machine has been running.

Screen resolution

8%

Screen resolution of the victim’s main monitor.

Username

8%

Username of the victim.

Drei der Felder verdienen eine nähere Erläuterung. Country ist eine im Grandoreiro-Binärprogramm fest einkodierte Zeichenfolge und keine Information, die über entsprechende Dienste eingeholt wurde. Daher dient es eher als beabsichtigtes Land des Opfers.

Bank Codename ist eine Zeichenfolge, die die Entwickler von Grandoreiro mit einer bestimmten Bank oder einem anderen Finanzinstitut in Verbindung bringen. Das Opfer besuchte die Website dieser Bank, wodurch die C&C-Verbindung ausgelöst wurde.

Die Zeichenfolge version_string ist eine Zeichenfolge, die ein bestimmtes Grandoreiro-Build identifiziert. Sie ist in der Malware fest codiert und enthält eine Zeichenkette, die eine bestimmte Build-Serie, eine Version (über die wir bereits in der Einleitung gesprochen haben) und einen Zeitstempel identifiziert. Tabelle 4 veranschaulicht die verschiedenen Formate und die darin enthaltenen Informationen. Beachten Sie, dass einige der Zeitstempel nur Monat und Tag enthalten, während andere auch das Jahr enthalten.

Tabelle 4. Liste der verschiedenen version_string-Formate und deren Analyse

Version string

Build ID

Version

Timestamp

DANILO

DANILO

N/A

N/A

(V37)(P1X)1207

P1X

V37

12/07

(MX)2006

MX

N/A

20/06

fox50.28102020

fox50

N/A

28/10/2020

MADMX(RELOAD)EMAIL2607

MADMX(RELOAD)EMAIL

N/A

26/07

Man könnte versucht sein zu sagen, dass die Build-ID eigentlich den Operator identifiziert. Wir glauben jedoch nicht, dass dies der Fall ist. Das Format dieser Zeichenfolge ist sehr chaotisch, manchmal bezieht sie sich nur auf den Monat, in dem das Binärprogramm wahrscheinlich erstellt wurde (wie(AGOSTO)2708). Außerdem sind wir der festen Überzeugung, dass sich P1X auf eine von Grandoreiro-Operatoren verwendete Konsole namens PIXLOGGER bezieht.

C&C-Server-Verfolgung - Ergebnisse

In diesem Abschnitt konzentrieren wir uns auf die Ergebnisse, die wir durch die Abfrage der C&C-Server erhalten haben. Alle in diesem Abschnitt aufgeführten statistischen Daten stammen direkt von den Grandoreiro C&C-Servern, nicht von der ESET-Telemetrie.

Alte Samples sind noch aktiv

Jeder von uns beobachtete login_string enthält den version_string und die überwiegende Mehrheit davon die Zeitstempelinformation (siehe Tabelle 3 und Tabelle 4). Während viele von ihnen nur Tag und Monat enthalten, wie es gelegentlich die Entscheidung des Entwicklers zu sein scheint, war das älteste kommunizierende Sample mit dem Zeitstempel 15/09/2020 versehen - also aus der Zeit, als diese DGA erstmals in Grandoreiro eingeführt wurde. Das jüngste Sample trägt den Zeitstempel 12/23/2023.

Verteilung der Betriebssysteme

Da alle login_string-Formate Informationen zum Betriebssystem enthalten, können wir uns ein genaues Bild davon machen, welche Betriebssysteme zum Opfer fielen, wie in Abbildung 4 dargestellt.

Grandoreiro-Figure-04-OperatingSystems
Abbildung 4. Verteilung der Betriebssysteme unter den Grandoreiro-Opfern

(Beabsichtigte) Länderverteilung

Wir haben bereits erwähnt, dass Grandoreiro einen fest kodierten Wert verwendet, anstatt einen Dienst abzufragen, um das Land des Opfers zu ermitteln. Abbildung 5 zeigt die Verteilung, die wir beobachtet haben.

Grandoreiro-Figure-05-Countries
Abbildung 5: Verteilung der (beabsichtigten) Ländercodes unter den Grandoreiro-Opfern

Diese Verteilung ist bei Grandoreiro zu erwarten. Interessanterweise korreliert sie nicht mit der in Abbildung 1 dargestellten Heatmap. Die logischste Erklärung ist, dass die Builds nicht richtig markiert sind, um den beabsichtigten Zielen zu entsprechen. Die Zunahme der Angriffe in Argentinien beispielsweise wird durch die hartcodierte Markierung überhaupt nicht widergespiegelt. Auf Brasilien entfallen fast 41 % aller Opfer, gefolgt von Mexiko mit 30 % und Spanien mit 28 %. Auf Argentinien, Portugal und Peru entfällt weniger als 1 %. Interessanterweise haben wir einige wenige (weniger als 10) Opfer gesehen, die als PM (Saint Pierre und Miquelon), GR (Griechenland) oder FR (Frankreich) gekennzeichnet waren. Wir gehen davon aus, dass es sich dabei entweder um Tippfehler handelt oder dass sie eine andere Bedeutung haben und nicht auf diese Länder abzielen.

Beachten Sie auch, dass Grandoreiro zwar bereits 2020 Zielpersonen aus vielen Ländern außerhalb Lateinamerikas hinzugefügt hat, wir aber nur wenige bis gar keine Kampagnen beobachtet haben, die auf diese Länder abzielten, was durch Abbildung 5 bestätigt wird.

Anzahl der Opfer

Wir haben festgestellt, dass die durchschnittliche Zahl der an einem Tag angeschlossenen Opfer 563 beträgt. Diese Zahl enthält jedoch mit Sicherheit Duplikate, denn wenn ein Opfer lange Zeit verbunden bleibt, was nach unseren Beobachtungen häufig der Fall ist, wird es vom Grandoreiro C&C-Server bei mehreren Anfragen mehrfach gemeldet.

Um dieses Problem zu lösen, definierten wir ein eindeutiges Opfer als eines mit eindeutigen Identifikationsmerkmalen (z. B. Computername, Benutzername usw.) und ließen diejenigen weg, die sich ändern können (z. B. Betriebszeit). Auf diese Weise kamen wir auf 551 eindeutige Opfer, die im Durchschnitt an einem Tag verbunden waren.

Unter Berücksichtigung der Tatsache, dass wir Opfer beobachtet haben, die sich über ein Jahr lang ständig mit den C&C-Servern verbunden haben, errechneten wir eine durchschnittliche Anzahl von 114 neuen Opfern, die sich jeden Tag mit den C&C-Servern verbinden. Wir kamen zu dieser Zahl, indem wir die bereits zuvor beobachteten Opfer nicht berücksichtigten.

Grandoreiro Interna

Wir wollen uns nun eingehend mit den beiden wichtigsten Merkmalen von Grandoreiro befassen: der DGA und dem Netzwerkprotokoll.

DGA

Die Betreiber von Grandoreiro haben im Laufe der Jahre mehrere Arten von DGAs implementiert, wobei die letzte im Juli 2020 erschien. Wir haben zwar ein paar kleinere Änderungen festgestellt, aber der Kern des Algorithmus hat sich seitdem nicht verändert.

Der DGA verwendet eine bestimmte Konfiguration, die in der Binärdatei in Form mehrerer Strings gespeichert ist. Abbildung 6 zeigt eine solche Konfiguration (mit der dga_id "bbj"), die zur besseren Lesbarkeit in JSON umformatiert wurde.

Grandoreiro-Figure-06-DgaConfig
Abbildung 6. Grandoreiro DGA-Konfiguration, neu formatiert in JSON

In der überwiegenden Mehrheit der Fälle lautet das Feld base_domain freedynamicdns.org oder zapto.org. Wie bereits erwähnt, verwendet Grandoreiro No-IP für seine Domainregistrierung. Das base64_alpha-Feld entspricht dem benutzerdefinierten base64-Alphabet, das die DGA verwendet. Das Feld month_substitution wird verwendet, um ein Zeichen durch eine Monatszahl zu ersetzen.

Die dga_table bildet den Hauptteil der Konfiguration. Sie besteht aus 12 Strings mit jeweils 35 Feldern, die durch | getrennt sind. Der erste Eintrag in jeder Zeile ist die dga_id. Der zweite und letzte Eintrag steht für den Monat, für den die Zeile bestimmt ist. Die restlichen 32 Felder stellen jeweils einen Wert für einen anderen Tag des Monats dar (wobei mindestens ein Feld ungenutzt bleibt).

Die Logik des DGA ist in Abbildung 7 dargestellt. Der Algorithmus wählt zunächst die richtige Zeile und den richtigen Eintrag aus und behandelt sie als Vier-Byte-Schlüssel. Dann formatiert er das aktuelle Datum in eine Zeichenkette und verschlüsselt sie mit dem Schlüssel durch eine einfache XOR-Verknüpfung. Dann wird dem Ergebnis die dga_id vorangestellt, das Ergebnis mit base64 und einem benutzerdefinierten Alphabet kodiert und anschließend alle =-Paddingzeichen entfernt. Das Endergebnis ist die Subdomain, die zusammen mit base_domain als C&C-Server für den aktuellen Tag verwendet werden soll. Der rot hervorgehobene Teil ist ein ausfallsicherer Mechanismus, auf den wir im Folgenden eingehen.

Grandoreiro-Figure-07-DgaAlgo
Abbildung 7. Grandoreiro DGA-Berechnung, neu implementiert in Python

Grandoreiro hat in einigen Builds einen ausfallsicheren Mechanismus für den Fall implementiert, dass die Hauptdomäne nicht aufgelöst werden kann. Dieser Mechanismus ist nicht in allen Builds vorhanden und seine Logik hat sich einige Male geändert, aber die Grundidee ist in Abbildung 7 dargestellt. Er verwendet eine Konfiguration, die in den von uns analysierten Beispielen konstant ist und durch den in Abbildung 8 dargestellten einfachen Code erzeugt werden kann. Jeder Eintrag besteht aus einem Schlüssel, einem Präfix und einem Basisbereich.

Der ausfallsichere Algorithmus nimmt einen Teil der Haupt-C&C-Subdomäne. Er durchläuft dann alle Konfigurationseinträge, verschlüsselt sie mit XOR und fügt ein Präfix vor, ähnlich wie der Hauptalgorithmus.

Grandoreiro-Figure-08-DgaConfigBackup
Abbildung 8. Ausfallsicherer DGA-Konfigurationsgenerator, neu implementiert in Python

Seit September 2022 haben wir begonnen, Samples zu beobachten, die einen leicht veränderten DGA verwenden. Der Algorithmus bleibt fast identisch, aber anstatt die Subdomain im letzten Schritt mit base64 zu kodieren, wird ihr ein fest kodiertes Präfix vorangestellt. Nach unserer Beobachtung ist diese Methode seit etwa Juli 2023 die vorherrschende Methode.

Netzwerk-Protokoll

Grandoreiro verwendet RTC Portal, eine Reihe von Delphi-Komponenten, die auf dem RealThinClient SDK basieren, das auf HTTP(S) aufbaut. Das RTC Portal wurde 2017 eingestellt und sein Quellcode auf GitHub veröffentlicht. Im Wesentlichen ermöglicht das RTC Portal einem oder mehreren Controls den Fernzugriff auf einen oder mehrere Hosts. Hosts und Controls sind durch eine Vermittlungskomponente namens Gateway getrennt.

Die Betreiber von Grandoreiro verwenden eine Konsole (die als Kontrolle fungiert), um sich mit dem C&C-Server (der als Gateway fungiert) zu verbinden und mit den kompromittierten Rechnern (die als Hosts fungieren) zu kommunizieren. Um sich mit dem Gateway zu verbinden, sind drei Parameter erforderlich: ein geheimer Schlüssel, die Schlüssellänge und ein Login.

Der geheime Schlüssel wird zur Verschlüsselung der ersten an den Server gesendeten Anfrage verwendet. Daher muss auch der Server den geheimen Schlüssel kennen, um die erste Client-Anfrage entschlüsseln zu können.

Die Schlüssellänge bestimmt die Länge der Schlüssel zur Verschlüsselung des Datenverkehrs, die während des Handshakes festgelegt wird. Der Datenverkehr wird mit einer benutzerdefinierten Stream Chiffre verschlüsselt. Es werden zwei verschiedene Schlüssel erstellt - einer für den eingehenden und einer für den ausgehenden Verkehr.

Die Anmeldung kann eine beliebige Zeichenfolge sein. Das Gateway verlangt, dass jede angeschlossene Komponente ein eindeutiges Login hat.

Grandoreiro verwendet zwei verschiedene Kombinationen von geheimen Schlüsseln und Schlüssellängen, die immer in der Binärdatei fest einkodiert sind.

Die RTC-Dokumentation besagt, dass es nur eine begrenzte Anzahl von Verbindungen auf einmal verarbeiten kann. In Anbetracht der Tatsache, dass jeder verbundene Host mindestens eine Anfrage pro Sekunde senden muss, da sonst seine Verbindung unterbrochen wird, glauben wir, dass der Grund für die Verwendung mehrerer C&C-Server durch Grandoreiro darin liegt, dass er versucht, keinen von ihnen zu überlasten.

Fazit

In diesem Blogpost haben wir einen Blick hinter die Kulissen unserer Langzeitbeobachtung von Grandoreiro geworfen, die dazu beigetragen hat, diese Störungsaktion zu ermöglichen. Wir haben ausführlich beschrieben, wie die DGA von Grandoreiro funktioniert, wie viele verschiedene Konfigurationen gleichzeitig existieren und wie wir in der Lage waren, viele IP-Adressüberschneidungen zwischen ihnen zu erkennen.

Wir haben auch statistische Informationen von den C&C-Servern zur Verfügung gestellt. Diese Informationen bieten einen ausgezeichneten Überblick über die Viktimologie und die Zielgruppen und ermöglichen es uns, den tatsächlichen Umfang der Auswirkungen zu erkennen.

Die von der brasilianischen Bundespolizei geleitete Operation zielte auf Personen ab, von denen man annimmt, dass sie in der Hierarchie der Grandoreiro-Operation weit oben stehen. ESET wird auch weiterhin andere lateinamerikanische Banking-Trojaner verfolgen und nach dieser Unterbrechungsaktion genau auf weitere Grandoreiro-Aktivitäten achten.

Wenn Sie Fragen zu unseren auf WeLiveSecurity veröffentlichten Untersuchungen haben, kontaktieren Sie uns bitte unter threatintel@eset.com.
ESET Research bietet private APT Intelligence Reports und Datenfeeds an. Wenn Sie Fragen zu diesem Service haben, besuchen Sie die ESET Threat Intelligence Seite.

IoCs

Dateien

SHA-1

Filename

Detection

Description

FB32344292AB36080F2D040294F17D39F8B4F3A8

Notif.FEL.RHKVYIIPFVBCGQJPOQÃ.msi

Win32/Spy.Grandoreiro.DB

MSI downloader

08C7453BD36DE1B9E0D921D45AEF6D393659FDF5

RYCB79H7B-7DVH76Y3-67DVHC6T20-CH377DFHVO-6264704.msi

Win32/Spy.Grandoreiro.DB

MSI downloader

A99A72D323AB5911ADA7762FBC725665AE01FDF9

pcre.dll

Win32/Spy.Grandoreiro.BM

Grandoreiro

4CDF7883C8A0A83EB381E935CD95A288505AA8B8

iconv.dll

Win32/Spy.Grandoreiro.BM

Grandoreiro (with binary padding)

Netzwerk

IP

Domain

Hosting provider

First seen

Details

20.237.166[.]161

DGA‑generated

Azure

2024‑01‑12

C&C server.

20.120.249[.]43

DGA‑generated

Azure

2024‑01‑16

C&C server.

52.161.154[.]239

DGA‑generated

Azure

2024‑01‑18

C&C server.

167.114.138[.]249

DGA‑generated

OVH

2024‑01‑02

C&C server.

66.70.160[.]251

DGA‑generated

OVH

2024‑01‑05

C&C server.

167.114.4[.]175

DGA‑generated

OVH

2024‑01‑09

C&C server.

18.215.238[.]53

DGA‑generated

AWS

2024‑01‑03

C&C server.

54.219.169[.]167

DGA‑generated

AWS

2024‑01‑09

C&C server.

3.144.135[.]247

DGA‑generated

AWS

2024‑01‑12

C&C server.

77.246.96[.]204

DGA‑generated

VDSina

2024‑01‑11

C&C server.

185.228.72[.]38

DGA‑generated

Master da Web

2024‑01‑02

C&C server.

62.84.100[.]225

N/A

VDSina

2024‑01‑18

Distribution server.

20.151.89[.]252

N/A

Azure

2024‑01‑10

Distribution server.

MITRE ATT&CK-Techniken

Diese Tabelle wurde mit der Version 14 des MITRE ATT&CK Frameworks erstellt.

Tactic

ID

Name

Description

Resource Development

T1587.001

Develop Capabilities: Malware

Grandoreiro developers develop their own custom downloaders.

Initial Access

T1566

Phishing

Grandoreiro spreads through phishing emails.

Execution

T1204.002

User Execution: Malicious File

Grandoreiro pressures victims to manually execute the phishing attachment.

Persistence

T1547.001

Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder

Grandoreiro uses the standard Autostart locations for persistence.

T1574.001

Hijack Execution Flow: DLL Search Order Hijacking

Grandoreiro is executed by compromising the DLL search order.

Defense Evasion

T1140

Deobfuscate/Decode Files or Information

Grandoreiro is often distributed in password-protected ZIP archives.

T1027.001

Obfuscated Files or Information: Binary Padding

Grandoreiro EXEs used to have enlarged .rsrc sections with large BMP images.

T1218.007

System Binary Proxy Execution: Msiexec

Grandoreiro downloaders are bundled inside MSI installers.

T1112

Modify Registry

Grandoreiro stores part of its configuration data in the Windows registry.

Discovery

T1010

Application Window Discovery

Grandoreiro discovers online banking websites based on window names.

T1057

Process Discovery

Grandoreiro discovers security tools based on process names.

T1518.001

Software Discovery: Security Software Discovery

Grandoreiro detects the presence of banking protection products.

T1082

System Information Discovery

Grandoreiro collects information about the victim's machine, such as %COMPUTERNAME% and operating system.

Collection

T1056.002

Input Capture: GUI Input Capture

Grandoreiro can display fake pop-ups and capture text typed into them.

T1056.001

Input Capture: Keylogging

Grandoreiro is capable of capturing keystrokes.

T1114.001

Email Collection: Local Email Collection

Grandoreiro’s operators developed a tool to extract email addresses from Outlook.

Command and Control

T1132.002

Data Encoding: Non-Standard Encoding

Grandoreiro uses RTC, which encrypts data with a custom stream cipher.

T1568.002

Dynamic Resolution: Domain Generation Algorithms

Grandoreiro relies solely on DGA to obtain C&C server addresses.

T1573.001

Encrypted Channel: Symmetric Cryptography

In RTC, encryption and decryption are done using the same key.

T1571

Non-Standard Port

Grandoreiro often uses non-standard ports for distribution.

T1071

Application Layer Protocol

RTC is built on top of HTTP(S).

Exfiltration

T1041

Exfiltration Over C2 Channel

Grandoreiro exfiltrates data to its C&C server.

Impact

T1529

System Shutdown/Reboot

Grandoreiro can force a system reboot.