Kinsing évolue | Blog d'Akamai

Introduction
Un important botnet de cryptomonnaies acharné infecte les systèmes à grande échelle sur Internet.
La campagne a été vue pour la première fois par l'équipe SIRT d'Akamai le 16 février 2021 et semble viser à la fois les systèmes Windows et Linux. Ce botnet a retenu notre attention, car il s'est avéré très actif dans diverses régions du monde, notamment dans les Amériques, en Europe et en Asie. Le botnet fonctionne en utilisant la même adresse IP de distribution (194.38.20.199), sans avoir à effectuer de rotation depuis six mois. Auparavant, la campagne ne visait que les machines Linux, mais s'est récemment étendue aux systèmes Windows.
Infection des systèmes Windows
Pour infecter les machines Windows, le botnet exploite CVE-2020-14883, une vulnérabilité qui affecte les versions 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 et 14.1.1.0.0 d'Oracle WebLogic Server. Lorsqu'il est exploité, il permet à un cybercriminel d'effectuer une exécution de code à distance (RCE), ce qui peut entraîner un piratage d'Oracle WebLogic Server.
L'infection commence par amener la machine victime à télécharger puis à exécuter un fichier XML appelé wbw.xml. Sur les machines Windows, le fichier XML est exécuté via la classe ClassPathXmlApplicationContext

Le fichier wbw.xml extrait contient une commande PowerShell intégrée, qui s'exécute sur la machine de la victime. La commande est :

Il tente de télécharger un script PowerShell appelé « 1.ps1 » sur la machine de la victime à l'aide de la méthode System.Net.WebClient.DownloadString . Il utilise également l'indicateur de contournement Set-ExecutionPolicy pour s'assurer que rien ne soit bloqué et qu'aucun message ou avertissement ne soit généré pendant l'exécution.

Le script 1.ps1 télécharge ensuite un exécutable de cryptomonnaie appelé xmrig.exe, ainsi qu'un fichier config.json qui contient les informations de configuration que le mineur peut utiliser, comme les adresses de portefeuille de cryptomonnaies, les points de terminaison de la liste de cryptomonnaies et des paramètres de configuration supplémentaires. En plus de cela, le script 1.ps1 contient également une variable $miner_name qui stocke le nouveau nom avec lequel l'exécutable de cryptomonnaie xmrig.exe, sera renommé. Dans ce cas, xmrig.exe est renommé en « sysupdate » puis exécuté.


Le script 1.ps1 le script établit la persistance sur la machine de la victime afin de mettre à jour le fichier config.json et le mineur. Il le fait en tirant parti de SchTasks.exe, ce qui permet la création, la suppression et l'exécution de tâches planifiées sur une machine locale ou distante à partir de PowerShell. Plus d'informations sur SchTasks.exe sont disponibles ici. La tâche planifiée est nommée « Service de mise à jour pour le service Windows » et il tire à nouveau parti del'indicateur de contournement ExecutionPolicy pour éviter d'afficher des avertissements ou des invites pendant l'exécution, ainsi que l'indicateur caché -windowstyle pour rester masqué.

Infection des systèmes Linux
La campagne tire parti de plusieurs CVE pour atteindre l'exécution de code à distance (RCE) afin d'infecter les systèmes Linux. En plus du logiciel malveillant Kinsing, qui contient un mineur de cryptomonnaie, les charges utiles Linux ont également un cheval de Troie d'accès à distance (RAT). Les services ciblés incluent Oracle WebLogic Server, Redis, Apache Solr, PHPUnit et Supervisor XML-RPC.
Oracle WebLogic Server CVE-2020-14883 est également utilisé par cette campagne sur les systèmes Linux. Cependant, contrairement à la version Windows de cette vulnérabilité, où le RCE se produit via la classe ClassPathXmlApplicationContext , sur Linux, cela se produit via la classe FileSystemXmlApplicationContext . Le fichier XML malveillant est appelé wb.xml et télécharge un script bash au lieu du précédent wbw.xml pour Windows qui télécharge un script PowerShell.


