É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.
- L'utilisateur télécharge le paquet et double-clique sur l'icône
- L'exécutable infecté se lance
- L'exécutable de Final Cut Pro fonctionnel, encodé en base64, est extrait
- L'exécutable i2p, également encodé en base64, est extrait et déguisé en
mdworker_shared
lors de l'exécution - L'exécutable de minage est téléchargé depuis le serveur de commande et contrôle
- 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é.