TCLBANKER: Brasilianischer Banking-Trojaner verbreitet sich über WhatsApp und Outlook

REF3076 verwendet einen mit einem Trojaner infizierten Logitech-Installer, um TCLBANKER zu installieren, einen brasilianischen Banking-Trojaner mit umgebungsabhängigen Payloads, WPF-Betrugs-Overlays und sich selbst verbreitenden WhatsApp- und Outlook-Wurmmodulen.

Elastic Security Labs hat einen neuen brasilianischen Banking-Trojaner identifiziert, den wir unter der Bezeichnung TCLBANKER verfolgen. Wir gehen davon aus, dass es sich bei dieser Malware-Familie um ein größeres Update der MAVERICK/SORVEPOTEL -Familie handelt. Die als REF3076 geführte Kampagne beinhaltet einen Loader mit robusten Anti-Analyse-Funktionen, der zwei eingebettete, durch .NET Reactor geschützte Module einsetzt: einen vollwertigen Banking-Trojaner und ein Wurmmodul zur Selbstverbreitung.

Der Banking-Trojaner überwacht über UI Automation die Adressleiste des Browsers des Opfers und zielt dabei auf 59 brasilianische Banken-, Fintech- und Kryptowährungsdomains ab. Neben den üblichen Fernzugriffsbefehlen besteht seine bemerkenswerteste Fähigkeit in einem WPF-basierten Vollbild-Overlay-Framework, das für vom Bediener gesteuertes Social Engineering entwickelt wurde.

Ein zweites Modul kümmert sich um die Verbreitung über Spam-Agenten, von denen wir zwei Varianten entdeckt haben: einen WhatsApp-Wurm, der authentifizierte Browsersitzungen kapert, um die Kontakte des Opfers zu kontaktieren, und einen Outlook-E-Mail-Bot, der über COM-Automatisierung Phishing-E-Mails über die eigenen Konten des Opfers versendet.

In diesem Bericht liefern wir eine detaillierte technische Aufschlüsselung jeder einzelnen Phase.

Wichtigste Erkenntnisse

  • TCLBANKER verwendet umgebungsabhängige Payload-Entschlüsselung; in ungeeigneten Umgebungen, wie z. B. Sandboxes, schlägt die Entschlüsselung der Payload stillschweigend fehl.
  • Ein umfassendes Überwachungssystem überwacht kontinuierlich Analysetools, Debugger, Instrumentierungsframeworks und Integritätsverletzungen während der gesamten Ausführung.
  • Der Banking-Trojaner zielt auf 59 brasilianische Banken-, Fintech- und Kryptowährungsdomains ab und aktiviert eine WebSocket-C2-Sitzung, sobald ein Opfer eine überwachte Website aufruft.
  • Ein WPF-basiertes Vollbild-Overlay-Framework ermöglicht operatorgesteuertes Social Engineering, einschließlich des Abgreifens von Anmeldeinformationen, des Täuschens von Wartebildschirmen und des Vortäuschens von Windows-Update-Störungen, während gleichzeitig die Overlays vor Bildschirmaufnahmetools verborgen bleiben.
  • Wurmmodule verbreiten die Schadsoftware: ein WhatsApp-Bot und ein Outlook-E-Mail-Bot.
  • Die gesamte C2- und Verteilungsinfrastruktur wird auf Cloudflare Workers unter einem einzigen Konto gehostet, zusammen mit Entwicklerartefakten (Debug-Protokollierungspfade, Testprozessnamen) und einer unvollständigen Phishing-Seite, was darauf hindeutet, dass die Kampagne in einer frühen operativen Phase identifiziert wurde.

Lieferung

TCLBANKER ist ein brasilianischer Banking-Trojaner, der eine dynamische Infektionskette mit einer umfangreichen Anti-Analyse-Ladekomponente enthält, die zwei eingebettete Nutzlasten (Wurm, Banker) einsetzen kann. Die beobachtete Infektionskette bündelt ein bösartiges MSI-Installationsprogramm in einer ZIP-Datei. Diese MSI-Installationspakete missbrauchen ein signiertes Logitech-Programm namens Logi AI Prompt Builder.

TCLBANKER missbraucht DLL-Sideloading gegen LogiAiPromptBuilder.exe, eine legitime Logitech-Anwendung, die auf dem Flutter- Framework basiert. Die bösartige DLL screen_retriever_plugin.dll gibt sich als legitimes Flutter-Plugin mit demselben Namen aus und wird beim Start der Host-Anwendung automatisch geladen.

Nach der MSI-Installation wird die schädliche DLL sofort geladen und startet am Einstiegspunkt DllMain.

Lader

Die Loader-Komponente für TCLBANKER ist mit zahlreichen Funktionen ausgestattet, darunter Anti-Debugging-Funktionen, Anti-Analyse-Prüfungen, String-Verschlüsselung, System-Sprachprüfungen, ETW-Patching und eine Watchdog-Funktion. Es verfügt zwar über viele Funktionen, aber es mangelt ihm an Tiefe und es verweist auf ältere Malware-Analyse-Tools. Es ist nicht ganz klar, ob der Entwickler LLM-gestützte Arbeitsabläufe verwendet hat, aber unser Team wäre nicht überrascht, wenn dies der Fall wäre.

Zu Beginn der Ausführung richtet TCLBANKER die entsprechenden .NET-Assembly-Payloads danach aus, ob die Zeichenkette (--renderer=sw) in der Befehlszeile verwendet wird. Innerhalb seiner Hauptladefunktion führt es zunächst Zulassungs-/Sperrlistenoperationen durch, basierend darauf, wie die DLL geladen wurde. Die schädliche DLL wird nur ausgeführt, wenn der Hostprozess von einem der folgenden beiden Prozesse stammt:

  • logiaipromptbuilder.exe
  • tclloader.exe (Möglicher Verweis auf die Entwicklerzeichenfolge während des Testens)

Wenn die DLL von den folgenden Prozessen geladen wurde, wird die Ausführung verweigert. Diese Prozesse werden traditionell von Analysten zum Laden und Debuggen von DLLs verwendet.

  • rundll32.exe
  • regsvr32.exe
  • dllhost.exe
  • svchost.exe

Anschließend entfernt TCLBBANKER jegliches Hooking im Benutzermodus, indem ntdll.dll von der Festplatte ersetzt wird. Zur weiteren Verschleierung generiert die Malware die folgenden Systemaufruftrampoline, die später verwendet werden:

  • NtQueryInformationProcess
  • NtSetInformationThread
  • NtSetInformationProcess
  • NtTerminateProcess
  • NtAllocateVirtualMemory
  • NtProtectVirtualMemory