Sur les systèmes Linux, l'infection commence par l'obtention d'une RCE à l'aide de l'un des CVE indiqués dans le tableau ci-dessous pour télécharger un fichier script bash sur la machine de la victime.



Même si le nom du fichier de script bash varie entre s.sh , p.sh, sup.sh, d.sh, ex.sh, r.sh, spr.sh, tf.sh ou wb.sh , ils font tous à peu près la même chose.
Le script bash élimine tous les mineurs concurrents qui pourraient déjà exister sur le système et désactive les fonctions de sécurité et de journalisation. Il télécharge ensuite le logiciel malveillant Kinsing (écrit en langage Go), établit la persistance à l'aide de crontab, puis commence à miner des cryptomonnaies.

Une fois exécuté sur la machine de la victime, le logiciel malveillant Kinsing crée un deuxième processus appelé kdevtmpfsi dans le répertoire /tmp, qui est le mineur de cryptomonnaie xmrig, et l'exécute. Le logiciel malveillant Kinsing surveille en permanence le processus kdevtmpfsi pour s'assurer qu'il fonctionne.
Décodage adresse IP Contrôle & Commande
La façon dont le logiciel malveillant communique avec le serveur C2 est de décoder l'adresse IP C2 au moment de l'exécution à l'aide d'une fonction appelée getActiveC2CUrl. La fonction getActiveC2CUrl utilise un chiffrement de flux RC4 vers des données hexadécimales de texte brut XOR avec une clé de texte brut qui sont tous deux stockés dans le binaire.
En raison de la façon dont les chaînes sont stockées dans un binaire de langage Go, où toutes les chaînes statiques sont généralement concaténées les unes avec les autres, entraînant une grande série de chaînes, la clé de texte clair et les données hexadécimales peuvent être facilement masquées dans la chaîne volumineuse. Après une certaine inversion de la fonction getActiveC2CUrl , l'emplacement en mémoire et la longueur de la clé et des données hexadécimales peuvent être trouvés.


La fonction hexadécimale getActiveC2CUrl décode les données hexadécimales C2, puis, avec la clé, elles sont toutes deux transmises à une deuxième fonction appelée RC4. La fonction personnalisée RC4 utilise la fonction func (c *Cipher) XORKeyStream(dst, src []byte) en interne à partir du paquet rc4 en Go pour générer l'adresse IP C2.
Maintenant que les données hexadécimales C2 et la clé sont récupérées, la fonction getActiveC2CUrl peut être remaniée et réécrite dans Go afin de calculer l'adresse IP C2 active.


Fonctions RAT
Le logiciel malveillant Kinsing possède des fonctionnalités de cheval de Troie d'accès à distance (RAT) que l'on trouve dans une fonction appelée doTask() dans le binaire. La fonction doTask contient quelques appels de fonction intéressants qu'elle exécute en fonction d'une entrée donnée
runTaskWithScan()
updateTask()
startCmd()
execTaskOut()
masscan()
socks()
backconnect()
runTaskWithHttp()
downloadAndExecute()
L'une de ces fonctions intéressantes est startCmd() cela permet d'exécuter une commande arbitraire sur la machine de la victime.

Communication Commande & Contrôle
Le logiciel malveillant communique avec le C2,185.154.53.140, via HTTP. Il envoie régulièrement les requêtes HTTP C2, reçoit des instructions à exécuter et fournit des contrôles d'intégrité simples.
La machine infectée envoie les informations C2 avec chaque requête HTTP sur son état actuel et ses ressources système, comme le nombre de cœurs, la mémoire, le système d'exploitation, le fait que des privilèges root ont été obtenus ou non, etc. Tous ces paramètres sont fournis au serveur C2 à l'aide d'en-têtes HTTP personnalisés.

