Un logiciel de cryptojacking ciblant macOS détecté dans des applications pirates

Au cours des derniers mois, Jamf Threat Labs a suivi une famille de logiciels malveillants qui a refait surface et s'est répandue sans être détectée. Pourtant, une itération antérieure de cette famille était connue de la communauté de la sécurité. Cet article se penche sur ce logiciel malveillant, qui donne un aperçu de la course aux armements qui se joue actuellement entre auteurs de logiciels malveillants et chercheurs en sécurité. Nous verrons également comment renforcer la sécurité des appareils Apple dans les environnements de production.

Avril 24 2023 Par

Jamf Threat Labs

Écrit par Matt Benyo

Recherches menées par Matt Benyo, Ferdous Saljooki et Jaron Bradley

Lors d'un contrôle de routine de nos outils de détection des menaces, nous avons rencontré une alerte indiquant l'utilisation de XMRig, un outil de cryptominage en ligne de commande. XMRig est couramment utilisé à des fins légitimes, mais du fait de sa flexibilité et de son code open-source, il est aussi très prisé des acteurs malveillants. Ce cas particulier nous a intéressés car il s'exécutait sous le couvert de Final Cut Pro, le logiciel de montage vidéo développé par Apple. Une enquête plus approfondie a révélé que cette version malveillante de Final Cut Pro contenait une modification non autorisée par Apple qui exécutait XMRig en arrière-plan. Au moment de notre détection, ce variant n’avait été détecté comme malveillant par aucun fournisseur de sécurité sur VirusTotal. Depuis janvier 2023, quelques-uns l'ont identifié comme tel. Toutefois, la plupart des fournisseurs n'identifient pas les applications malveillantes.

Traditionnellement, les adwares sont les logiciels malveillants les plus répandus sur macOS. Mais le cryptojacking, un système de minage de cryptomonnaie furtif à grande échelle, est de plus en plus fréquent. Le cryptominage nécessite une puissance de traitement importante : il y a fort à parier que les progrès accomplis par les processeurs ARM d'Apple feront des appareils macOS des cibles de plus en plus attrayantes. Si le cryptojacking n'est pas un concept nouveau en soi, la variante qui nous intéresse utilise des tactiques inédites.

Elle exploite en effet l'Invisible Internet Project (i2p) pour communiquer. i2p est une couche de réseau privé qui anonymise le trafic, ce qui en fait une alternative plus discrète à Tor. Le logiciel malveillant utilise i2p pour télécharger des composants et envoyer de la cryptomonnaie extraite vers le portefeuille de l'attaquant.

En recherchant d'autres exemples d'utilisation malveillante d'i2p, nous avons découvert que des techniques similaires avaient été signalées par Trend Micro en février 2022. Il subsiste toutefois des divergences et des questions sans réponse. Par exemple, comment se fait-il que cet échantillon se soit diffusé à l'insu de tous les fournisseurs de VirusTotal, alors que la famille de logiciels malveillants avait déjà été documentée ?

Dans son rapport, Trend Micro émet l'hypothèse que l'échantillon Mach-O pourrait avoir voyagé dans un paquet DMG pour Adobe Photoshop CC 2019. L'équipe n'est toutefois pas parvenue à trouver le DMG en question. Dans la mesure où nous avons observé un scénario très similaire avec Final Cut Pro, nous avons également cherché à tracer l'origine de ces logiciels malveillants.

Dans notre quête, nous nous sommes tournés vers un miroir de Pirate Bay et avons recherché des torrents de Final Cut Pro. Nous avons téléchargé le torrent le plus récent affichant le plus grand nombre de seeders et vérifié le hash de l'exécutable de l'application. Il s'agissait précisément du hash de la version infectée de Final Cut Pro que nous avions découverte. Nous avions notre réponse.

Ce torrent a été publié par un utilisateur qui, depuis des années, diffuse des torrents de logiciels macOS piratés. Un grand nombre d'entre eux figurent parmi les versions les plus partagées pour leurs titres respectifs :

Après une analyse approfondie des DMG diffusés par torrent, nous avons découvert que l'émetteur était bien la source du logiciel malveillant détecté. Nous avons également confirmé qu'il était la source des échantillons précédemment signalés. Mais ce n'est pas tout : sur les dizaines de torrents publiés depuis 2019, tous ou presque contenaient une charge utile malveillante visant à miner subrepticement de la crypto-monnaie.

