Linux/Shishiga Malware verwendet Lua-Skriptsprache

Linux/Shishiga Malware verwendet Lua-Skriptsprache

Laut Analyse von ESET hebt sich Linux/Shishiga durch die Verwendung des BitTorrent-Protokolls und der Lua-Module von anderen Malware-Arten ab.

Laut Analyse von ESET hebt sich Linux/Shishiga durch die Verwendung des BitTorrent-Protokolls und der Lua-Module von anderen Malware-Arten ab.

Unter allen Linux Samples, die tagtäglich bei ESET eintreffen, fiel eines besonders auf. Es wurde lediglich von Dr.Web als Linux.LuaBot erkannt. ESETs Sicherheitsforscher hielten das für verdächtig, da die Erkennungsraten für die LuaBot Familie im Allgemeinen sehr hoch waren. Bei einer genaueren Analyse stellte sich heraus, dass der Bot tatsächlich in Lua geschrieben wurde. ESET entdeckte eine neue Malware-Familie, die nicht mit der bisherigen LuaBot-Malware im Zusammenhang steht. Die Forscher gaben der Malware-Familie einen neuen Namen: Linux/Shishiga. Die Malware verwendet vier verschiedene Protokolle (SSH – Telnet – HTTP – BitTorrent) und die Lua-Skriptsprache für die Modularität.

Wo begegnet man Linux/Shishiga?

Linux/Shishiga zielt auf GNU/Linux Systeme ab. Der Weg der Kompromittierung ist relativ geläufig: Durch Bruteforcing wird versucht, schwache Login-Daten mit Hilfe einer Passwortliste zu knacken. Man kann gewisse Parallelen zu Linux/Moose erkennen – nun allerdings mit dem Zusatz, dass auch SSH-Anmeldeinformationen mittels Bruteforcing angegriffen werden.

Die vollständige Liste mit versuchten Anmeldeinformationen sah bei der Erstellung des Artikels wie folgt aus:

bftelnet.lua
bfssh.lua

ESET sind unterschiedliche Binärdateien für Linux/Shishiga aufgefallen. Diese sind für verschiedene Architekturen wie MIPS (Big- und Little-Endian), ARM (armv4l), i686 und PowerPC gedacht. Die aufgezählten Architekturen sind besonders in IoT-Geräten zu finden. Es ist außerdem denkbar, dass auch SPARC, SH-4 oder m68k Architekturen unterstützt werden könnten. Dazu aber später mehr.

Fähigkeiten von Linux/Shishiga

Linux/Shishiga ist eine mit UPX 3.91 (Ultimate Packer for Executables) gepackte Binärdatei. Das UPX-Tool wird allerdings Probleme beim Entpacken der Binärdatei haben, da die Linux/Shishiga Malware Daten am Ende der gepackten Datei hinzufügt hat.

Nach dem Entpacken stellte ESET fest, dass die Malware statisch mit der Lua-Laufzeitbibliothek verknüpft und von allen Symbolen befreit ist.

Einmal ausgeführt, initialisiert die Binärdatei das Malware Lua-Modul mit den folgenden Methoden:

Malware methods

Die getmods-Methode gibt den Archiv-Blob zurück. Dann wird hartcodierter Lua-Code (malware.lua) über die Funktionen luaL_loadstring und lua_pcall ausgeführt. Normalerweise ist der Lua-Code recht schlicht. Wir haben den Code hier einmal ohne irgendwelche Veränderungen unsererseits aufgelistet:

malware.lua
(1) Öffnet die heruntergeladene Malware-Datei von /proc/self/exe und gibt den Inhalt zurück;
(2) Ruft das zlib-Archiv über die getmods-Methode auf, dekomprimiert es, analysiert es mit Hilfe von Tags und speichert es in einem Lua-Array;
(3) Aufruf des main.lua Moduls;