Un point de terminaison demandé constamment par la machine infectée pour recevoir des instructions est /get. Lorsqu'une machine infectée fait une demande GET au point de terminaison /get du C2, le logiciel malveillant tente immédiatement de télécharger de nouveaux scripts shell malveillants supplémentaires à partir de l'IP de distribution 194.38.20.199 d'origine.

Les scripts bash qui sont ensuite téléchargés à partir de l'IP de distribution 194.38.20.199 d'origine suite à l'atteinte du point de terminaison /get du C2 sont appelés ph.sh et spre.sh. Ces deux fichiers sont différents du script bash initial à l'origine de l'infection que nous avons examiné précédemment. Ils ont chacun un but différent et contiennent des vecteurs d'infection supplémentaires.
Nous allons d'abord examiner le script ph.sh , il télécharge un rootkit appelé libsystem.so à partir du point de terminaison 194.38.20.199/libsystem.so en plus du logiciel malveillant Kinsing existant sur la machine de la victime. Le script ph.sh précharge ensuite ce rootkit dans /etc/ld.so.preload

Le script ph.sh établit également un second mécanisme de persistance, en plus des tâches cron déjà existantes qui ont été précédemment injectées par le script initial. Pour ce faire, il enregistre un service système qui réinfectera périodiquement l'hôte.

Si vous souhaitez en savoir plus sur le rootkit libsystem.so que le script ph.sh installe et son fonctionnement interne, Trend Micro a rédigé un blog formidable sur ce rootkit spécifique, disponible ici
Le deuxième fichier de script bash intéressant qui est extrait en raison d'une réponse /get du point de terminaison C2 est spre.sh. Son but est de propager l'infection à des hôtes supplémentaires en trouvant des informations d'identification ssh pour tous les hôtes auxquels la victime a accès en examinant ~/.ssh/config , ~/.bash_history, et .ssh/known_hosts. Le script spre.sh tente alors d'insérer ssh dans les hôtes découverts en utilisant les identifiants récupérés qu'il a trouvés et de les infecter aussi.

Un autre point de terminaison C2 intéressant auquel la machine infectée demande des instructions est le point de terminaison /mg . Lorsque la machine infectée fait une demande GET au point de terminaison /mg , le C2 répond par quelques caractères, puis immédiatement la machine infectée commence à communiquer avec une adresse IP tierce, 95.181.179.88, qui semble être responsable de la transmission des commandes d'exploration à la machine infectée sous la forme d'une charge utile JSON-RPC sur HTTP.

