OceanLotus: Watering Hole Attacke in Südost-Asien

OceanLotus: Neue Watering Hole Attacke in Südost-Asien

ESET-Forscher haben eine neue Watering Hole Kampagne auf mehrere Webseiten in Südostasien entdeckt. Noch nicht alle betroffenen Webseiten sind sauber.

ESET-Forscher haben eine neue Watering Hole Kampagne auf mehrere Webseiten in Südostasien entdeckt. Noch nicht alle betroffenen Webseiten sind sauber.

ESET-Forscher haben eine neue Watering Hole Kampagne auf mehrere Webseiten in Südostasien entdeckt, die vermutlich seit September 2018 aktiv ist. Der großangelegten Attacke konnten wir mindestens 21 kompromittierte Webseiten zuordnen. Einige davon stechen besonders heraus. Zu den kompromittierten Webseiten gehören beispielweise das Verteidigungsministerium von Kambodscha, das Außenministerium und das Ministerium für internationale Zusammenarbeit von Kambodscha sowie mehrere vietnamesische Zeitungen oder Blogs.

Nach eingehenden Analysen sind wir uns ziemlich sicher, dass die Watering Hole Kampagne der OceanLotus-Gruppe zuzuschreiben ist.[1] Die Cyber-Gang ist auch unter APT32[2] und APT-C-00 bekannt. Die E-Spionage-Truppe OceanLotus ist seit mindestens 2012 aktiv.[3] Ihre hauptsächlichen Ziele sind ausländische Regierungen und Dissidenten.

Die Kampagne scheint laut Volexity-Forschern eine Entwicklung des OceanLotus Framework B zu sein – ein Watering Hole Schema, dass sie im Jahr 2017 dokumentierten.[4] Die Cyber-Angreifer verbesserten ihr tückisches Framework, um Analysen zu verkomplizieren und zu verlangsamen. Daneben sind sie dazu übergegangen, öffentliche Schlüssel-Kryptografie zu benutzen, um AES-Sitzungsschlüssel auszutauschen. Diese verschlüsseln nachgelagerte Kommunikationen, was Sicherheitsprodukte letztendlich daran hindert, die eigentliche Payload aufzuspüren. Außerdem wechselten die OceanLotus-Entwickler von HTTP auf WebSocket, um die arglistigen Kommunikationen zu verstecken.

Die ESET-Forscher identifizierten 21 verschiedene Websiten, die von den Angreifern kontrolliert wurden. Abbildung 1 zeigt die Region, auf welche die Watering Hole Kampagne abzielt.

Kambodscha und Vietnam stehen im Fokus der Watering Hole Kampagne

Abbildung 1: Kambodscha und Vietnam stehen im Fokus der Watering Hole Kampagne

Die meisten kompromittierten Domains gehören Nachrichten-Webseiten oder zur kambodschanischen Regierung. Die nachstehende Tabelle listet die verschiedenen Opfer der OceanLotus-Kampagne. Wir haben alle bereits im Oktober benachrichtigt. Die meisten Webseiten beinhalten aber noch immer die bösartigen Skripte in ihren Webseiten. Wir empfehlen keinem, diese Webseiten zu besuchen.

Compromised domainDescription
baotgm[.]netMedia in Vietnamese (based in Arlington, Texas)
cnrp7[.]orgCambodia National Rescue Party
conggiaovietnam[.]netRelated to Religion – In Vietnamese
daichungvienvinhthanh[.]comRelated to Religion – In Vietnamese
danchimviet[.]infoMedia in Vietnamese
danviet[.]vnMedia in Vietnamese
danviethouston[.]comMedia in Vietnamese
fvpoc[.]orgFormer Vietnamese Prisoners of Conscience
gardencityclub[.]comGolf club in Phnom Penh, Kingdom of Cambodia
lienketqnhn[.]orgMedia in Vietnamese
mfaic.gov[.]khMinistry of Foreign Affairs and International Cooperation of Cambodia
mod.gov[.]khMinistry of Defense of Cambodia
mtgvinh[.]netRelated to Religion – In Vietnamese
nguoitieudung.com[.]vnMedia in Vietnamese
phnompenhpost[.]comCambodian newspaper in English
raovatcalitoday[.]comUnknown – In Vietnamese
thongtinchongphandong[.]comOpposition media in Vietnamese
tinkhongle[.]comMedia in Vietnamese
toithichdoc.blogspot[.]comBlog in Vietnamese
trieudaiviet[.]comUnknown – In Vietnamese
triviet[.]newsMedia in Vietnamese