Nach der Installation der Syscall-Stubs patcht die Malware EtwEventWrite in ntdll.dll mit dem klassischen xor eax, eax; ret , um die ETW-Telemetrie im Benutzermodus zu deaktivieren.

TCLBANKER führt eine erste Sandbox-Prüfung durch, indem es einen Start-Tick mit GetTickCount64() erfasst, 500 ms wartet und die verstrichene Zeit misst. Sind tatsächlich weniger als 450 ms vergangen, bricht die Malware ab – dies erkennt Sandboxes oder Emulationsframeworks, die Sleep so manipulieren, dass sie sofort zurückkehren.

Eine der interessantesten Funktionen von TCLBANKER ist eine Aufzählungsfunktion, die drei Fingerabdrücke anhand der folgenden Kriterien generiert:

  • Anti-Debugging-Prüfungen
  • Systemdatenträgerinformationen und Speicherprüfungen
  • Sprachprüfungen

Der Entwickler verwendet magische Konstanten, die den „sauberen“ Pfaden für jede Kategorie zugewiesen sind, und führt dann eine XOR-Verknüpfung mit jeder einzelnen durch, um den Umgebungs-Hash zu generieren. Dieser Umgebungs-Hashwert ist von Bedeutung, da er die nachfolgende Entschlüsselung der eingebetteten Nutzdaten beeinflusst.

Wenn beispielsweise ein Debugger vorhanden ist, erzeugt dieser einen falschen Hashwert. Wenn die Malware dann versucht, die Entschlüsselungsschlüssel aus dem Hashwert abzuleiten, wird die Nutzlast nicht korrekt entschlüsselt, und TCLBANKER wird die Ausführung abbrechen.

Anti-Debugging-Prüfungen

TCLBANKER implementiert sechs verschiedene Anti-Debugging-Prüfungen:

  • Identifizieren Sie den Debugger anhand des Flags Peb->BeingDebugged
  • Prüft die Heap-Tail-, Heap-Free- und Check-Heap-Flags, die beim Start eines Prozesses unter einem Debugger gesetzt sind.
  • Nutzt NtQueryInformationProcess() mit ProcessDebugPort
  • Verwendet NtQueryInformationProcess() mit ProcessDebugObjectHandle
  • Hardware-Haltepunkterkennung über die Debug-Register (DR0-DR3)
  • Misst die verstrichene Zeit mithilfe von QueryPerformanceCounter() Deltas und RDTSC Zykluszählungen

Systeminformationsprüfungen

TCLBANKER führt die folgenden fünf verschiedenen Prüfungen auf Basis von Virtualisierungs-, System- und Benutzerinformationen durch:

  • Prüft Virtualisierungssoftware anhand der Herstellersignatur
HypervisorUnterschrift des Anbieters
VMwareVMware
VirtualBoxVBoxVBoxVBox
KVMKVMKVMKVM
XenXenVMMXenVMM
Parallelsprl hyperv
QEMU/TCGTCGTCGTCGTCG
  • Überprüfen Sie, ob das Systemlaufwerk (C:\\) über GetDiskFreeSpaceExW() mindestens 64 GB groß ist.
  • Ruft GlobalMemoryStatusEx() auf, um zu überprüfen, ob das System über mehr als 2 GB RAM verfügt.
  • Prüft auf 2 oder CPU-Prozessoren über GetSystemInfo()
  • Prüft auf generische Sandbox-/Malware-Benutzernamen
    • sandbox, malware, virus, sample, john doe, currentuser

Sprachprüfungen

Für die letzte Überprüfung des Umgebungsfingerabdrucks ruft TCLBANKER mithilfe von GetUserGeoID() geografische Informationen des infizierten Rechners ab und zielt dabei auf brasilianische Benutzer anhand der geografischen ID (0x20). Eine zweite Überprüfung des Gebietsschemas über GetUserDefaultLCID() stellt außerdem sicher, dass die Standardsprache des Benutzers brasilianisches Portugiesisch (pt-BR, LANGID 0x0416) ist.

Nach diesen Prüfungen bricht TCLBANKER die Ausführung ab, wenn etwas festgestellt wird, oder führt andernfalls eine weitere Anti-Debugging-Prüfung durch, indem DbgUiRemoteBreakin() gepatcht wird. Die Malware patcht ihr erstes Byte zu a ret -Anweisung, sodass jeder Versuch, aus der Ferne in den Prozess einzudringen, wirkungslos bleibt – der eingeschleuste Thread kehrt sofort zurück, und das Ziel läuft ungestört weiter.

Anschließend leitet die Malware einen AES-256 CBC-Schlüssel und einen Initialisierungsvektor (IV) ab, indem sie fest codierte Konstanten aus dem Abschnitt .rdata sowie den zuvor berechneten Umgebungshash verwendet. TCLBanker verwendet BCryptDecrypt() , um die eingebettete Nutzlast zu entschlüsseln, und dekomprimiert sie dann mit RtlDecompressBuffer unter Verwendung des LZNT1-Komprimierungsalgorithmus.

Sobald die jeweilige Nutzlast entschlüsselt ist, initialisiert TCLBANKER COM über CoInitializeEx() und verwendet die CLR-Hosting-APIs, um die .NET-Laufzeitumgebung im Prozess zu laden. Vor dem Start des Payload-Einstiegspunkts erstellt TCLBanker zwei neue Threads: einen, der als Watchdog dient, und einen, der den Watchdog-Thread als Heartbeat-Check überwacht.

Wachhund

