ESET-Forscher haben eine bisher unbekannte Malware-Familie entdeckt, die individuell angepasste und gut gestaltete Module verwendet und auf Linux-Betriebssysteme mit abzielt. Die Module, der von uns FontOnLake genannten Malware-Familie, werden kontinuierlich weiterentwickelt und erlauben den Angreifern Fernzugriff, das Sammeln von Anmeldeinformationen und sie dienen als Proxy-Server. In diesem Blogpost fassen wir die in unserem Whitepaper veröffentlichten Analyseergebnisse zusammen.
Um Daten (z.B. SSH-Anmeldeinformationen) zu sammeln oder andere bösartige Aktivitäten durchzuführen, nutzt diese Malware-Familie modifizierte legitime Binärdateien, die so angepasst sind, dass sie weitere Komponenten laden. Um seine Existenz zu verbergen, wird FontOnLake immer von einem Rootkit begleitet. Diese Binärdateien wie cat, kill oder sshd werden häufig auf Linux-Systemen verwendet und können zusätzlich als Persistenzmechanismus fungieren.
Die heimlichtuerische Natur der FontOnLake-Tools in Kombination mit dem fortschrittlichem Design und der geringen Verbreitung legen nahe, dass sie bei gezielten Angriffen verwendet werden.
Die erste bekannte Datei dieser Malware-Familie tauchte im vergangenen Mai auf VirusTotal auf und weitere Beispiele wurden dann im weiteren Verlauf des Jahres hochgeladen. Der Standort des C&C-Servers und die Länder, aus denen die Proben auf VirusTotal hochgeladen wurden, weisen möglicherweise darauf hin, dass Südostasien zu den Zielen gehört.
Wir glauben, dass die Betreiber von FontOnLake besonders vorsichtig sind, da fast alle beobachteten Samples einzigartige C&C-Server mit unterschiedlichen Nicht-Standard-Ports verwenden. Die Autoren verwenden hauptsächlich C/C++ und verschiedene Bibliotheken von Drittanbietern wie Boost, Poco, oder Protobuf. Keiner der C&C-Server, die in den auf VirusTotal hochgeladenen Beispielen verwendet wurden, war zum Zeitpunkt als dieser Artikel geschrieben wurde aktiv – was darauf hindeutet, dass sie aufgrund des Hochladens deaktiviert worden sein könnten.
Bekannte Komponenten von FontOnLake
Die derzeit bekannten Komponenten von FontOnLake lassen sich in die folgenden drei Gruppen einteilen, die miteinander interagieren:
- Trojanisierte Anwendungen – modifizierte legitime Binärdateien, die angepasst wurden, um weitere Komponenten zu laden, Daten zu sammeln oder andere bösartige Aktivitäten durchzuführen.
- Backdoors – User-Mode-Komponenten, die als Hauptkommunikationspunkt für die Hintermänner dienen.
- Rootkits – Kernel-Modus-Komponenten, die ihre Anwesenheit meist verbergen und verschleiern, bei Updates helfen oder Fallback-Backdoors bereitstellen.
Trojanisierte Anwendungen
Wir haben mehrere trojanisierte Anwendungen entdeckt, die hauptsächlich dazu verwendet werden, um angepasste Backdoor- oder Rootkit-Module zu laden. Darüber hinaus können sie auch sensible Daten sammeln. Patches der Anwendungen werden höchstwahrscheinlich auf Quellcodeebene angewendet, was darauf hindeutet, dass die Anwendungen kompiliert wurden und die ursprünglichen Anwendungen ersetzt wurden.
Alle trojanisierten Dateien sind Standard-Linux-Dienstprogramme und dienen jeweils als Persistenzmethode, da sie normalerweise beim Systemstart ausgeführt werden. Der ursprüngliche Weg, auf dem diese trojanisierten Anwendungen zu ihren Opfern gelangen, ist nicht bekannt.
Die Kommunikation einer trojanisierten Anwendung mit ihrem Rootkit läuft über eine virtuelle Datei, die vom Rootkit erstellt und verwaltet wird. Wie in Abbildung 1 dargestellt, können Daten aus der/in die virtuelle Datei gelesen/geschrieben und auf Anfrage der Betreiber mit ihrer Backdoor-Komponente exportiert werden.
Hintertüren
Die drei verschiedenen Backdoors, die wir entdeckt haben, sind in C++ geschrieben und alle verwenden, wenn auch auf leicht unterschiedliche Weise, dieselbe Asio-Bibliothek von Boost für asynchrone Netzwerke und Low-Level-I/O. Poco , Protobuf und Funktionen von STL wie smarte Pointer werden ebenfalls verwendet. Was bei Malware selten ist, ist die Tatsache, dass diese Hintertüren auch eine Reihe von Software-Designmustern aufweisen.
Die Funktionalität, die sie alle gemeinsam haben, besteht darin, dass jede Backdoor die gesammelten Anmeldeinformationen und seinen Bash-Befehlsverlauf in seinen C&C exfiltriert.
In Anbetracht einiger überlappender Funktionen werden diese verschiedenen Hintertüren höchstwahrscheinlich nicht zusammen auf einem kompromittierten System verwendet.
Alle Hintertüren verwenden zusätzlich benutzerdefinierte Heartbeat-Befehle, die regelmäßig gesendet und empfangen werden, um die Verbindung aufrechtzuerhalten.
Die Gesamtfunktionalität dieser Hintertüren besteht aus den folgenden Methoden:
- Exfiltrieren der gesammelten Daten
- Erstellung einer Brücke zwischen einem benutzerdefinierten ssh-Server, der lokal ausgeführt wird, und seinem C&C-Server
- Manipulieren von Dateien (z. B. Hochladen/Herunterladen, Erstellen/Löschen, Verzeichnisauflistung, Ändern von Attributen usw.)
- Als Proxy-Server fungieren
- Ausführen beliebiger Shell-Befehle und Python-Skripte
Rootkit
Wir entdeckten in jeder der drei Backdoors zwei geringfügig unterschiedliche Versionen des Rootkits, die jeweils nur einzeln verwendet wurden. Es gibt erhebliche Unterschiede zwischen diesen beiden Rootkits, allerdings überschneiden sich bestimmte Aspekte von ihnen. Obwohl die Rootkit-Versionen auf dem Open-Source-Projekt suterusu basieren, enthalten sie einige ihrer exklusiven, individuellen Techniken.
Die Funktionen der beiden von uns entdeckten Versionen des Rootkits umfassen zusammengenommen:
- Verstecken von Prozessen
- Verstecken von Dateien
- Sich selbst verstecken
- Netzwerkverbindungen verbergen
- Weitergabe der gesammelten Anmeldeinformationen an seine Backdoor
- Portweiterleitung durchführen
- Empfang von magischen Paketen (Magische Pakete sind speziell gestaltete Pakete, die das Rootkit anweisen können, eine weitere Backdoor herunterzuladen und auszuführen)
Nach unserer Entdeckung und noch während der Fertigstellung unseres Whitepapers zum Thema veröffentlichten Anbieter wie Tencent Security Response Center, Avast und Lacework Labs ihre Forschungsergebnisse zu anscheinend der gleichen Malware.
Alle bekannten Komponenten von FontOnLake werden von ESET-Produkten als Linux/FontOnLake erkannt. Unternehmen oder Einzelpersonen, die ihre Linux-Endpunkte oder -Server vor dieser Bedrohung schützen möchten, sollten ein mehrschichtiges Sicherheitsprodukt und eine aktualisierte Version ihrer Linux-Distribution verwenden. Einige der von uns analysierten Malware-Samples wurden speziell für CentOS und Debian erstellt.
In der Vergangenheit haben wir eine Operation beschrieben, die bestimmte Verhaltensmuster mit FontOnLake teilte; ihre Ausmaße und seine Wirkung waren jedoch viel größer. Wir haben sie Operation Windigo getauft und Sie finden weitere Informationen dazu in diesem Whitepaper und diesem Blogpost.
Weitere technische Details zu FontOnLake finden Sie in unserem umfangreichen Whitepaper.
IoCs
Samples
SHA-1 | Description | Detection name |
---|---|---|
1F52DB8E3FC3040C017928F5FFD99D9FA4757BF8 | Trojanized cat | Linux/FontOnLake |
771340752985DD8E84CF3843C9843EF7A76A39E7 | Trojanized kill | #rowspan# |
27E868C0505144F0708170DF701D7C1AE8E1FAEA | Trojanized sftp | #rowspan# |
45E94ABEDAD8C0044A43FF6D72A5C44C6ABD9378 | Trojanized sshd | #rowspan# |
1829B0E34807765F2B254EA5514D7BB587AECA3F | Custom sshd | #rowspan# |
8D6ACA824D1A717AE908669E356E2D4BB6F857B0 | Custom sshd | #rowspan# |
38B09D690FAFE81E964CBD45EC7CF20DCB296B4D | Backdoor 1 variant 1 | #rowspan# |
56556A53741111C04853A5E84744807EEADFF63A | Backdoor 1 variant 2 | #rowspan# |
FE26CB98AA1416A8B1F6CED4AC1B5400517257B2 | Backdoor 1 variant 3 | #rowspan# |
D4E0E38EC69CBB71475D8A22EDB428C3E955A5EA | Backdoor 1 variant 4 | #rowspan# |
204046B3279B487863738DDB17CBB6718AF2A83A | Backdoor 2 variant 1 | #rowspan# |
9C803D1E39F335F213F367A84D3DF6150E5FE172 | Backdoor 2 variant 2 | #rowspan# |
BFCC4E6628B63C92BC46219937EA7582EA6FBB41 | Backdoor 2 variant 3 | #rowspan# |
515CFB5CB760D3A1DA31E9F906EA7F84F17C5136 | Backdoor 3 variant 4 | #rowspan# |
A9ED0837E3AF698906B229CA28B988010BCD5DC1 | Backdoor 3 variant 5 | #rowspan# |
56CB85675FE7A7896F0AA5365FF391AC376D9953 | Rootkit 1 version 1 | #rowspan# |
72C9C5CE50A38D0A2B9CEF6ADEAB1008BFF12496 | Rootkit 1 version 2 | #rowspan# |
B439A503D68AD7164E0F32B03243A593312040F8 | Rootkit 1 version 3 | #rowspan# |
E7BF0A35C2CD79A658615E312D35BBCFF9782672 | Rootkit 1 version 4 | #rowspan# |
56580E7BA6BF26D878C538985A6DC62CA094CD04 | Rootkit 1version 5 | #rowspan# |
49D4E5FCD3A3018A88F329AE47EF4C87C6A2D27A | Rootkit 1 version 5 | #rowspan# |
74D44C2949DA7D5164ADEC78801733680DA8C110 | Rootkit 2 version 1 | #rowspan# |
74D755E8566340A752B1DB603EF468253ADAB6BD | Rootkit 2 version 2 | #rowspan# |
E20F87497023E3454B5B1A22FE6C5A5501EAE2CB | Rootkit 2 version 3 | #rowspan# |
6F43C598CD9E63F550FF4E6EF51500E47D0211F3 | inject.so | #rowspan# |
C&Cs
From samples:
47.107.60[.]212
47.112.197[.]119
156.238.111[.]174
172.96.231[.]69
hm2.yrnykx[.]com
ywbgrcrupasdiqxknwgceatlnbvmezti[.]com
yhgrffndvzbtoilmundkmvbaxrjtqsew[.]com
wcmbqxzeuopnvyfmhkstaretfciywdrl[.]name
ruciplbrxwjscyhtapvlfskoqqgnxevw[.]name
pdjwebrfgdyzljmwtxcoyomapxtzchvn[.]com
nfcomizsdseqiomzqrxwvtprxbljkpgd[.]name
hkxpqdtgsucylodaejmzmtnkpfvojabe[.]com
etzndtcvqvyxajpcgwkzsoweaubilflh[.]com
esnoptdkkiirzewlpgmccbwuynvxjumf[.]name
ekubhtlgnjndrmjbsqitdvvewcgzpacy[.]name
From internet-wide scan:
27.102.130[.]63
Filenames
/lib/modules/%VARIABLE%/kernel/drivers/input/misc/ati_remote3.ko
/etc/sysconfig/modules/ati_remote3.modules
/tmp/.tmp_%RANDOM%
Virtual filenames
/proc/.dot3
/proc/.inl
MITRE ATT&CK techniques
This table was built using version 9 of the ATT&CK framework.
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1078 | Valid Accounts | FontOnLake can collect at least ssh credentials. |
Execution | T1059.004 | Command and Scripting Interpreter: Unix Shell | FontOnLake enables execution of Unix Shell commands. |
T1059.006 | Command and Scripting Interpreter: Python | FontOnLake enables execution of arbitrary Python scripts. | |
T1106 | Native API | FontOnLake uses fork() to create additional processes such as sshd. | |
T1204 | User Execution | FontOnLake trojanizes standard tools such as cat to execute itself. | |
Persistence | T1547.006 | Boot or Logon Autostart Execution: Kernel Modules and Extensions | One of FontOnLake’s rootkits can be executed with a start-up script. |
T1037 | Boot or Logon Initialization Scripts | FontOnLake creates a system start-up script ati_remote3.modules. | |
T1554 | Compromise Client Software Binary | FontOnLake modifies several standard binaries to achieve persistence. | |
Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Some backdoors of FontOnLake can decrypt AES-encrypted and serialized communication and base64 decode encrypted C&C address. |
T1222.002 | File and Directory Permissions Modification: Linux and Mac File and Directory Permissions Modification | FontOnLake’s backdoor can change the permissions of the file it wants to execute. | |
T1564 | Hide Artifacts | FontOnLake hides its connections and processes with rootkits. | |
T1564.001 | Hide Artifacts: Hidden Files and Directories | FontOnLake hides its files with rootkits. | |
T1027 | Obfuscated Files or Information | FontOnLake packs its executables with UPX. | |
T1014 | Rootkit | FontOnLake uses rootkits to hide the presence of its processes, files, network connections and drivers. | |
Credential Access | T1556 | Modify Authentication Process | FontOnLake modifies sshd to collect credentials. |
Discovery | T1083 | File and Directory Discovery | One of FontOnLake’s backdoors can list files and directories. |
T1082 | System Information Discovery | FontOnLake can collect system information from the victim’s machine. | |
Lateral Movement | T1021.004 | Remote Services: SSH | FontOnLake collects ssh credentials and most probably intends to use them for lateral movement. |
Command and Control | T1090 | Proxy | FontOnLake can serve as a proxy. |
T1071.001 | Application Layer Protocol: Web Protocols | FontOnLake acquires additional C&C servers over HTTP. | |
T1071.002 | Application Layer Protocol: File Transfer Protocols | FontOnLake can download additional Python files to be executed over FTP. | |
T1132.001 | Data Encoding: Standard Encoding | FontOnLake uses base64 to encode HTTPS responses. | |
T1568 | Dynamic Resolution | FontOnLake can use HTTP to download resources that contain an IP address and port number pair to connect to and acquire its C&C. It can use dynamic DNS resolution to construct and resolve to a randomly chosen domain. | |
T1573.001 | Encrypted Channel: Symmetric Cryptography | FontOnLake uses AES to encrypt communication with its C&C. | |
T1008 | Fallback Channels | FontOnLake can use dynamic DNS resolution to construct and resolve to a randomly chosen domain. One of its rootkits also listens for specially crafted packets, which instruct it to download and execute additional files. It also both connects to a C&C and accepts connections on all interfaces. | |
T1095 | Non-Application Layer Protocol | FontOnLake uses TCP for communication with its C&C. | |
T1571 | Non-Standard Port | Almost every sample of FontOnLake uses a unique non-standard port. | |
Exfiltration | T1041 | Exfiltration Over C2 Channel | FontOnLake uses its C&C to exfiltrate collected data. |