Normalerweise attackieren Cyber-Angreifer durch eine Watering Hole Attacke solche Webseiten, die von ihren eigentlichen Zielen des Öfteren besucht werden. Dieses Mal kompromittierten sie außerdem Webseiten, die generell eine große Besucherzahl verzeichnen. Die folgende Tabelle zeigt den Alexa Rank der attackierten Webseiten zum Zeitpunkt der Erstellung des Artikels. Beispielsweise wurde die Webseite der Dan Viet Zeitung kompromittiert, welche die 116te am häufigsten besuchte Webseite in Vietnam ist.

DomainAlexa rank (global)Alexa rank (in the most popular country)
danviet[.]vn12,887116
phnompenhpost[.]com85,91018,880
nguoitieudung.com[.]vn261,8012,397
danchimviet[.]info287,852144,884
baotgm[.]net675,669119,737
toithichdoc.blogspot[.]com700,47011,532
mfaic.gov[.]kh978,1652,149
conggiaovietnam[.]net1,040,54815,368
thongtinchongphandong[.]com1,134,69121,575
tinkhongle[.]com1,301,72215,224
daichungvienvinhthanh[.]com1,778,41823,428
triviet[.]news2,767,289Not available
mod.gov[.]kh4,247,6493,719
raovatcalitoday[.]com8,180,358Not available
cnrp7[.]org8,411,693Not available
mtgvinh[.]net8,415,468Not available
danviethouston[.]com8,777,564Not available
lienketqnhn[.]org16,109,635Not available
gardencityclub[.]com16,109,635Not available
trieudaiviet[.]com16,969,048Not available
fvpoc[.]orgNot availableNot available

Analyse der OceanLotus-Kampagne

Der Modus Operandi bei allen kompromittierten Webseiten gestaltet sich ähnlich. Die Angreifer fügen eines kleines Stück JavaScript-Code in die Index-Seite oder in eine JavaScript-File auf demselben Server hinzu. Der leicht verschleierte untenstehende Code lädt dann ein anderes Script von einem C&C-Server der OceanLotus-Angreifer. Beispielsweise der in  https://www.mfaic.gov[.]kh/wp-content/themes/ministry-of-foreign-affair/slick/slick.min.js hinzugefügte Code soll die folgende Datei laden: https://weblink.selfip[.]info/images/cdn.js?from=maxcdn.

Abbildung 2 – Das Stück JavaScript Code, das beispielsweise zu mfaic.gov[.]kh hinzugefügt wurde

Um nicht enttarnt zu werden, ergriffen die OceanLotus-Entwickler folgende Maßnahmen:

  • Sie verschleiern die Skripts, um eine statische Extraktion der endgültigen URL zu verhindern.
  • Die URL sieht aus wie eine echte JavaScript-Bibliothek, die auch von der Website verwendet wird.
  • Sie verwenden eine andere Domain und einen unterschiedlichen URI für jede gefährdete Website.
  • Das Skript unterscheidet sich je nach kompromittierter Webseite. Der folgende Code ist das Skript, das in eine andere gefährdete Website eingefügt wird:

Abbildung 3 – Ein weiteres Stück JavaScript wurde zielgerichtet in eine Webseite eingefügt

First Stage Script

