Linux-Moose ist eine Malwarefamilie, die primär Linux-basierte Consumer-Router anvisiert, aber auch andere eingebettete Linux-Systeme infizieren kann. Die kompromittierten Geräte werden dazu verwendet, unverschlüsselten Netzwerktraffic auszuspähen und zum Botnet-Operator umzuleiten. In der Praxis wird diese Möglichkeit genutzt, um Cookies von bekannten sozialen Netzwerk - Seiten zu stehlen und arglistige Aktionen durchzuführen, wie das nicht-autorisierte Liken oder Teilen von Inhalten.

Im Mai 2015 veröffentlichte ESET ein Whitepaper über die Malware-Familie namens Linux-Moose. Nach der Publikation waren die C&C-Server down und wir hatten ihre Spur zunächst verloren. Einige Monate später, im September 2015, tauchte Linux-Moose wieder auf – mit einigen, wie zu erwartenden Neuerungen.

Im Laufe des vergangenen Jahres haben ESET und GoSecure ihre Fähigkeiten gebündelt, um weitere Forschungen an Linux-Moose durchzuführen. GoSecure untersuchte die Malware seitens der Social Media Fertigkeiten und beleuchteten einen unbekannten Markt, den sie "The Ego Market" tauften. Dieser Markt wird in einem Whitepaper von GoSecure hervorgehoben. Dieser Blogpost deckt die technischen Veränderungen zwischen den Moose-Varianten aus dem Whitepaper und den neuen von September 2015 auf.

Verstecken des C&C-Servers

In den neuen Varianten entdeckten wir in der Binary keine C&C-Server IP-Adresse. Dieser Umstand erweckte den Anschein, als ob der C&C-Operator unseren Bericht sehr sorgfältig gelesen hätte. Wahrscheinlich beschloss er darauf hin, die Dinge für uns etwas komplizierter zu machen. In der neuen Version ist die C&C-Server IP-Adresse als verschlüsseltes Argument einer Befehlszeile angegeben, wie das folgende Bild verdeutlicht:

C&C-Server verstecken Linux / Moose

Linux / Moose: C&C-Server verstecken

Mit dieser neuen Eigenschaft können wir die Samples nicht mehr ausführen. Jetzt müssen unsere Test Machines durch ein eingebettetes Gerät kompromittiert werden, welches die Bedrohung nach außen kommunizieren kann und auf diese Weise die C&C-Server IP-Adresse offenbart. Der aufmerksame Leser wird bemerkt haben, dass die IP-Adresse im 32-Bit integer Format angezeigt wird.

Der Gedanke, die IP-Adresse an dieser Stelle zu entschlüsseln, ist der folgende: Wenn die Binary alleine gefunden wird, ist sie nutzlos Es fehlt der Wert, der als Argument überliefert wird. Außerdem ergibt auch der Wert alleine keinen Sinn, ohne dass die Binary den richtigen Wert zum Entschlüsseln des Arguments hat. Der Wert ist mit einem statischen Wert XOR-verknüpft, wie der folgenden Decompiler Ausgabe zu entnehmen ist.

Decompiler Ausgabe Linux / Moose

Decompiler Ausgabe

Soweit wir wissen, ist der Wert über die letzten Monate konstant geblieben. Hier ist ein Auszug aus dem Phyton-Snippet zur Entschlüsselung des 32-bit integer Werts:

Entschlüsselung der C&C IP-Adresse Linux / Moose

Entschlüsselung der C&C IP-Adresse

Die Netzwerkkommunikation

Das Netzwerkprotokoll hat sich geändert. Gleich geblieben ist nur die Protokollbasis mit unterschiedlichen Layern. Hier ist ein kleiner Einblick aus einer Erfassung von zwei Linux-Moose Varianten. Bei der Betrachtung fällt ein Hauptunterschied auf: Das Protokoll änderte sich vom binary protocol zum ASCII printable protocol. In der unteren Abbildung kann man auf der linken Seite das alte und auf der rechten Seite das neue Netzwerkprotokoll sehen.

Unterschiede Netzwerkprotokoll Linux / Moose

Unterschiede der zwei Netzwerkprotokolle