Es gibt eine ausführliche Liste aller Lua-Skripte im IoC-Bereich am Ende dieses Artikels. Die meisten von ihnen besitzen selbsterklärende Dateinamen. Wir wollen dennoch auf einige von ihnen kurz eingehen.

callhome.lua

  • Abrufen der Konfigurationsdatei server.bt oder server von config.lua;
  • Wenn der aktuelle Standardserver nicht erreicht wird → Wechsel zu anderem Server;
  • Sendet Dateien (Berichte oder Konten, beide JSON formatiert);
  • Aufgaben werden aus der vom C&C-Server abgerufenen Aufgabenliste ausgeführt.

bfssh.lua / bftelnet.lua

  • Modul, um SSH- und Telnet-Logins Bruteforcing zu unterziehen;
  • Überprüft, ob der Befehl echo -en "\\ x31 \\ x33 \\ x33 \\ x37"1337 ausgibt; wenn nicht, abbrechen; sonst fortfahren;
  • Die Gerätearchitektur wird aus der Datei /bin/ls bestimmt, indem cat /bin/ls ausgeführt und der ELF-Header analysiert wird, siehe unten;
  • verbreitet die Malware (*.lm und *.dm Dateien) entsprechend der Gerätearchitektur;
  • speichert erfolgreiche Anmeldeinformationen;

Der Architekturprüfcode lautet wie folgt:

bfssh.lua, getArchELF method
(1) Jede ELF-Datei muss mit \x7fELF starten
(2) ftype , die  e_type (ELF Dateityp = ausführbare Programme, linkbare Module und Objektdateien) darstellen, werden nicht gebraucht.
(3) bits stellt e_ident[EI_CLASS] (32-bit or 64-bit) dar,

denc e_ident[EI_DATA] (Big- und Little-Endian),

und farch e_machine im ELF-Header

bfssh.lua, getArchName method

(1) bits wird nicht verwendet
(2) Überprüft, ob Datei für MIPS Little Endian ist (e_machine == EM_MIPS und e_ident[EI_DATA] == ELFDATA2LSB)
(3) Prüft, ob Datei für Intel 80386 oder Intel 80860 oder AMD x86-64 ist (e_machine == EM_386 oder e_machine == EM_860 oder e_machine == EM_X86_64)

config.lua

  • enthält den publicKey, um die Signatur der Binärdatei (.lm oder .dm) zu überprüfen;
  • enthält bootstrap nodes list;
  • enthält Dateinamen von .bt-Dateien, Portnummern von SOCKS und HTTP-Servern;
  • enthält die IP-Adresse des Servers (wahrscheinlich des C & C-Servers).

persist.lua

  • Persistenzmethode, abhängig vom Nutzerrecht (Root oder User)

scanner.lua

  • verwendet, um zufällige /16-Netzwerke zu generieren, die nicht local sind

worm.lua (Dieses Skript wurde in der neuesten Version von Linux/Shishiga entfernt)

  • ermöglicht das Scannen eines bestimmen Ports;
  • ermöglicht einen Upload;
  • bekommt Informationen vom neuen infizierten Server

Die folgenden Zeilen in der readme.lua dürften bei Russisch Sprechenden Aufmerksamkeit erzeugen:

Übersetzt:

Es scheint so, als ob sich der Malware-Entwickler von den letzten Versen des Titelsongs des Albums Everything goes according to plan von Jegor Letow hat beeinflussen lassen.

In den vergangenen Wochen hat ESET einige kleinere Änderungen beobachten können. Teilweise wurden einige Module umgeschrieben, Testmodule hinzugefügt oder redundante Dateien entfernt – insgesamt aber nichts, was besonders hervorgehoben werden müsste.

Während die Haupt-Binärdatei <architecture>.lm heißt, gelang es ESET aber auch, Binärdateien mit dem Namen <Architektur>.dm abzufangen. Dahinter verbirgt sich eine einfache Hintertür (Backdoor), die auf 0.0.0.0 (alle IPv4-Adressen) an Port 2015 lauscht. Eine kleine Namensänderung wurde in der Backdoor-Binary vorgenommen – man änderte dl in dm.