Je nach IP-Adresse des Webseiten-Besuchers übergibt der First Stage Server – beispielsweise weblink.selfip[.]info for mfaic.gov[.]kh – entweder ein Köder-Skript (zufällige legitime JavaScript-Bibliothek) oder das First Stage Script (SHA-1: 2194271C7991D60AE82436129D7F25C0A689050A). Nicht alle Server vollziehen den Location-Check. Bei Aktivierung übergeben die Server allerding nur an Webseiten-Besucher aus Vietnam oder Kambodscha das schädliche JavaScript.

Das First Stage Script wird mehrere Checks vollziehen, um einer Entdeckung zu entgehen (siehe Abbildung 4).

Abbildung 4 – First Stage JavaScript Payload

Das Skript wartet, bis das Opfer auf der Webseite blättert. Es überprüft auch die Auflösung des Fensters und ob Firebug, eine Browsererweiterung zur Analyse von Webseiten, aktiviert ist. Wenn eine der Prüfungen fehlschlägt, wird die Code-Ausführung abgebrochen.

Wenn alles funktioniert, dekodiert der Code die C&C-Domain mit Hilfe eines maßgeschneiderten Algorithmus. Beispielsweise ergibt 3B37371M1B1B382R332V1A382W36392W2T362T1A322T38 die Domain: wss://tcog.thruhere[.]net. Für jede First Stage Domain registrierten die Angreifer auch eine andere Second Stage Domain, die jeweils auf einem anderen Server gehostet wurde. Der Code in Abbildung 5 entspricht der Entschlüsselungsfunktion (Python).

Abbildung 5 – Python Code um C&C-server zu entschlüsseln

Sobald die C&C-Adresse entziffert wurde, sendet das Skript einen einzigartigen String, bestehend aus 15 Ziffern, um darauf das Second Stage Script zu empfangen und auszuführen. Die gesamte Kommunikation erfolgt über WebSocket via SSL. Es ermöglicht eine Vollduplexkommunikation zwischen Client und Server. Das bedeutet, dass ein Server, sobald der Client eine Verbindung hergestellt hat, Daten an den Client senden kann, auch wenn der Client keine Anforderung verschickte. OceanLotus setzt in der Watering Hole Kampagne wahrscheinlich aus Gründen der Tarnung auf WebSocket.

Second Stage Script

Das Second Stage Script erweckt den Eindruck eines Aufklärungsskripts. Die OceanLotus-Entwickler verwendeten Valves Fingerprintjs2-Biblothek, welche auch auf Github zu finden ist. Diese modifizierten sie leicht, um Netzwerkkommunikation und benutzerdefiniertes Reporting hinzuzufügen.

Abbildung 6 beschreibt den Flow der Second Stage Payload. Alle Kommunikationen finden über die in Stage 1 geöffnete WebSocket-Session statt.

Flow der Second Stage Payload

Abbildung 6: Flow der Second Stage Payload

Die Kommunikation ist durch einen AES Session Key gesichert, wobei dieser vom Server generiert wird. Durch die Verwendung eines RSA 1024-bit Public Keys ist es nicht möglich, die Kommunikation zwischen Client und Server zu entschlüsseln.

Im Vergleich zu den Vorgängern des Watering Hole Frameworks ist es für Verteidiger dieses Mal viel schwieriger, da die über das Netzwerk gesendeten Daten nicht erkannt und dann entschlüsselt werden können. Der vom Server gesendete Public Key ist allerdings immer derselbe und steht im Abschnitt IoCs zur Verfügung.

Das Aufklärungsskript erstellt einen Bericht – ähnlich dem unten gezeigten – und sendet ihn an den C&C-Server aus der Second Stage.

Abbildung 7 – Fingerprint-Bericht

