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.
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.
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.
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.
(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.
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.
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 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.
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 |
Develop Capabilities: Malware |
Grandoreiro developers develop their own custom downloaders. |
|
Initial Access |
Phishing |
Grandoreiro spreads through phishing emails. |
|
Execution |
User Execution: Malicious File |
Grandoreiro pressures victims to manually execute the phishing attachment. |
|
Persistence |
Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
Grandoreiro uses the standard Autostart locations for persistence. |
|
Hijack Execution Flow: DLL Search Order Hijacking |
Grandoreiro is executed by compromising the DLL search order. |
||
Defense Evasion |
Deobfuscate/Decode Files or Information |
Grandoreiro is often distributed in password-protected ZIP archives. |
|
Obfuscated Files or Information: Binary Padding |
Grandoreiro EXEs used to have enlarged .rsrc sections with large BMP images. |
||
System Binary Proxy Execution: Msiexec |
Grandoreiro downloaders are bundled inside MSI installers. |
||
Modify Registry |
Grandoreiro stores part of its configuration data in the Windows registry. |
||
Discovery |
Application Window Discovery |
Grandoreiro discovers online banking websites based on window names. |
|
Process Discovery |
Grandoreiro discovers security tools based on process names. |
||
Software Discovery: Security Software Discovery |
Grandoreiro detects the presence of banking protection products. |
||
System Information Discovery |
Grandoreiro collects information about the victim's machine, such as %COMPUTERNAME% and operating system. |
||
Collection |
Input Capture: GUI Input Capture |
Grandoreiro can display fake pop-ups and capture text typed into them. |
|
Input Capture: Keylogging |
Grandoreiro is capable of capturing keystrokes. |
||
Email Collection: Local Email Collection |
Grandoreiro’s operators developed a tool to extract email addresses from Outlook. |
||
Command and Control |
Data Encoding: Non-Standard Encoding |
Grandoreiro uses RTC, which encrypts data with a custom stream cipher. |
|
Dynamic Resolution: Domain Generation Algorithms |
Grandoreiro relies solely on DGA to obtain C&C server addresses. |
||
Encrypted Channel: Symmetric Cryptography |
In RTC, encryption and decryption are done using the same key. |
||
Non-Standard Port |
Grandoreiro often uses non-standard ports for distribution. |
||
Application Layer Protocol |
RTC is built on top of HTTP(S). |
||
Exfiltration |
Exfiltration Over C2 Channel |
Grandoreiro exfiltrates data to its C&C server. |
|
Impact |
System Shutdown/Reboot |
Grandoreiro can force a system reboot. |