Cette découverte offre une occasion rare de retracer l'évolution d'une famille de logiciels malveillants. Ce qui n'était au départ qu'un projet rudimentaire et peu discret a évolué en trois étapes distinctes pour acquérir des techniques d'évasion créative. À notre connaissance, seuls des échantillons de la première génération de cette famille de logiciels malveillants ont fait l'objet de rapports.

Nos conclusions ont d'autant plus de poids que nous avons pu retracer toute la chronologie, du moment où les échantillons ont commencé à circuler dans la communauté des torrents aux premiers signalements à VirusTotal, puis à la détection des différentes étapes d'infection par les fournisseurs. Nous avons ainsi obtenu des informations précieuses sur la progression du logiciel malveillant et son évolution, et nous comprenons mieux les tactiques et les techniques employées par ses auteurs.

La vie trouve toujours un chemin

Comme nous l'avons mentionné, notre échantillon de Final Cut échappait à la détection des logiciels antivirus, alors que les versions précédentes étaient largement détectées. Comme nous étions remontés à la source de ces logiciels malveillants, nous avons eu le luxe de comparer directement les échantillons. Nous avons observé des points de démarcation clairs, à partir desquels de nouvelles techniques de dissimulation étaient utilisées. Elles étaient généralement absentes des échantillons de première génération.

Qu'est-ce qui a changé ?

Les échantillons de première génération utilisaient l'API AuthorizationExecuteWithPrivileges pour acquérir les privilèges nécessaires à l'installation du démon de lancement – et donc à la persistance. Toutefois, ce processus impliquait l'affichage d'une boîte de dialogue indiquant que l'application devait faire des modifications et invitant l'utilisateur à saisir son mot de passe. Par la suite, ce procédé a été remplacé par un agent de lancement utilisateur, qui s'exécute sans boîte de dialogue. Pour autant, les échantillons de deuxième génération qui ont fleuri sur Pirate Bay en avril 2021 n'intégraient pas les méthodes de persistance traditionnelles – démons ou agents de lancement – observées par la suite. Ils semblaient plutôt compter sur l'exécution du paquet de l'application par l'utilisateur pour démarrer le processus de minage.

Les variantes ultérieures du logiciel malveillant masquent les composants i2p dans l'exécutable de l'application à l'aide d'un encodage en base64. En comparant le Final Cut Pro piraté de troisième génération à une copie authentique, nous avons constaté qu'il était nettement plus volumineux, avec un poids de 11,9 MB contre 3,7 MB en version standard. Cela est dû à la présence, dans l'exécutable de l'application, de deux gros blobs encodés en base64 assortis de commandes shell.

Il suffit d'appuyer sur « Play »

Lorsque l'utilisateur double-clique sur l'icône de Final Cut Pro, l'exécutable infecté s'exécute et lance les appels au shell pour orchestrer l'installation du logiciel malveillant. Le même exécutable contient deux gros blobs en base64 qui sont décodés par des appels shell. Le décodage de ces deux blobs produit deux archives tar. L'une d'elles contient une copie fonctionnelle de Final Cut Pro. L'autre blob encodé en base64 est converti en exécutable personnalisé, chargé de gérer le trafic i2p chiffré. Une fois les données intégrées décodées et désarchivées, les composants résultants sont inscrits dans le répertoire /private/tmp/ en tant que fichiers cachés. Après avoir lancé l'exécutable i2p, le script d'installation utilise curl sur i2p pour se connecter au serveur web de l'auteur malveillant et télécharger les composants de ligne de commande XMRig. Ce sont eux qui vont se charger de miner en toute discrétion. La version de Final Cut Pro qui est lancée et présentée à l'utilisateur est appelée à partir de ce répertoire puis l'archive est supprimée du disque.

  1. L'utilisateur télécharge le paquet et double-clique sur l'icône
  2. L'exécutable infecté se lance
  3. L'exécutable de Final Cut Pro fonctionnel, encodé en base64, est extrait
  4. L'exécutable i2p, également encodé en base64, est extrait et déguisé en mdworker_shared lors de l'exécution
  5. L'exécutable de minage est téléchargé depuis le serveur de commande et contrôle
  6. L'extraction commence, déguisée en processus mdworker_local

Manipulation

Toute cette mise en scène au lancement du paquet d'applications est gérée par la série d'appels shell intégrés dans le binaire malveillant. Nous avons observé trois itérations différentes de cette boucle shell. La première itération était moins complexe se présentait sous une forme relativement lisible lorsqu'elle était extraite via l'utilitaire strings :