Der Bericht ist nahezu mit dem identisch, der vom OceanLotus Framework B generiert wird. Letzteres dokumentierten die Volexity Researcher im Jahr 2017. Die verschiedenen Abschnitte gleichen sich und beinhalten sogar dieselben Tippfehler. Aufgrund der Ähnlichkeiten und der Lage der Ziele sind wir davon überzeugt, dass es sich bei der Kampagne um OceanLotus handelt.

Der erstellte Bericht enthält detaillierte Informationen über den Browser des Opfers und zu besuchten Webseiten: Den User-Agent, den HTTP-Referer, die lokale und externe IP-Adresse, die Browser Plugins und die konfigurierten Spracheinstellungen.

Außerdem gibt es zwei eindeutige “Bezeichner“ für jeden Rechner, als client_zuuid und client_uuid bezeichnet. Sie dienen wahrscheinlich der User-Identifizierung und der Verfolgung über Webseiten hinweg. Diese “Bezeichner“ waren in der Version 2017 des Frameworks bereits vorhanden, und client_uuid wurde auf ähnliche Weise berechnet.

Client_zuuid ist die Verkettung der verschiedenen in navigator.mediaDevices.enumerateDevices enthaltenen deviceId-Werte. Die Geräte sind externe Geräte, auf die der Browser zugreifen kann, z. B. Kameras oder Mikrofone. Daher sollte dieser Wert für einen bestimmten User bei verschiedenen Webseiten-Besuchen auf demselben Computer gleich sein.

Das client_uuid ist ein MD5-Hash einiger Fingerabdruckinformationen, die durch fingerprintjs2 extrahiert werden. Zu den gesammelten Informationen gehören der Browser User-Agent, die Sprache, die Zeitzone, die Browser-Plugins und die im Browser verfügbaren Schriftarten. Auch diese Werte sollten bei allen Webseitenaufrufen identisch sein, es sei denn, der Benutzer aktualisiert beispielsweise den Browser oder verwendet ein anderes Gerät.

Letztendlich kann der Server zusätzlichen JavaScript-Code an den betroffenen Computer senden, möglicherweise die tatsächliche Payload. Aufgrund der Verwendung eines AES-Sitzungsschlüssels zur Kommunikationsverschlüsselung konnten wir leider keine Beispiele für von den Angreifern gesendete Payloads „in freier Wildbahn“ identifizieren. Darüber hinaus werden nur bestimmte Ziele mit der eigentlichen Payload versorgt.

Daher konnten wir die Payload nicht auf Test-Rechnern analysieren. Früheren Berichten zufolge zielen die OceanLotus Watering Hole Kampagnen darauf ab, Informationen von Opfern zu ergaunern (Phishing). Zum Beispiel berichtete Volexity, dass den Usern ein Popup angezeigt wurde, in dem der OAuth-Zugriff auf das Google-Konto des Opfers für eine OceanLotus-Google-App genehmigt werden sollte. Mit dieser Technik können Angreifer auf die Kontakte und E-Mails der Opfer zugreifen.

Netzwerkinfrastruktur

Um bestmöglich getarnt zu sein, registrierten die OceanLotus-Operatoren jeweils eine First und eine Second Stage Domain pro kompromittierter Webseite. Jede Domain ist auf einem anderen Server gehostet und besitzt eine individuelle IP-Adresse. Insgesamt hat die Gruppe mindestens 50 Domains und 50 Server für die Kampagne registriert.

Viele der First Stage Domains wurden durch kostenfreie Domain Name Services registriert, die meisten Second Stage Domains dagegen entgeltlich. Darunter befinden sich Webseiten, die sonst legitime Seiten nachahmen. In Tabelle3 sind einige davon aufgelistet.

C&C domainLegitimate domain
cdn-ampproject[.]comcdn.ampproject.com
bootstraplink [.]comgetbootstrap.com
sskimresources[.]coms.skimresources.com
widgets-wp[.]comwidgets.wp.com

Die Anzahl der verwendeten Domains und deren Ähnlichkeit mit legitimen Webseiten machen eine Erkennung bzw. Enttarnung schwieriger, wenn man nur auf den Network Traffic blickt.