TCLBANKER verfügt über eine umfassende Überwachungsfunktion, die verschiedene Analysetools ins Visier nimmt, darunter Disassembler, Debugger, Instrumentierungsprodukte, Antivirenprodukte und Sandbox-Produkte. In diesem Abschnitt werden die verschiedenen Techniken erläutert, die diese Funktion verwendet:

  • Debugger-Prüfung über PEB→BeingDebugged
  • Überwacht Hardware-Haltepunkte DR0/DR1/DR2/DR3
  • Überprüft Windows-Funktionen (BCryptDecrypt(), BCryptOpenAlgorithmProvider()) auf Inline-Hooks, indem die ersten 12 Bytes jeder Funktion durchsucht werden.
  • Monitore für Instrumentierungswerkzeuge und zugehörige Zeichenketten (frida, cydia, user-path injection, hook framework)
  • Überprüft alle benannten Pipes des Kernels und sucht nach frida oder linjector
  • Führt eine Prozessaufzählung über CreateToolhelp32Snapshot() durch, wobei die folgenden Prozessnamen als Ziel dienen:
    • frida, de4dot, dnspy, megadumper, extremedumper, processhacker, x64dbg, x32dbg, pe-sieve, scylla, Ilspy, dotpeek, netreactorslayer, cheatengine

  • Verwendet die Windows-Titelerkennung über GetWindowTextW() mit diesen Titeln:
    • x64dbg, x32dbg, ida -, ida pro, ghidra, dnspy, megadumper, extremedumper, processhacker, ollydbg, windbg)_, pe_sieve, scylla
  • Identifiziert Analystenwerkzeuge anhand der folgenden Fensterklassennamen über FindWindowW():
    • IDATopLevelWindow, idaabortwndclass, TIdaWindow, x64dbg, x32dbg, OLLYDBG, WinDbgFrameClass, ProcessHacker, SystemInformer, CheatEngine, HxdClass
  • Prüft, ob die folgenden Module geladen sind
    • dbeng.dll, dbgcore.dll, SbieDll.dll, snxhk.dll, cmdvrt32.dll, cmdvrt64.dll, cuckoomon.dll, pstorec.dll, vmcheck.dll, wpespy.dll
  • Betrifft die folgenden Mutexe und Ereignisse:
    • Ida_trusted_idbs, IDA_COMM_PIPE_, Local\\x64dbg, Local\\x32dbg, Frida, YOURAPPNAMEHERE
  • Führt CRC32 -Integritätsprüfung am .text -Abschnitt durch, um Manipulationen zu verhindern.

Banking-Trojaner-Modul

Tcl.Agent ist ein Banking-Trojaner, die Hauptkomponente der Kette. Es ist durch .NET Reactor geschützt, und obwohl es uns nicht gelang, es mit verfügbaren Open-Source-Tools wie de4dot und NETReactorSlayer zu deobfuskieren, konnten wir diese Stufe statisch bis zu einem erfüllbaren Zustand deobfuskieren, indem wir eine benutzerdefinierte Deobfuskierungspipeline verwendeten, um die Stringverschlüsselung, die Kontrollflussglättung, die IL-Mutation, die Delegaten-Proxys und die verschlüsselten Methodenrümpfe von .NET Reactor zu bewältigen (Necrobit). Obwohl es sich um eine neue Malware handelt, orientiert sich ein Großteil der Code-Struktur noch immer an ESETs Implementierungsplan für einen LATAM-Banking-Trojaner aus dem Jahr 2020.

Zu Beginn führt die Malware eine Geofencing-Prüfung durch und benötigt mindestens 2 der folgenden Indikatoren, um Brasilien zuzuordnen; andernfalls beendet sie sich sofort, wenn sie sich nicht auf einem brasilianischen Rechner befindet:

PrüfenImplementierung
Regionscodenew RegionInfo(CultureInfo.CurrentCulture.LCID).TwoLetterISORegionName == "BR"
ZeitzoneTimeZoneInfo.Local.BaseUtcOffset.TotalHours: Wenn >= -5,0, prüfe, ob == -2,0
LCIDCultureInfo.CurrentCulture.LCID == 1046 (Portugiesisch-Brasilien)
TastaturGetKeyboardLayoutList() - Überprüfe jedes Layout: (ToInt32() & 0xFFFF) == 1046

Installation und Persistenz

Beim ersten Start kopiert die Malware das gesamte Anwendungsverzeichnis nach %LocalAppData%\LogiAI. Es berechnet einen SHA-256-Hash über alle .dll und .exe Dateien im Quellverzeichnis und schreibt ihn in eine .version Markerdatei. Bei nachfolgenden Durchläufen werden Hashwerte verglichen, um redundante Kopien zu überspringen. Nach dem Kopieren wird die neue Instanz vom Installationspfad aus gestartet und das Programm beendet sich.

Es erstellt eine geplante Aufgabe mit dem Namen RuntimeOptimizeService mithilfe der COM-Interop-Funktion mit dem Task Scheduler (CLSID 0F87369F-A4E5-4CFC-BD3E-73E6154572DD). Die Aufgabe ist wie folgt konfiguriert: versteckt, aktiviert, ohne Zeitlimit für die Ausführung, erlaubt im Batteriebetrieb, Start bei Verfügbarkeit und wird bei einem Anmeldetrigger (type 9) ausgelöst, der auf den aktuellen Benutzer beschränkt ist. Es registriert sich bei TASK_CREATE_OR_UPDATE und TASK_LOGON_SERVICE_ACCOUNT.

Nach der erfolgreichen Einrichtung der Persistenz sendet der Agent einen ersten POST-Beacon an https://campanha1-api.ef971a42.workers[.]dev/api/installs mit der Agenten-ID (MachineName-UserName), dem Maschinennamen, dem Benutzernamen (redundant) und der Betriebssystemversion. Die Anfrage wird mit einem fest codierten Kampagnen-Authentifizierungstoken 0d21613a-2609-45fc-83ff-d0feaa0c891f authentifiziert. Die neuere Variante fügt Debug-Protokollierung um diesen Aufruf herum hinzu (C:\temp\tcl-debug.txt), ein Entwicklerartefakt, das unbeabsichtigt die Anwesenheit des Agenten auf der Festplatte offenlegt.

Selbstaktualisierung