Dans les itérations ultérieures, le script a été transformé en one-liner surdimensionné. Ce script plus long s'occupe également de créer les réglages du fichier de configuration du programme de minage :

La boucle bash de ce logiciel malveillant présente une fonctionnalité unique qui a fait l'objet d'itérations, mais qui est apparue pour la première fois dans les échantillons de 2019. Si nous condamnons vigoureusement les agissements des auteurs de logiciels malveillants, difficile de ne pas être intrigué par l'utilisation astucieuse des commandes suivantes :

(APID=$$;(while true; do sleep 3;(pgrep -x 'Activity Monitor' > /dev/null) && break;done;); [ \"$I2PD_PID\" != \"\" ] && kill -9 \"$I2PD_PID\" > /dev/null 2>&1; [ \"$PIDW\" != \"\" ] && kill \"$PIDW\" > /dev/null 2>&1; [ \"$PID\" != \"\" ] && kill \"$PID\" > /dev/null 2>&1; pkill \"._${r_nme}\"; pkill \"._${r_i2}\"; kill \"$APID\" > /dev/null 2>&1;); exit) & echo $! > \"/tmp/i2pd/._pid\");

Le script exécute une boucle continue qui vérifie la liste des processus en cours toutes les 3 secondes, à la recherche du moniteur d'activité. S'il le trouve, il met immédiatement fin à tous ses processus malveillants. Par conséquent, si la victime remarque que son processeur tourne plus vite que d'habitude – signe du minage clandestin – et qu'elle ouvre le moniteur d'activité pour confirmer ses soupçons, le logiciel malveillant s'arrête immédiatement et se cache jusqu'au prochain lancement de l'application.

Dans la troisième et dernière génération du script, nous avons trouvé une technique trompeuse courante dans les logiciels malveillants Linux. Le script utilise la commande bash intégrée exec avec l'indicateur -a pour lancer des processus malveillants. L'option -a permet de donner un nom personnalisé au processus, qui apparaît dans la sortie de commandes sous l'intitulé ps aux. Pour mieux se fondre dans l'activité de l'ordinateur, l'auteur du logiciel malveillant a choisi de nommer ses processus mdworker_local et mdworker_shared, des noms de processus légitimes liés à la fonctionnalité Spotlight. Cette technique d'évasion rend les processus malveillants beaucoup plus difficiles à détecter. Rien à signaler !

Ventura rehausse la barre

Comme nous l'avons décrit précédemment, les itérations ultérieures de ces logiciels malveillants ont cessé de s'appuyer sur launchd pour assurer leur persistance, comptant sur le lancement du logiciel piraté par l'utilisateur pour initier le minage. Cette approche hautement furtive permet aux logiciels malveillants de voler du temps de processeur pendant la durée de la session. Mais pour que la stratégie réussisse, il faut que la victime lance régulièrement le logiciel.

Avec macOS Ventura, Apple a introduit des améliorations de sécurité qui posent un nouveau défi à cette approche. Les contrôles de signature du code sont plus stricts dans Ventura : ils vérifient que toutes les applications notariées sont correctement signées et qu'elles n'ont pas été modifiées par des processus non autorisés, même après le premier lancement. Pour rappel, dans les versions précédentes de macOS, Gatekeeper ne validait les applications qu'au moment du premier lancement et considérait le fichier comme fiable par la suite.

Dans le cas qui nous occupe, les principaux clients torrent sur macOS (à savoir Transmission et uTorrent) n'appliquent aucun marqueur de quarantaine, contournant ainsi les contrôles de validation sur un système macOS Monterey. Sur macOS Ventura par contre, malgré l'absence de marqueur de quarantaine, la version modifiée de Final Cut Pro n'a pas pu se lancer et nous avons reçu un message d'erreur. En effet, la signature du code d'origine était intacte mais le logiciel malveillant avait modifié l'application : la signature était donc invalidée, et la règle de sécurité, enfreinte. Avec les contrôles continus effectués par Ventura, il devient difficile de contourner cette validation, contrairement aux versions précédentes où il était possible d'y échapper en évitant ou en supprimant l'attribut de quarantaine.

En revanche, macOS Ventura n'a pas empêché l'exécution du logiciel de minage.not Au moment où l'utilisateur reçoit le message d'erreur, le logiciel malveillant a déjà été installé. L'OS a bien bloqué le lancement de la version modifiée de Final Cut Pro, ce qui peut éveiller les soupçons de l'utilisateur et réduire considérablement la probabilité qu'il la lance à nouveau.

Encore une chose...

Avant de signer l'acte de décès de cette famille de logiciels malveillants avec les améliorations de Ventura, soulignons que ce message d'erreur n'a été vu que sur les versions piratées de Logic Pro et Final Cut Pro (deux titres d'Apple). À l'heure où nous écrivons ces lignes, le Photoshop piraté diffusé par wtfisthat34698409672 parvient toujours à lancer ses composants malveillants et fonctionnels sur macOS Ventura 13.2 et ses versions antérieures. Il semble en effet y avoir une différence mineure entre la méthode d'appel de l'exécutable de la copie fonctionnelle de Photoshop et le procédé de lancement des exécutables de Final Cut et Logic Pro. Il est fort possible que des ajustements mineurs suffisent à l'auteur du logiciel malveillant pour « corriger » ses versions de ces deux applications.

Épilogue : Le danger des applications pirates

Les applications pirates diffusés sur les réseaux peer-to-peer constituent un mécanisme idéal de diffusion de logiciels malveillants, et ce pour de multiples raisons :

1. Jusqu'à macOS Ventura, la mise en quarantaine des fichiers était une pièce maîtresse dans la stratégie de protection de macOS. Le marqueur de quarantaine n'est toutefois pas attribué par défaut aux fichiers téléchargés, et les principaux clients de torrents choisissent volontairement de ne pas l'appliquer. Ce faisant, ils lèvent l'un des plus grands obstacles de sécurité pour les auteurs de logiciels malveillants.

2. Et pour les autres obstacles, le malfaiteur a pour allié involontaire l'utilisateur qui a téléchargé l'application piratée. Celui-ci risque fort d'être incité à désactiver manuellement d'autres fonctionnalités de sécurité, à commencer par Gatekeeper. Prenons par exemple cet extrait de fichier README.txt :

Si vous avez des problèmes avec l'image (des messages ennuyeux qui prétendent que l'image/l'application est endommagée et que vous ne pouvez pas la lancer), ouvrez le terminal et tapez : sudo spctl --master-disable

(Remarque : cette commande permet de désactiver entièrement les fonctionnalités de Gatekeeper. Détail amusant, aucune instruction n'est donnée pour les réactiver.)

3. Prenons aussi en compte la composante psychologique. L'utilisateur sait qu'il fait quelque chose d'illégal – il n'est pas surpris que la sécurité intégrée d'Apple l'empêche d'exécuter des logiciels Apple piratés. Et s'il finit par soupçonner qu'il a installé un logiciel malveillant sur son ordinateur professionnel par inadvertance, il sera sans doute réticent à l'idée d'en parler à un membre du service de sécurité ou du service informatique.

Jamf Protect signale spécifiquement si Gatekeeper a été désactivé sur des terminaux.

Toutes les versions connues de cette famille de logiciels malveillants sont détectées et bloquées par la solution de prévention des menaces Jamf Protect.

Les échantillons de logiciels malveillants découverts ont été communiqués à Apple. À partir de la version 2166, les signatures XProtect ont également été mises à jour pour se prémunir de cette menace.

IoC

Binaires universels

c19e78df3b3462064b9d78bc138674a7e8df28c7

7628d90cfd311bfd4997729a232ca77a6d443619

62ed66c1835ef5558ce713467f837efde508d5e4

69fd812cf3760dc3dff5d41972cc635de9a0844d

53fd50b23372a73e74e7cdc370f51ac560a1130f

c56046c322316233d23db034670496756a6942fe

d510b4c602404767f9ef75f5a48017d2b3743c4c

bce251548798f159e99e71e68b65bbb4a9607296

6ee76d296abf8da0f98d23f545ba4aa7c69e8211

cea42a9b59cfa262453b508ea21d96f87bb793da

e99f8ec210b26270894f16fe9c43f1203c13fb32

bebe1ad82d595434c6ef529cb4f75f4937a04e5f

c10079ed5885c64c0da6302bc91adf5b293aef4c

140790186d0c60a604c5dd9f9d2c8dbc500da1c9

2defaf34319b6255db45c8bebf55d5095a41bed8

d86695fb9e56e03253503781f42f1069a5cc10d1

f6348b7b79e48b5d2c13b8aa560c795d7a2c21d8

278290e9b2517fa208bb019a0dc53a5a78995d84

cf685bb0fe5e078ea28a25a7cf8774b168787db4

96667da937efd370197fd94cc9a80b4fb3e8c153

2b28169bdaee62eaaec708a9fa245b1c1e6c0e29

325a470ec2ee3319f996723496689d052f3c3b47

a605e20250e66726a58699a2ae4f7264c8c2e4e2

3ab040271882eb6c3a028498c7469450610ef7b8

8ed83d6593bb0c7404f4571c91a4a80022088922

687ec2b7d79ed6f953c7f519044b7117d12bdafa

53bea5f857571d73b7b4a1f6db1edd340d453bca

68f4979c04b4753a9f275f29c00d4b260f4c2ec0

97fbb98f1ecbb2533204eca2967cf4117e388f22

8907721154fc4079f9fc68e58c0ca742ffc1c9af

89f2bb7f96317837514bbae70d47ac1e00626ac1

5e4792e459f1107cf83ce3293141f9ba3026b015

95f71894eec20f9727ff1311ad078de38ae4e774

2ae591a3e14d77a9bc077fe61712c6b77f71fc11

DMG

b5dd15e765ed5839a7d2c16c50e6cf3334c4b894

3a714063188b24f0392c163d7910be00216a5f04

a72b548ca570d8c74ed4c465716c4e37328f9bc1

f35bddfbb82ae1b137cbd454bc18f2b859cc5882

c5b34662f22f35f3995144b24015309bbe318cd9

7da20852d79f7443b88449e8ed18e092c2aaa3bb

699da2b8d35f344121d93a74adf89349d3c8d922

11e4f795551e6db0fe9a9c52eec35f134b089478

7312b319b84be6bde845b10ea61619c33473f784

5aae6e00b3ab0b32a8c75a2952674d7665b3f705

6b987ffc3fd6a2bcfb931426be4118cd943737da

c64c21d2e08cb8a28e31c4d883a1e75fd1c7851b

0e73071ceb9d2481361777b33b8443ec0acb0793

ebd417f4ab9e7bb6deaacab9de1611df67908317

8e4dff96e1740764d60fbff8cfae8c673f1a7a3f

828fb69b80e60de6f6206fd63b496cc0923082f4

11ee7a59ecd287628ff251b435777f6d4429e40c

05b7e1864b7b570a339c8072830cdd9bcbf21d1a

eb3a1808bd24026314bec69caadbc882f1976982

cc9afb9efea37aee31cd74fb064de4b732fb84b3

c8d230830d0912236c48c31ad11b93707088ce9f

0cc8e03a08baa73379ac6c55cbb18fa78b87923d

4f0ba59e2ee80ff854bca33944f825d4c8cfe23e

163d9ce53deadd54ad50d7d0120b5db550724689

33d79b8ee94f7bd0a542863cd5a8926d8e0263d9

048a93a696f1bf0bdf6f6e3506d65d21a4a9f681

d4d1c97c5803162e452c79811d61e1487c9cfe62

9e387d79fd6412715a5a4bca02b7e27a08299c4b

dfcf0b6af4593f32060176768164702f45cb556b

e857a9c520402ccc6abe3244c1e93ac9e2a6ac3d

e857a9c520402ccc6abe3244c1e93ac9e2a6ac3d

5eb0e95aa6cc68ec05103561b02d38d4f69e4980

c222fe1be761f05c665c40c14781e40f97460569

c3d062bc3fa3b4ecfc68e69a7dc26d9e0ac56538

901a08aa9996fa95e4a844c24eb7b81da0b52923

9e04ca30e6ae20e8d2bbf2772a93145bd4b5b8c6

90835a1173e9ed414e8240d0e14acb13f73f642f

be30f974111ad50312f654db9e040c6ab99d054c

b48927641b53e363d7183fe7faaaa7be8b01cec9

PKG

cedd8f8ae61dc47130c34b39d9795083cc90ac1f

Scripts Bash

fbdf0af70f95d3c87cf8bcacc2d6673d9ccd4620

8701f8b0aeb2c66298eb1b4297d98664f8c1f1b9

5b304a1da9f56e8ffdfb68940fdd0bc2887d2eb9

ecffd9553c67478a55f7303f6cadf356101f9216

80f2682d60303ea9098444a35cb35e697ae18187

638ef84a29c747419027c306833d6420d351b244

S’abonner au blog de Jamf

Recevez les tendances du marché, les mises à jour d'Apple et les dernières nouvelles de Jamf directement dans votre boîte mails.

Pour en savoir plus sur la manière dont nous collectons, utilisons, partageons, transférons et protégeant vos informations personnelles, veuillez consulter notre Politique de confidentialité.