Linux/Shishiga Kommunikation

Linux/Shishiga kann durch die Module httpproto.lua, btloader.lua oder server.lua kommunizieren. Das Modul httpproto.lua verfügt über Funktionen, mit denen die angegebenen Daten codiert oder decodiert und HTTP-POST- und GET-Anfragen erstellt werden können. Der untere Quellcode zeigt den Prozess der Codierung von Daten.

httpproto.lua

btloader.lua verwendet das torrent.lua-Modul (ein Wrapper für BitTorrent-Funktionen), um Nodes in der Datei nodes.cfg zu speichern oder aus dieser zu laden. Außerdem empfängt es seine Konfigurationsinformationen von {server,update,script}.bt – Dateien (im Bencode-Format) und nutzt das BitTorrent Protokoll, um nach neuen Versionen der Dateien zu suchen. script.bt erlaubt das Ausführen eines Lua-Skripts. update.bt realisiert die Ausführung der .lm-Binärdatei. Im Folgenden finden sich Beispiele für dekodierte .bt-Dateien, die als Python-Wörterbücher angezeigt werden.

script.bt
(1) Signatur
(2) Public Key
update.bt
server.bt

Die Hauptfunktionalität des server.lua-Moduls ist einen HTTP-Server mit dem in config.lua definierten Port zu erstellen. Bei allen analysierten Samples ist das Port 8888.

Der Server antwortet nur auf /info und /upload -Anfragen. Unten ist eine (verschönerte) Version der Serverantwort auf den /info -Pfad. Alle hier aufgelisteten Dateien können ganz einfach vom kompromittierten Gerät heruntergeladen werden.

(1) Lua-Skripts
(2) Backdoor (alter Name: .dl)
(3) BitTorrent Skripts
(4) Malware Version
(5) Module-Lader

Das Abfragen des Roots am Port 8888 führt zu HTTP/1.0 404 OK und gilt als einfaches Indiz für eine Kompromittierung (IoC).

http.lua response function

Zum Zeitpunkt der Untersuchungen bat ESET das Censys-Team um einen umfangreichen Scan des Internets am TCP Port 8888. Sie fanden rund zehn IP-Adressen, welche die obige HTTP-Antwort ausgaben. Die dazugehörigen Geräte sind also alle potentiell kompromittiert.

Fazit

Auf den ersten Blick scheint Linux/Shishiga wie andere Malware zu sein, die sich durch das Ausnutzen schwacher Telnet- und SSH-Anmeldeinformationen ausbreitet. Aber die Verwendung des BitTorrent-Protokolls und der Lua-Module hebt sie von anderen ab. BitTorrent konnte schon im Mirai-inspirierten Wurm Hajime im vergangenen Jahr beobachtet werden. Wir vermuten, dass BitTorrent sich in Zukunft zunehmender Beliebtheit bei Malware-Entwicklern erfreuen dürfte.

Es ist durchaus möglich, dass sich Linux/Shishiga gerade erst entwickelt und noch weiterverbreitet. Die noch geringe Anzahl von Opfern, das konstante Hinzufügen, Entfernen und Ändern von Komponenten, Code-Kommentare und Debug-Informationen sprechen jedoch für sich.

Um zu verhindern, dass Linux/Shishiga und ähnliche Malware das eigene Linux-System kompromittiert, sollten Standard-Telnet- und SSH-Anmeldeinformationen unbedingt vermieden werden.

Wir danken dem Censys-Team für ihre Zusammenarbeit.

IoCs

C&C

93.117.137.35

SHA-1 hashes (.lm)
SHA-1 hashes (.dl)

Lua-Skript Dateinamen:
 
Dateien, die möglicherweise eine Kompromittierung anzeigen könnten:

und

Hier können Sie mitdiskutieren