Der Agent implementiert ein Hash-basiertes Selbstaktualisierungsgate, das früh im Startvorgang ausgeführt wird. Es liest einen lokalen Versionshash aus flutter_engine.cfg in seinem Installationsverzeichnis (und migriert gegebenenfalls von einem Legacy-Dateinamen version.hash ), und ruft dann den aktuellen Hash vom Dateiserver-Endpunkt documents.ef971a42.workers[.]dev/api/version unter Verwendung einer gekürzten User-Agent-Zeichenfolge (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ab.

Die Antwort wird nach dem Schlüssel "hash" durchsucht. Wenn der Remote-Hash mit dem lokalen Hash übereinstimmt, wird die Ausführung normal fortgesetzt. Bei der ersten Installation wird der Remote-Hash auf die Festplatte geschrieben, und die Ausführung wird ohne Aktualisierung fortgesetzt.

Wird eine Hash-Diskrepanz festgestellt, lädt der Agent die Update-Payload von documents.ef971a42.workers[.]dev/api/update als MSI nach %TEMP%\update_{8hexchars}.msi herunter, authentifiziert mit dem Bearer-Token b7ba9e80-0d04-4d9e-b217-c8b3cce335a2.

Zur Überprüfung wird der Download auf eine Mindestgröße von 100 KB geprüft. Der Agent schreibt dann ein sich selbst löschendes Batch-Skript in %TEMP% , das die Aufgabenliste abfragt, bis der aktuelle Prozess beendet wird, msiexec /i /qn REINSTALLMODE=amus für die stille Installation ausführt und sich selbst löscht. Die Batch-Datei wird über einen versteckten cmd.exe Prozess gestartet, bevor der Agent beendet wird, und übergibt die Ausführung an die aktualisierte Nutzlast.

Browser-URL-Monitor und C2-Sitzungsinitialisierung

Jede Sekunde ruft der Malware-Agent eine Browser-URL-Monitorfunktion auf, die über UI Automation die Adressleiste des Vordergrundbrowsers ausliest. Es ruft GetForegroundWindow auf, ermittelt den zugehörigen Prozess, überprüft den Prozessnamen anhand von Chrome, Firefox, Microsoft Edge, Brave, Opera und Vivaldi und verwendet dann AutomationElement.FromHandle -> FindFirst(Descendants, ControlType.Edit) -> ValuePattern.Current.Value , um die URL zu extrahieren, ähnlich wie bei dieser Stack Overflow- Implementierung.

Die extrahierte URL wird mit einer festen Liste von Zielbanken abgeglichen, die in die Binärdatei eingebettet sind und mittels XOR mit einem 16-Byte-Schlüssel und Base64-Kodierung kodiert wurden.

Dieses GitHub Gist enthält eine Liste von 59 Zieldomains, darunter brasilianische Banken, Fintech-Plattformen und Kryptowährungsbörsen, gruppiert nach den Ziel-IDs, die an jede entschlüsselte Domain angehängt sind.

Wenn eine Übereinstimmung zustande kommt, wird die Domain-Ziel-ID an den nächsten Zustand übergeben, der die offizielle C2-Kommunikation durch Aufbau einer WebSocket-Verbindung zu wss://mxtestacionamentos[.]com/ws initialisiert. Der OnConnect -Handler wird ausgelöst und sendet ein Registrierungspaket, das die Agenten-ID (eine zur Laufzeit zufällig generierte GUID), MachineName, UserName, Maschineninformationen, Zeitstempel, Domain-Ziel-ID (damit der C2-Server weiß, welche Website das Opfer geöffnet hat) und eine Signatur enthält.

Zur Erzeugung einer Handshake-Signatur wird HMAC-SHA256 verwendet, um die Opferkennung (Agenten-ID, Maschinenname, Benutzername, Betriebssystemversion, Zeitstempel) mit der Kampagnen-GUID 70e4f943-e323-4484-97d7-35401bf6812c als Schlüssel zu signieren.

Der Server antwortet daraufhin mit einer Registrierungsbestätigung, wodurch die Sitzung offiziell gestartet wird, und tritt in die Befehlsverarbeitungsschleife ein. Beim Sitzungsstart wird alle 500 ms ein Task-Manager-Killer ausgelöst, um zu verhindern, dass das Opfer den Prozess des Agenten überprüft oder beendet.

C2-Befehlstabelle

Eine Zusammenfassung der Funktionen wird anhand der folgenden Opcode-Tabelle beschrieben:

OpcodeZweck
2Registrierungsbestätigung, Task-Manager-Killer starten
4Saubere WebSocket-Trennung
5Selbstmord: Alle Geschwisterprozesse beenden und aussteigen
6Neustart erzwungen (shutdown.exe /r /t 0 /f)
7Selbstmord-dann-Deinstallation: Alle Prozesse mit demselben Host-Binärnamen außer dem eigenen Prozess (Geschwisterprozesse) beenden → deinstallieren → beenden
16Screenshot
17Starten Sie die Bildschirmübertragung.
18Beenden Sie das Streaming des Bildschirms.
19Bildschirmaufnahmequalität einstellen (1-100)
20Monitore auflisten
32Mausbewegung (X, Y, MonitorIndex)
33Mausklick durch Overlay: {X,Y,Button,MonitorIndex} analysieren → in absolute Desktop-Koordinaten übersetzen → das eigene Overlay-Fenster des Implantats finden, das diesen Punkt abdeckt → ein 2x2-Bereichsloch im Overlay an diesem Pixel ausstanzen → SetCursorPos + SendInput Mausklick (der auf den tatsächlichen Desktop-Inhalt unterhalb des Overlays landet).
34Mausrad (Delta, SendInput)
35Tastendruck (Tastencode, SendInput)
37Taste gedrückt (Tastencode, SendInput)
38Taste loslassen (KeyCode, SendInput)
39Keylogger starten (WH_KEYBOARD_LL Hook)
40Keylogger löschen, Daten an C2 exfiltrieren
41Zwischenablage-Hijacking (Clipboard.SetText)
48Dateisystemverzeichnisauflistung
65Informationen zu laufenden Prozessen abrufen
67Shell-Befehlsausführung (cmd.exe /c)
80Alle sichtbaren Fenster auflisten
81Fensterverwaltung: Fensterprozess beenden / Fenster minimieren / Fenster wiederherstellen / Fenster in den Vordergrund bringen / Fenster schließen / Fenster auf einen anderen Monitor verschieben
83Anzeige des Stillstands: entweder Fortschrittsanzeigen oder ein gefälschter Windows Update-Bildschirm
84Abreißfolie
85Bildschirmaufnahme-Immunität aktivieren/deaktivieren. Aktiviert/deaktiviert WDA_EXCLUDEFROMCAPTURE für alle Overlay-Fenster, um diese vor Bildschirmfreigabe/Screenshots zu verbergen.
86Overlay-Inhalte aktualisieren
87Ausschnitt-Overlay anzeigen: Externes Fenster innerhalb des Overlays mit sichtbarem Ausschnitt fixieren
96Anmeldeaufforderungs-Overlay anzeigen

Social-Engineering-UI-Framework

Eine interessantere Fähigkeit des Banking-Trojaners ist ein WPF-basiertes Vollbild-Overlay-Subsystem, das während aktiver C2-Sitzungen Betrugsabläufe mit Bankbezug orchestriert.

Overlay-Lebenszyklus

Der Overlay-Manager erzeugt pro Monitor ein WPF-Vollbildfenster. Die Fenster sind rahmenlos, ganz oben und in der Taskleiste ausgeblendet (WindowStyle.None, Topmost = true, ShowInTaskbar = false), mit einem benutzerdefinierten Closing -Handle, das das Schließen verweigert, bis ein internes Flag vom Benutzer über den Overlay-Teardown-Befehl umgeschaltet wird, wodurch verhindert wird, dass die Fenster geschlossen werden.

Beim Start erstellt der Manager über CopyFromScreen einen PNG-Screenshot von jedem Bildschirm als Overlay-Hintergrund und erzeugt so den Eindruck eines „eingefrorenen Desktops“. Je nachdem, welches Overlay aktuell aktiv ist, nimmt das Opfer seine eigentliche Desktop-Umgebung dahinter wahr.

Ein 500ms -Timer wendet HWND_TOPMOST kontinuierlich über SetWindowPos an, um jedes Fenster zu blockieren, das versucht, über dem Overlay sichtbar zu werden.

Darüber hinaus ruft eine Anti-Capture-Funktion SetWindowDisplayAffinity mit WDA_EXCLUDEFROMCAPTURE auf, wodurch das Overlay für alle Bildschirmaufnahmetools unsichtbar wird und der Bediener sein eigenes Overlay mithilfe der Screenshot- und Screenstreaming-Befehle sehen kann.

Eingabeblocker

Auf dem Hauptmonitor sind zwei Hooks installiert: WH_KEYBOARD_LL und WH_MOUSE_LL. Beide Hooks prüfen ihre jeweiligen injizierten Flags (LLKHF_INJECTED für Tastatur, LLMHF_INJECTED für Maus), sodass Eingaben, die über SendInput durch die Fernbefehle des Bedieners injiziert werden, unverändert durchgelassen werden. Der Tastatur-Hook blockiert Tab, Escape, Alt+F4, Win-Taste, PrintScreen, Strg, Alt und alle Navigationstasten; der Maus-Hook blockiert Rechtsklick, Mittelklick und Scrollen, erlaubt aber Linksklick und Bewegung, sodass das Opfer weiterhin mit den Overlay-Eingabeaufforderungen interagieren kann.

Social-Engineering-UI-Entwickler

Fünf austauschbare Inhaltsrenderer werden in das Overlay-Framework integriert:

Anmeldeinformationsaufforderung: Unterstützt drei Eingabemodi, die anhand der Anforderungsparameter des Bedieners ausgewählt werden.

  • Im Telefonmodus wird eine Echtzeit-Maskierung des brasilianischen Formats angewendet ((##) ####-#### für 10-stellige Festnetznummern, (##) #####-#### für 11-stellige Mobiltelefonnummern) mit maximal 11 Ziffern.
  • Im Modus „Virtuelle Tastatur“ wird eine numerische Tastatur auf dem Bildschirm dargestellt (Tasten 0–9 plus „limpar“/clear), wobei die Eingabe als Aufzählungszeichen angezeigt wird, um die PIN-Eingabe zu simulieren.
  • Der Standardmodus akzeptiert Klartext mit einer konfigurierbaren maximalen Länge.

Alle Modi prüfen die Eingaben mithilfe eines Qualitätsvalidators, der algorithmisch gleiche Ziffernfolgen (000000) und aufsteigende/absteigende Folgen (123456, 654321) ablehnt, um zu verhindern, dass Benutzer Wegwerfwerte eingeben.

Die Submit-Aktion sendet die erfassten Werte an den C2.

Vishing-Wartebildschirm: Wird ausgelöst, nachdem das Opfer seine Telefonnummer bei der Anmeldeaufforderung eingegeben hat. Zeigt "Estamos entrando em contato" ("Wir nehmen Kontakt auf") mit einer zentralen Bildanimation "atmend" und drei Punkten mit gestaffelten Deckkraftanimationen (300ms Offset pro Punkt), die eine "verbindende" visuelle Darstellung erzeugen. Der Betreiber oder ein Komplize kann dann das echte Telefon des Opfers anrufen und sich als Bankmitarbeiter ausgeben.

Fortschrittsschritte: Ein vollständig vom Bediener vorgegebener Standbildbildschirm, der eine Liste simulierter Verarbeitungsschritte mit einer zufälligen Animation anzeigt. Die Dauer der einzelnen Schritte wird zufällig gewählt, sodass sich die Gesamtdauer auf ungefähr 15 Minuten beläuft. Ein Timer durchläuft jeden Schritt nacheinander, markiert visuell die abgeschlossenen Schritte, hebt den aktuellen Schritt hervor und blendet die verbleibenden Schritte aus. Wenn alle Schritte abgeschlossen sind, wird die Sequenz auf eine frühere Position mit neuen, zufälligen Zeitabläufen zurückgesetzt und fortgesetzt.

Gefälschtes Windows-Update: Ein alternativer Bildschirm, der den Update-Neustart-Bildschirm von Windows 10/11 nachahmt. Es wird ein einfarbiger #0078D7 (Windows-Akzentblau) Hintergrund mit einem im Kreis angeordneten, sich drehenden Indikator aus fünf Ellipsen dargestellt. Eine Prozentanzeige springt in zufällig ausgewählten Abständen von 50 bis 81 Sekunden um zufällige 25 bis 35 Prozentpunkte, um das unregelmäßige Fortschrittsverhalten echter Windows-Updates nachzuahmen. Standarduntertitel: „Trabalhando em atualizacoes“ („Arbeiten an Updates“).

Ausschnitt-Overlay: Schneidet ein rechteckiges Loch in das Vollbild-Overlay, wodurch das darunterliegende Anwendungsfenster sichtbar wird. Der Operator gibt die Abmessungen des Lochs über den Opcode 87 an. Dabei erstellt der Overlay-Manager eine thematische Karte mit einem Platzhalter mit transparentem Rahmen, berechnet deren Bildschirmkoordinaten nach dem Layout und schneidet ein passendes Loch in der Region mit CreateRectRgn + CombineRgn(RGN_DIFF) + SetWindowRgn aus. Das Zielfenster wird unterhalb des Lochs neu positioniert. Das Ergebnis ist ein echtes Anwendungsfenster, das in die Überlagerung eingebettet ist, und das Opfer interagiert mit der eigentlichen Anwendung, während die umgebende Überlagerung einen irreführenden Kontext liefert.

Wurmmodul

Das zweite vom Loader aufgerufene Modul ist Tcl.WppBot, das dazu dient, Spam- und Phishing-Nachrichten in großem Umfang zu verbreiten, um TCLBANKER zu verteilen. Aus zwei verschiedenen Ladern wurden zwei unterschiedliche Erregertypen gewonnen und analysiert:

  • Ein WhatsApp-Wurm, der Browsersitzungen kapert
  • Ein Outlook-E-Mail-Bot, der Microsoft Outlook über COM-Interop missbraucht.

Tcl.WppBot ist ebenfalls mit .NET Reactor geschützt, und zwar mit der gleichen Version, die auch zum Schutz von Tcl.Agent verwendet wird. Daher ist es uns auch gelungen, in dieser Phase die Nutzdaten statisch zu deobfuskieren.

Beide Agenten nutzen dasselbe C2-Backend, dieselben Authentifizierungsdaten und dieselbe Betriebsinfrastruktur. Die C2-URL und der API-Schlüssel werden beim Start mittels XOR-Entschlüsselung mit einem fest codierten Schlüssel entschlüsselt.

  • C2-URL: campanha1-api.ef971a42.workers[.]dev (Cloudflare Workers-App)
  • API-Schlüssel / Bearer-Token: 0d21613a-2609-45fc-83ff-d0feaa0c891f

Der C2-Server dient über den Endpunkt https://campanha1-api.ef971a42.workers[.]dev/api/campaign einem einzigen übergeordneten Kampagnenkonfigurationsobjekt. Jede Agentenvariante deserialisiert das vollständige Objekt, liest aber nur die für ihren Kanal relevanten Felder.

Erfasste Konfiguration:

message            : Ola tudo bem?
                     Preciso de um orçamento, estarei encaminhado caso tenha os produtos por favor me retorne para
                     darmos continuidade no atendimento.

                     https://arquivos-omie[.]com 👈

                     âšï¸*IMPORTANTE*: Este orçamento foi otimizado para visualização em Computadores Desktop,
                     pois o mesmo necessita de visualizador de excel, word ou pdf.
fileUrl            : https://documents.ef971a42.workers[.]dev/file
delayMin           : 1
delayMax           : 3
maxPerSession      : 3000
updatedAt          : 2026-04-17T15:54:07.003Z
type               : gmail
subject            : Prezado(a), NFe disponível para impressão
emailMessage       : <!DOCTYPE html>
                     <html lang="pt-BR">
                     <head>
                         <meta charset="UTF-8">
                         <title>Nota Fiscal Disponível</title>
                         <style>
                             body {
                                 font-family: Arial, sans-serif;
                                 margin: 20px;
                                 padding: 0;
                                 text-align: center;
                                 background-color: #f4f4f4; /* Cor de fundo mais clara */
                                 color: #333; /* Cor do texto ajustada para ser visível */
                             }
                             h1 {
                                 font-size: 24px;
                                 margin-bottom: 20px;
                                 font-weight: normal; /* Título sem negrito */
                             }
                             p {
                                 font-size: 16px;
                                 margin-bottom: 20px;
                                 line-height: 1.6;
                                 color: #333; /* Garantir que o texto esteja visível */
                             }
                             .btn {
                                 background-color: #007BFF;
                                 color: #fff;
                                 padding: 10px 20px;
                                 border: none;
                                 border-radius: 5px;
                                 cursor: pointer;
                             }
                             .btn:hover {
                                 background-color: #0056b3;
                             }
                         </style>
                     </head>
                     <body>

                         <h1>Prezado(a)</h1>
                         <p>
                             Sua Nota Fiscal Eletrônica (NFe) está disponível e pronta para ser acessada.
                             Para facilitar, basta clicar no botão abaixo para abrir o documento.
                         </p>

                         <p>
                             Caso tenha alguma dúvida sobre os detalhes da nota ou precise de alguma alteração, por
                     favor, entre em contato conosco.
                         </p>

                         <a href="https://arquivos-omie[.]com" target="_blank">
                             <button class="btn">Abrir Nota Fiscal</button>
                         </a>

                         <p>
                             Agradecemos pela confiança e ficamos à disposição para qualquer outra necessidade.
                         </p>

                     </body>
                     </html>
emailDelayMin      : 30
emailDelayMax      : 90
emailMaxPerSession : 100

Derselbe Cloudflare-Account ef971a42 hostet auch das Payload Delivery CDN (Domain für fileUrl im Konfigurationsobjekt) unter documents.ef971a42.workers[.]dev. Erreichbar über den /file -Endpunkt, stellt er derzeit eine ZIP-Datei bereit, die das mit dem TCLBANKER-Trojaner infizierte LogiAI Prompt Builder MSI enthält. Diese Infrastrukturentscheidung ermöglicht es dem Betreiber, die Infrastruktur schnell umzustellen, ohne dedizierte Server vorhalten zu müssen.

Zum Zeitpunkt der Erstellung dieses Dokuments befindet sich die in der obigen Konfiguration identifizierte Phishing-Domain arquivos-omie[.]com , die am 15.04.2026 erstellt wurde, nicht in einem betriebsbereiten Zustand (Willkommen!). Dieses Portal wird derzeit planmäßig gewartet. Bitte versuchen Sie es später noch einmal. Die Kampagne könnte sich noch in der frühen operativen Phase befinden oder für die Aufgabenplanung vorbereitet sein. Diese Domain wurde außerdem so benannt, dass sie eine gängige brasilianische Enterprise Resource Planning (ERP)-Suite imitiert.

Agent 1: WhatsApp-Bot

Der WhatsApp-Agent übernimmt unbemerkt die authentifizierte WhatsApp-Web-Sitzung des Opfers, um Spam-Nachrichten zu versenden und TCLBANKER an brasilianische Kontakte zu verteilen.

Session Hijacking

Die Malware beginnt damit, Chromium-basierte Browser auf dem Zielsystem zu erkennen und anschließend sowohl die App Paths -Registry-Einträge als auch die gängigen Installationsverzeichnisse nach Chrome, Edge, Brave, Opera und Vivaldi zu durchsuchen. Anschließend werden die Benutzerprofile jedes Browsers durchsucht (z. B. „Standard“, „Profil 1“ usw.), um Hinweise auf eine aktive WhatsApp Web-Sitzung zu finden. Ein Profil wird als mit einer authentifizierten Sitzung gekennzeichnet, wenn sein IndexedDB-Speicher das WhatsApp Web LevelDB-Verzeichnis unter <profile_dir>/IndexedDB/https_web.whatsapp[.]com_0.indexeddb.leveldb/ enthält.

Anschließend wird jedes Profil an die Funktion zum Klonen von Profilen und zum Übernehmen von Sitzungen gesendet.

Für jedes qualifizierte Profil klont die Malware dieses in ein temporäres Verzeichnis unter %TEMP%\<GUID>\ und kopiert dabei nur die Dateien, die zum Fortsetzen der WhatsApp Web-Sitzung benötigt werden: IndexedDB, Local Storage, Session Storage, databases, Web Data, Login Data, und Cookies. Anschließend wird über Selenium WebDriver eine Headless-Chromium-Instanz gestartet, wobei --user-data-dir auf das geklonte Profil verweist.

Das übereinstimmende chromedriver.exe wird zur Laufzeit durch eine getarnte Selenium Manager Binärdatei aufgelöst, die unter %TEMP%\msvc-rt14\bin\hostfxr.exe abgelegt wird. Diese wird mit --browser chrome --output json aufgerufen und gibt den Pfad eines Chromedrivers zurück, der mit der installierten Chrome-Version des Opfers kompatibel ist.

Unmittelbar nach dem Start injiziert die Malware JavaScript, um Bot-Erkennungsframeworks zu umgehen, indem sie navigator.webdriver ausblendet, chrome.runtime füllt, die Diskrepanz zwischen Notification.permission und permissions.query behebt, ein nicht leeres navigator.plugins -Array vortäuscht und navigator.languages auf ['pt-BR', 'pt', 'en-US', 'en'] setzt, um der Zielgruppe zu entsprechen.

Object.defineProperty(navigator, 'webdriver', {
    get: () = > undefined 
}

);
delete navigator.__proto__.webdriver;
if (window.chrome)  {
    window.chrome.runtime = window.chrome.runtime || {};
}

const origQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (p) = > (
p.name ==  = 'notifications' ?
Promise.resolve( {
    state: Notification.permission 
}

) :
origQuery(p)
);
Object.defineProperty(navigator, 'plugins', {
    get: () = > [1, 2, 3, 4, 5], }

);
Object.defineProperty(navigator, 'languages', {
    get: () = > ['pt-BR', 'pt', 'en-US', 'en'], }

);
window.navigator.chrome = {
    runtime: {}

};

Nachdem das geklonte Profil geladen wurde, navigiert der Browser zu web.whatsapp[.]com, und die Malware wartet bis zu 45 Sekunden, um den resultierenden Seitenzustand zu beobachten. Wenn die Chat-Oberfläche erscheint (die geklonte IndexedDB war gültig und die Sitzung wurde ohne QR-Scan fortgesetzt), wird eine eingebettete WA-JS (WPPConnect) Bibliothek injiziert und gewartet, bis WPP.contact.list und WPP.chat.sendTextMessage aufrufbar sind, bevor die Kampagnen-Dispatch-Schleife gestartet wird. Wird stattdessen die QR-Code-Aufforderung angezeigt, gibt die Engine "qr_code" zurück, ohne einen Einfügeversuch zu unternehmen, und versucht dann das nächste Kandidatenprofil.

Spam-Funktionalität

Sobald die Einschleusung erfolgreich war, ruft die Malware die aktive Kampagne vom C2-Endpunkt https://campanha1-api.ef971a42.workers[.]dev/api/campaign ab, der den Nachrichtentext, optional die URL des Anhangs, die Bildunterschrift und die Zeitparameter liefert. TCLBANKER wird dann vom Dateiserver unter https://documents.ef971a42.workers[.]dev/file heruntergeladen und im Browserkontext als File-Objekt wiederhergestellt, ohne auf die Festplatte geschrieben zu werden.

Anschließend ruft die Malware WPP.contact.list auf, um das Adressbuch des Opfers zu erfassen, filtert Gruppen, Broadcasts und nicht-brasilianische Nummern heraus und beginnt, Nachrichten über WPP.chat.sendTextMessage und sendFileMessage zu versenden. Die Malware meldet nach jedem Batch den Fortschritt an den C2-Endpunkt /api/progress und fragt /api/control vom Operator nach Befehlen zum Fernstopp oder erneuten Senden.

Agent 2: Outlook-E-Mail-Bot

Der Outlook-Agent ist ein E-Mail-Spambot, der die installierte Microsoft Outlook-Anwendung des Opfers missbraucht, um Phishing-E-Mails von der E-Mail-Adresse des Opfers zu versenden. Dadurch sind diese E-Mails schwieriger als Spam zu erkennen als E-Mails, die von einer vom Angreifer kontrollierten Infrastruktur gesendet werden.

Outlook Discovery & COM-Anhang

Falls OUTLOOK.EXE noch nicht ausgeführt wird, versucht es, die Installation in App Paths Registrierungseinträgen und bekannten Installationsverzeichnissen zu finden und sie in einem neuen Prozess zu starten. Anschließend verbindet sich die Malware über COM-Interop Marshal.GetActiveObject("Outlook.Application") mit dem Prozess und überprüft, ob mindestens ein E-Mail-Konto konfiguriert ist.

Kontakternte

Anschließend wird von der Malware ein PowerShell-Skript %TEMP%\oc<guid>.ps1, abgelegt, das über Outlook COM aus einem separaten Prozess Kontakte abruft. Es sammelt Kontakte aus zwei Quellen: Zuerst liest es den Standardordner „Kontakte“ nach allen Kontakteinträgen und extrahiert aus jedem Kontakteintrag die E-Mail-Adresse und den vollständigen Namen. Zweitens durchläuft es die Stammverzeichnisse jedes Shops, um posteingangsähnliche Ordner zu finden, sortiert die Posteingangsnachrichten nach Aktualität und extrahiert die Absender-E-Mail-Adressen und -Namen, bevor es sie in eine .txt -Datei im email|name -Format schreibt.

Für jede Kandidaten-E-Mail werden zusätzliche Filter durchgeführt, um die Zustellbarkeit zu maximieren.

Spam-Funktionalität

Ähnlich wie der WhatsApp-Bot ruft die Malware die aktive Kampagne von https://campanha1-api.ef971a42.workers[.]dev/api/campaign ab und versendet dann E-Mails über die Outlook-Konten des Opfers mittels COM-Automatisierung. Jede E-Mail wird über outlookApp.CreateItem(0) (MailItem) mit dem Empfänger in To, der Kampagnen-Betreffzeile und dem Kampagneninhalt emailMessage erstellt und über SendUsingAccount mit dem tatsächlichen Konto des Opfers versendet.

Zwischen den Sendevorgängen wendet der Agent eine zufällige Verzögerung an und prüft regelmäßig den C2-Kontrollendpunkt /api/control auf Pause- oder Wiederholungsbefehle und meldet den Fortschritt an /api/progress.

Infrastruktur

Die REF3076-Akteure haben die worker[.]dev Cloudflare Serverless-Infrastruktur für C2 und Dateihosting genutzt. Diese Entscheidung ermöglicht es ihnen, das bestehende Vertrauen der Opfer in Cloudflare zu übernehmen und die Infrastruktur bei Bedarf schnell zu rotieren.

Ausgehend vom Body-Hash (91fafaa1240676afe5c55d931261e3798797c408) der oben genannten Phishing-Seite (arquivos-omie[.]com) konnten wir weitere Domains identifizieren, die wahrscheinlich für den Einsatz als Waffe vorbereitet werden:

DomainFirst SeenInfoASN (Anbieter)
arquivos-omie[.]com17.04.2026Hausbesetzungen – Brasilianische SaaS-Lösungen für KMUAS 13335 (Cloudflare)
documentos-online[.]com11.04.2026GenericAS 13335 (Cloudflare)
afonsoferragista[.]com22.04.2026Baumarkt - Wahrscheinlich verwendet in einem B2B-KöderAS 13335 (Cloudflare)
doccompartilhe[.]com15.04.2026Allgemein – „Ein Dokument geteilt“AS 13335 (Cloudflare)
recebamais[.]com20.04.2026Hausbesetzung – Brasilianische Kredit-/DarlehensvermittlungAS 13335 (Cloudflare)

Nach einer umfassenderen Änderung des Bannertitels (Portal Corporativo) wurde weitere brasilianische Phishing-Infrastruktur entdeckt, es ist jedoch unklar, ob diese in direktem Zusammenhang mit REF3076 oder mit anderen Akteuren im lateinamerikanischen Banking-Trojaner-Ökosystem steht. Ein Cluster nutzte insbesondere das kostenlose Hosting-Produkt für statische Websites von Cloudflare pages[.]dev .

Die C2-Domäne mxtestacionamentos[.]com verwies zuvor auf eine in Brasilien gehostete IP-Adresse 191.96.224[.]96.

Im vergangenen Jahr beherbergte diese IP gleichzeitig eine REF3076 C2-Domain, eine REF3076 Phishing-Domain und eine Domain, die zuvor mit der Water Saci-Kampagne und der SORVEPOTEL/MAVERICK-Malware von TrendMicro in Verbindung gebracht wurde (saogeraldoshiping[.]com).

Fazit

TCLBANKER spiegelt eine umfassendere Reifung wider, die im gesamten brasilianischen Banking-Trojaner-Ökosystem stattfindet. Techniken, die einst das Markenzeichen hochentwickelter Bedrohungsakteure waren – wie etwa die umgebungsabhängige Entschlüsselung von Nutzdaten, die direkte Generierung von Systemaufrufen und die Echtzeit-Orchestrierung von Social Engineering über WebSockets – werden heute in handelsübliche Kriminalsoftware integriert. Die Eintrittsbarriere sinkt immer weiter, insbesondere wenn leistungsstarke LLMs für die Codegenerierung leicht zugänglich sind.

Die Einbeziehung sich selbst vermehrender Wurmmodule stellt eine bemerkenswerte Veränderung in diesem Bereich dar. Die Kampagne nutzt das Vertrauen und die Zustellbarkeit legitimer Nachrichten aus, indem sie die WhatsApp-Sitzungen und Outlook-Konten der Opfer kapert. Dies ist ein Vertriebsmodell, für dessen Erkennung herkömmliche E-Mail-Gateways und reputationsbasierte Abwehrmechanismen nur unzureichend gerüstet sind. Da lateinamerikanische Banking-Trojaner weiterhin diese Mechanismen zur Selbstverbreitung einsetzen, müssen Organisationen damit rechnen, dass Umfang und Reichweite dieser Kampagnen entsprechend zunehmen.

Entwicklerartefakte entlang der gesamten Kette, darunter Debug-Protokollierungspfade, Testprozessnamen und eine noch im Aufbau befindliche Phishing-Website, lassen darauf schließen, dass sich REF3076 in einem frühen Betriebsstadium befindet. Dies ist eine Kampagne, die sich noch im Aufbau befindet, nicht im Auslaufen.

REF3076 durch MITRE ATT&CK

Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die Bedrohungen gegen Unternehmensnetzwerke einsetzen.

Taktiken

Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion.

Techniken

Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.

Sanierung von REF3076

Verhütung

YARA

Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren.

Beobachtungen

Die folgenden Observablen wurden in dieser Studie diskutiert.

ÜberwachbarTypNameReferenz
701d51b7be8b034c860bf97847bd59a87dca8481c4625328813746964995b626SHA-256screen_retriever_plugin.dllTCLBanker-Ladekomponente
8a174aa70a4396547045aef6c69eb0259bae1706880f4375af71085eeb537059SHA-256screen_retriever_plugin.dllTCLBanker-Ladekomponente
668f932433a24bbae89d60b24eee4a24808fc741f62c5a3043bb7c9152342f40SHA-256screen_retriever_plugin.dllTCLBanker-Ladekomponente
63beb7372098c03baab77e0dfc8e5dca5e0a7420f382708a4df79bed2d900394SHA-256XXL_21042026-181516.zipTCLBanker initiale ZIP-Datei
campanha1-api.ef971a42[.]workers.devDomain-NameTCLBanker C2
mxtestacionamentos[.]comDomain-NameTCLBanker C2
documents.ef971a42.workers[.]devDomain-NameTCLBanker-Dateiserver
arquivos-omie[.]comDomain-NameTCLBanker-Phishing-Seite (in Entwicklung)
documentos-online[.]comDomain-NameTCLBanker-Phishing-Seite (in Entwicklung)
afonsoferragista[.]comDomain-NameTCLBanker-Phishing-Seite (in Entwicklung)
doccompartilhe[.]comDomain-NameTCLBanker-Phishing-Seite (in Entwicklung)
recebamais[.]comDomain-NameTCLBanker-Phishing-Seite (in Entwicklung)