In der alten Variante wurde die Konfiguration vom C&C-Server zur Malware gesendet. Sie beinhaltete verschiedene Felder. Dazu gehören Bitfelder, Felder für IP-Adressen, Whitelist oder Passwort Felder. Auch in der neuen Version sind die Felder noch vorhanden, aber in drei Schlüssel unterteilt. Der Operator benutzt Cookie: und Set-Cookie: HTTP-Headers, um die Konfigurations-Felder zu senden. Diese Konfiguration ist durch eine simple XOR-Schleife wie in der ersten Variante verschlüsselt. Zusätzlich ist sie noch kodiert, um in den HTTP-Headern ausgabefähig zu sein. Das geschieht, dank der folgenden Funktion:

Decompiler Ausgabe Linux / Moose

Decompiler Ausgabe

Die Schlüssel-Wert-Tabelle fast die Hauptkonfigurationen von Moose v2 zusammen:

Schlüssel Wert
PHPSESSID Hauptkonfiguration (local/external scan, sniffer, kill process)
LP Passwortliste
WL Whitelist

Der PHPSESSID – Schlüssel beinhaltet verschlüsselte Wert der Bitfelder. Das erlaubt bestimmte Features (local/external scan, sniffer, kill process) zu aktivieren bzw. zu deaktivieren. Der LP – Schlüssel besitzt die Passwortliste. Linux-Moose versucht sich immer noch über Telnet-Anmeldeinformationen zu verbreiten. Es gab eine große Veränderung der Passwortliste von rund 300 Anmeldungen und Passwörtern im Jahr 2015 im Vergleich zu rund 10 im Jahr 2016:

Passwortliste Linux / Moose

Passwortliste Linux-Moose

Der WL – Schlüssel beinhaltet die Whitelist. Die Liste wurde von 50 auf 10 IP-Adressen gekürzt. Die Adressen finden sich in der IoC-Sektion. Darüber hinaus hat die Malware immer noch die Möglichkeit, einen Proxy Service zu starten. Dazu wird TCP Port 20012 genutzt. Die vorhergehenden Varianten nutzten Port 10073. Die Proxy-Eigenschaft erlaubt, dass die IP-Adressen der Whitelist mit der Malware interagieren.

Schlussfolgerung

Die Entwickler von Linux-Moose haben eine Menge Arbeit in die Weiterentwicklung der Malware gesteckt. Verbessert wurde unter anderem die geheime C&C-Server-Kommunikation und das Netzwerkprotokoll. Mit diesen Handlungen wurden die Indicators of Compromise (IoCs), die ESET in einem Whitepaper 2015 beschrieb, vermieden. Die Neuerungen zeigen eine clevere Herangehensweise. Gleichgeblieben sind die irreführenden Spuren, wie die Fake-Domain www.challpok.cn oder Dateinamen die auf Bitcoin Miner oder DDoS-Malware hinweisen. Linux-Moose ist eine Bedrohung, die im Speicher ansässig ist. Bei einem Neustart des eingebetteten Linux-Systems, wird die Ausführung der Malware gestoppt.

Indicators of Compromise (IoC)

Hashes

version 0x1F (31)

c6edfa2bf916d374e60f1b5444be6dbbee099692
c9ca4820bb7be18f36b7bad8e3044b2d768a5db8
5b444f1ac312b4c24b6bde304f00a5772a6a19a4
f7574b3eb708bd018932511a8a3600d26f5e3be9

version 0x20 (32)

34802456d10efdf211a7d486f7108319e052cd17
0685cb1d72107de63fa1da52930322df04a72dbc
2876cad26d6dabdc0a9679bb8575f88d40ebd960
f94b6cc5aea170cee55a238eaa9339279fba962f
274ef5884cb256fd4edd7000392b0e326ddd2398
c3f0044ffa9d0bc950e9fd0f442c955b71a706b6
f3daea1d06b1313ec061d93c9af12d0fe746839a

version 0x21 (33)

7767c8317fb0bbf91924bddffe6a5e45069b0182
1caac933ae6ca326372f7e5dd9fff82652e22e34
5dea6c0c4300e432896038661db2f046c523ce35
e8dc272954d5889044e92793f0f637fe4d53bb91
0843239b3d0f62ae6c5784ba4589ef85329350fa
1d1d46c312045e17f8f4386adc740c1e7423a24a
d8b45a1114c5e0dbfa13be176723b2288ab12907

version 0x22 (34)

c35d6812913ef31c20404d9bbe96db813a764886

IP addresses

Primary C&C servers

192.3.8.218
192.3.8.219

Whitelist

155.133.18.64
178.19.111.181
151.80.8.2
151.80.8.19
151.80.8.30
62.210.6.34

Linux-Moose IoCs sind aktualisiert auch verfügbar unter ESETs Malware-IoC Github Repository.