Fazit

Obwohl die OceanLotus-Gruppe unter Beobachtung vieler Cyber-Forscher steht, setzt sie ihre Aktivitäten gegen Ziele in Südostasien unbeeindruckt fort. Regelmäßig verbessern sie ihre Tools, wie zum Beispiel ihr Watering Hole Framework oder ihre Windows- oder MacOS-Malware. Das Watering Hole Framework hat die bislang höchste bekannte Entwicklungsstufe erreicht. Das ist nur eine weitere Erinnerung daran, dass APT-Gruppen nach wie vor genau beobachtet werden sollten.

Um die Anzahl an potentiellen Opfern zu minimieren, haben wir alle Webseiten-Betreiber der kompromittierten Seiten informiert, damit sie die schädlichen JavaScripts entfernen. Leider zeigten sich einige nicht sehr beeindruckt und haben bis dato noch nicht gehandelt.

ESET-Forscher werden die Entwicklung des OceanLotus-Toolsets weiterhin verfolgen. IoCs sind auch auf GitHub zu finden. Fragen und Samples bitte an folgende Mail-Adresse senden: threatintel@eset.com

References

[1]         ESET Research, „OceanLotus: Old techniques, new backdoor,“ 03 2018. [Online]. Available: https://www.welivesecurity.com/wp-content/uploads/2018/03/ESET_OceanLotus.pdf.

[2]         N. Carr, „Cyber Espionage is Alive and Well: APT32 and the Threat to Global Corporations,“ FireEye, 14 05 2017. [Online]. Available: https://www.fireeye.com/blog/threat-research/2017/05/cyber-espionage-apt32.html.

[3]         Sky Eye Lab, „OceanLotus APT Report Summary,“ 29 05 2015. [Online]. Available: http://blogs.360.cn/post/oceanlotus-apt.html.

[4]         S. K. S. A. Dave Lassalle, „OceanLotus Blossoms: Mass Digital Surveillance and Attacks Targeting ASEAN, Asian Nations, the Media, Human Rights Groups, and Civil Society,“ Volexity, 06 11 2017. [Online]. Available: https://www.volexity.com/blog/2017/11/06/oceanlotus-blossoms-mass-digital-surveillance-and-exploitation-of-asean-nations-the-media-human-rights-and-civil-society/.

Indicators of Compromise (IoCs)

Files

DescriptionSHA-1SHA-256Detection name
First stage script2194271C7991D60AE82436129D7F25C0A689050A1EDA0DE280713470878C399D3FB6C331BA0FADD0BD9802ED98AE06218A17F3F7JS/Agent.NYQ
Second stage script996D0AC930D2CDB16EF96EDC27D9D1AFC2D89CA88B824BE52DE7A8723124BAD5A45664C574D6E905F300C35719F1E6988887BD62JS/Agent.NYR

Network IoCs

DescriptionSHA-1SHA-256Detection name
First stage script2194271C7991D60AE82436129D7F25C0A689050A1EDA0DE280713470878C399D3FB6C331BA0FADD0BD9802ED98AE06218A17F3F7JS/Agent.NYQ
Second stage script996D0AC930D2CDB16EF96EDC27D9D1AFC2D89CA88B824BE52DE7A8723124BAD5A45664C574D6E905F300C35719F1E6988887BD62JS/Agent.NYR

RSA Public Key sent by the server

—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI8O2kXpKec4MBVeF2g86GtT2X

/ABJB2M+urEvxJStRuL/+u/a9oJ6XL4JTFceYqJiSsXvwD/wDfgI00zCdmJ7xgw+

rpGyuSntLH2Ox5oVxTTUQB791WJByDjtKXYBHpIBrmePG1EcnTlfBhgHhpAeZEao

hEXZ94it73j02h+JtQIDAQAB

—–END PUBLIC KEY—–

Hier können Sie mitdiskutieren