Les chercheurs d'ESET ont découvert une famille de logiciels malveillants jusqu'alors inconnue qui utilise des modules personnalisés et bien conçus, ciblant les systèmes d'exploitation fonctionnant sous Linux. Les modules utilisés par cette famille de logiciels malveillants, que nous avons décidé de nommer FontOnLake, sont en constant développement et permettent d'accéder à distance aux opérateurs, de collecter des informations d'identification et de servir de serveur proxy. Dans ce billet de blog, nous résumons les résultats publiés dans leur intégralité dans notre white paper.
Pour collecter des données (par exemple des informations d'identification ssh) ou mener d'autres activités malveillantes, cette famille de logiciels malveillants utilise des binaires légitimes modifiés qui sont ajustés pour charger d'autres composants. En fait, pour dissimuler son existence, la présence de FontOnLake est toujours accompagnée d'un rootkit. Ces binaires tels que cat, kill ou sshd sont couramment utilisés sur les systèmes Linux et peuvent en outre servir de mécanisme de persistance.
La nature sournoise des outils de FontOnLake, combinée à une conception avancée et à une faible prévalence, suggère qu'ils sont utilisés dans des attaques ciblées.
Le premier fichier connu appartenant à cette famille de logiciels malveillants est apparu sur VirusTotal en mai dernier et d'autres échantillons ont été téléchargés tout au long de l'année. La localisation du serveur C&C et les pays à partir desquels les échantillons ont été téléchargés sur VirusTotal pourraient indiquer que l'Asie du Sud-Est fait partie de ses cibles.
Nous croyons que les opérateurs de FontOnLake sont particulièrement prudents, car presque tous les échantillons vus utilisent des serveurs C&C uniques avec des ports non standard variables. Les auteurs utilisent principalement C/C++ et diverses bibliothèques tierces telles que Boost, Poco, ou Protobuf.. Aucun des serveurs C&C utilisés dans les échantillons téléchargés sur VirusTotal n'était actif au moment de la rédaction du présent document, ce qui indique qu'ils ont pu être désactivés en raison du téléchargement.
Composants connus de FontOnLake
Les composants actuellement connus de FontOnLake peuvent être divisés en trois groupes suivants qui interagissent les uns avec les autres :
- Applications trojanisées - binaires légitimes modifiés qui sont ajustés pour charger d'autres composants, collecter des données ou mener d'autres activités malveillantes.
- Backdoors - composants en mode utilisateur servant de point de communication principal pour leurs opérateurs.
- Rootkits - composants en mode noyau qui dissimulent et déguisent leur présence, aident aux mises à jour ou fournissent des portes dérobées.
Applications trojanisées
Nous avons découvert plusieurs applications trojanisées ; elles sont principalement utilisées pour charger des modules de backdoor ou de rootkit personnalisés. En outre, elles peuvent également collecter des données sensibles. Les correctifs des applications sont très probablement appliqués au niveau du code source, ce qui indique que les applications ont dû être compilées et remplacer les applications originales.
Tous les fichiers trojanisés sont des utilitaires Linux standard et chacun d'entre eux sert de méthode de persistance car ils sont généralement exécutés au démarrage du système. On ne connaît pas la manière initiale dont ces applications trojanisées parviennent à leurs victimes.
La communication d'une application trojanisée avec son rootkit passe par un fichier virtuel, qui est créé et géré par le rootkit. Comme l'illustre la figure 1, les données peuvent être lues/écrites depuis/vers le fichier virtuel et exportées avec son composant backdoor à la demande de l'opérateur.
Portes dérobées
Les trois différentes backdoors que nous avons découvertes sont écrites en C++ et utilisent toutes, bien que de manière légèrement différente, la même bibliothèque Asio de Boost pour le réseau asynchrone et les E/S de bas niveau. Elles utilisent également Poco et Protobuf, ainsi que des fonctionnalités de la STL telles que les pointeurs intelligents. Fait rare pour les logiciels malveillants : ces portes dérobées comportent également un certain nombre de modèles de conception de logiciels.
La fonctionnalité qu'elles ont toutes en commun est que chacune exfiltre les informations d'identification collectées et l'historique de ses commandes bash vers son C&C.
Compte tenu du chevauchement de certaines fonctionnalités, il est fort probable que ces différentes portes dérobées ne soient pas utilisées ensemble sur un même système compromis.
Toutes les backdoors utilisent en outre des commandes de battement de cœur personnalisées envoyées et reçues périodiquement pour maintenir la connexion en vie.
La fonctionnalité globale de ces backdoors consiste en les méthodes suivantes :
- Exfiltration des données collectées.
- Création d'un pont entre un serveur ssh personnalisé fonctionnant localement et son C&C
- Manipulation de fichiers (par exemple, chargement/téléchargement, création/suppression, liste de répertoires, modification des attributs, etc.)
- Servir de proxy
- Exécution de commandes shell et de scripts python arbitraires.
Rootkit
Nous avons découvert deux versions marginalement différentes du rootkit, utilisées une seule à la fois, dans chacune des trois portes dérobées. Il existe des différences significatives entre ces deux rootkits, bien qu’ils se ressemblent sous certains aspects. Même si les versions du rootkit sont basées sur le projet open-source suterusu, elles contiennent plusieurs de leurs techniques exclusives et personnalisées.
Les fonctions communes auxs deux versions que nous avons découverte de ce rootkit permettent de :
- Masquer des processus
- Cacher des fichiers
- Se cacher soi-même
- Masquer des connexions réseau
- Exposer des informations d'identification collectées à sa porte dérobée
- Réaliser une redirection de port
- Recevoir de « paquets magiques » (les paquets magiques sont des paquets spécialement conçus qui peuvent demander au rootkit de télécharger et d'exécuter une autre porte dérobée).
Entre notre découverte et la finalisation de notre white paper sur le sujet, des fournisseurs dont as Tencent Security Response Center, Avast and Lacework Labs ont publié leurs recherches sur ce qui semble être le même logiciel malveillant.
Tous les composants connus de FontOnLake sont détectés par les produits ESET comme Linux/FontOnLake. Les entreprises ou les particuliers qui souhaitent protéger leurs terminaux ou serveurs Linux contre cette menace doivent utiliser un produit de sécurité multicouche et une version mise à jour de leur distribution Linux. Ccertains des échantillons que nous avons analysés ont été créés spécifiquement pour CentOS et Debian.
Dans le passé, nous avons décrit une opération qui partageait certains schémas comportementaux avec FontOnLake ; cependant, son échelle et son impact étaient bien plus importants. Nous l'avons baptisée Operation Windigo et vous pouvez trouver plus d'informations à son sujet dans notre white paper et cet article faisant un suivi.
Vous pouvez trouver des détails techniques supplémentaires sur FontOnLake en consultant notre white paper.
Indicateurs de compromission (IoCs)
Échantillons
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
Des échantillons:
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
Du scan de l'ensemble de l'Internet
27.102.130[.]63
Noms de fichier
/lib/modules/%VARIABLE%/kernel/drivers/input/misc/ati_remote3.ko
/etc/sysconfig/modules/ati_remote3.modules
/tmp/.tmp_%RANDOM%
Fichiers virtuels
/proc/.dot3
/proc/.inl
Techniques MITRE ATT&CK
Ce tableau a été conçu selon la version 9 de ATT&CK.
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. |