Que faire ?
Pour atténuer ces menaces, le SIRT d'Akamai vous conseille de surveiller les processus de vos systèmes, afin de détecter une consommation de ressources anormalement élevée et une activité réseau suspecte. Une utilisation anormalement élevée du processeur pour un processus donné peut être un indicateur d'activité de minage de cryptomonnaies.
Le SIRT d'Akamai vous recommande également de vérifier fréquemment les tâches cron enregistrées sous les crontabs de vos systèmes pour vous assurer que les tâches cron ne communiquent pas avec des adresses IP inconnues, ce qui est une technique courante pour les logiciels malveillants Linux afin d'établir la persistance, et la campagne que nous évoquons ne fait pas exception.
Pour les systèmes Windows, il faut procéder de même avec PowerShell à l'aide de SchTasks.exe /Query afin d'afficher toutes les tâches planifiées qui auraient pu être créées par cette campagne. Vérifiez également les processus en cours d'exécution sur vos systèmes Linux et assurez-vous que les processus portant le nom de kinsing ou kdevtmpfsi ne sont pas en cours d'exécution et qu'un processus appelé sysupdate n'est pas en cours d'exécution sur vos systèmes Windows.
Ajoutez une authentification forte à vos systèmes lorsque cela est possible, les mots de passe faibles peuvent être facilement forcés. Assurez-vous également que les services ciblés par la campagne dont il est question, notamment Oracle WebLogic Server, Redis, Apache Solr, PHPUnit et Supervisor XML-RPC, ne sont pas exposés à Internet si ce n'est pas nécessaire, ce qui réduit fortement le risque d'infection de ces services. Par exemple, si une instance Redis est utilisée uniquement par des systèmes internes, elle n'a pas besoin d'être exposée à Internet.
Le SIRT d'Akamai vous recommande également de comparer vos systèmes par rapport aux indications de compromis (IOC) fournies dans la section IoCs ci-dessous pour vous assurer que vos systèmes ne sont pas déjà infectés. De plus, effectuez régulièrement des correctifs sur vos systèmes et suivez les meilleures pratiques.
Indications de compromis (IOC)
Adresses IP
Adresse IP |
Description |
185.154.53.140 |
Commande & Contrôle |
194.38.20.199 |
Distribution de logiciels malveillants |
95.181.179.88 |
Gère les opérations de minage de cryptomonnaies |
195.3.146.118 |
Distribution des logiciels malveillants de sauvegarde |
Fichiers
SHA-256 |
Nom |
Description |
8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4 |
s.sh |
194.38.20.199/s.sh, script bash qui télécharge le logiciel malveillant Kinsing |
ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6 |
p.sh |
194.38.20.199/p.sh, script bash qui télécharge le logiciel malveillant Kinsing |
0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9 |
d.sh |
194.38.20.199/d.sh, script bash qui télécharge le logiciel malveillant Kinsing |
6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b |
spr.sh |
194.38.20.199/spr.sh, script bash qui télécharge le logiciel malveillant Kinsing |
818179ac928027a5c26c9b13d3d830b7331c3e4c46ba1e305867e3d4accaf3ef |
r.sh |
194.38.20.199/r.sh, script bash qui télécharge le logiciel malveillant Kinsing |
56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a6ba9065ae0cca8fb3 |
ex.sh |
194.38.20.199/ex.sh, script bash qui télécharge le logiciel malveillant Kinsing |
05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d |
tf.sh |
194.38.20.199/tf.sh, script bash qui télécharge le logiciel malveillant Kinsing |
274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fae1acadf5c4c |
wb.sh |
194.38.20.199/wb.sh, script bash qui télécharge le logiciel malveillant Kinsing |
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b |
kinsing |
194.38.20.199/kinsing, binaire du logiciel malveillant Kinsing |
7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff |
config.json |
194.38.20.199/config.json, json config pour XMRIG miner |
c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f888808a |
libsystem.so |
194.38.20.199/libsystem.so, binaire rootkit |
5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170 |
xmrig.exe |
194.38.20.199/xmrig.exe, XMRIG Miner pour Windows |
49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf |
wbw.xml |
194.38.20.199/wbw.xml, fichier xml qui télécharge un script powershell pour infecter les systèmes Windows |
25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e |
wb.xml |
194.38.20.199/wb.xml, fichier xml qui télécharge un script bash pour infecter les systèmes Linux |
6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3 |
curl-amd64 |
194.38.20.199/curl-amd64 , binaire curl |
fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3 |
al.sh |
194.38.20.199/al.sh, script bash qui arrête le service aegis |
cb2ca16246a687b34fa1ba76015cb4aa3b50b4ecca4550478eb580c4725ab48f |
cron.sh |
194.38.20.199/cron.sh, script bash qui met à jour crontab |
d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284 |
ph.sh |
194.38.20.199/ph.sh, script bash qui télécharge le logiciel malveillant Kinsing et le rootkit libsystem.so |
f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f |
spre.sh |
194.38.20.199/sbre.sh, script bash qui transmet l'infection à d'autres hôtes via ssh |
dd603db3e2c0800d5eaa262b6b8553c68deaa486b545d4965df5dc43217cc839 |
kdevtmpfsi |
Le processus Kinsing de minage de cryptomonnaies |