Geschreven door Matt Benyo
Research uitgevoerd door Matt Benyo, Ferdous Saljooki en Jaron Bradley
Tijdens een routinecontrole van onze bedreigingsdetecties in het wild kwamen we een waarschuwing tegen die wees op het gebruik van XMRig, een command-line cryptomining-tool. Hoewel XMRig vaak wordt gebruikt voor legitieme doeleinden, is de tool vanwege het aanpasbare, open-source ontwerp ook een populaire keuze voor kwaadwillende personen. Dit specifieke geval was voor ons van belang omdat het werd uitgevoerd onder het mom van de door Apple ontwikkelde videobewerkingssoftware Final Cut Pro. Nader onderzoek wees uit dat deze kwaadaardige versie van Final Cut Pro een niet door Apple toegestane wijziging bevatte die XMRig op de achtergrond uitvoerde. Op het moment van onze ontdekking werd deze specifieke sample door geen enkele beveiligingsleverancier op VirusTotal als kwaadaardig gedetecteerd. Sinds januari 2023 hebben een handvol leveranciers de malware gedetecteerd. Veel van de schadelijke toepassingen worden echter door de meeste leveranciers nog steeds niet geïdentificeerd.
Adware is van oudsher de meest voorkomende vorm van macOS-malware, maar cryptojacking, een onopvallend en grootschalig cryptominingsysteem, komt steeds vaker voor. Aangezien crypto-mining een aanzienlijke hoeveelheid verwerkingskracht vereist, is het waarschijnlijk dat de voortdurende vooruitgang in Apple ARM-processors macOS-apparaten tot nog aantrekkelijkere doelen voor cryptojacking zal maken. Hoewel cryptojacking op zich geen nieuw concept is, gebruikt deze specifieke variant enkele nieuwe tactieken.
Deze malware maakt gebruik van het Invisible Internet Project (i2p) voor communicatie. i2p is een privé netwerklaag die het verkeer anonimiseert, waardoor het een minder opvallend alternatief is voor Tor. Deze malware gebruikt i2p om schadelijke componenten te downloaden en gedolven valuta naar de portemonnee van de aanvaller te sturen.
Bij het zoeken naar andere voorbeelden van malware die i2p-routing gebruikt, ontdekten wij dat de technieken van deze sample vergelijkbaar waren met die welke in februari 2022 door Trend Micro werden gerapporteerd. Ondanks de overeenkomsten waren er nog steeds discrepanties en onbeantwoorde vragen, zoals waarom dit specifieke monster niet door alle leveranciers op VirusTotal werd gedetecteerd, hoewel de malwarefamilie al was gedocumenteerd.
In hun rapport speculeert Trend Micro dat de Mach-O-sample mogelijk opdook in een DMG-pakket voor Adobe Photoshop CC 2019. Maar ze konden de DMG zelf niet vinden. Aangezien we een soortgelijk scenario zagen met Final Cut Pro, wilden we ook nagaan waar deze malware vandaan kwam.
In een poging om de bron van de malware te lokaliseren, gingen we naar een Pirate Bay-mirror en zochten we naar torrents van Final Cut Pro. We downloadden de meest recente torrent met het hoogste aantal seeders en controleerden de hash van de uitvoerbare applicatie. Het kwam overeen met de hash van de geïnfecteerde Final Cut Pro die we in het wild hadden ontdekt. Nu hadden we ons antwoord.
We stelden vast dat de torrent was geüpload door een gebruiker met een jarenlange staat van dienst in het uploaden van illegale macOS-softwaretorrents, waarvan vele tot de meest gedeelde versies voor hun respectieve titels behoorden:
Na een grondige analyse van de DMG's van de torrent-uploads ontdekten we dat de uploader de bron was van de malware die we vonden en we bevestigden ook dat dit de bron was van de eerder gemelde sample. Bovendien ontdekten we dat vrijwel elke van de tientallen uploads die in 2019 begonnen, gecompromitteerd was met een kwaadaardige payload om heimelijk cryptocurrency te delven.
Deze ontdekking bood een zeldzame kans om de evolutie van een malwarefamilie te traceren. Wat rudimentair en opvallend begon was na drie duidelijke evolutiefasen uitgegroeid tot een systeem met creatieve ontwijkingstechnieken. Voor zover wij konden nagaan, zijn alleen samples van de eerste generatie van deze malwarefamilie gerapporteerd.
Onze bevindingen werden nog belangrijker gemaakt door de mogelijkheid om de tijdlijn te traceren van wanneer de samples in de torrent-community in omloop kwamen, wanneer ze bij VirusTotal werden ingediend en wanneer leveranciers met succes de verschillende stadia van deze malware begonnen te detecteren. Dit leverde waardevolle inzichten op in het verloop van de malware en de evolutie ervan en stelde ons in staat om de tactieken en technieken van de personen achter de malware beter te begrijpen.
Het leven, eh... vindt een manier
Zoals we al zeiden, ontweek onze Final Cut-sample AV-detectie, terwijl de eerder gerapporteerde samples over de hele linie werden gedetecteerd. Nadat we de directe bron van deze malware hadden gevonden, hadden we de luxe om de samples direct te vergelijken. Wij hebben duidelijke afbakeningspunten waargenomen waar de samples nieuwe verduisteringstechnieken begonnen te gebruiken. Veel van deze technieken waren niet aanwezig in de samples van de eerste generatie waarover eerder werd gerapporteerd.
Dus, wat is er veranderd?
De samples van de eerste generatie gebruikten de AuthorizationExecuteWithPrivileges
-API om verhoogde rechten te krijgen, die nodig waren om de Launch Daemon voor persistentie te installeren. Dit proces ging echter gepaard met een opvallende wachtwoordprompt die aangaf dat de applicatie wijzigingen moest aanbrengen. Latere voorbeelden van de eerste generatie gingen over op een User Launch Agent, die de opvallende prompt niet nodig had. De samples van de tweede generatie die in april 2021 op Pirate Bay begonnen te verschijnen, hadden echter geen traditionele persistentiemethoden, zoals Launch Daemons of Launch Agents. In plaats daarvan lijkt de malware erop te vertrouwen dat de gebruiker de applicatiebundel start om het miningproces te starten.
Latere varianten van de malware verbergen hun kwaadaardige i2p-componenten binnen de uitvoerbare applicatie met behulp van base64-codering. We vergeleken de illegale Final Cut Pro van de derde generatie met een echte kopie en merkten op dat deze aanzienlijk groter was, namelijk 11,9 MB in vergelijking met de standaard 3,7 MB. Dit komt door de aanwezigheid van twee grote base64-gecodeerde blobs en shell-opdrachten in het uitvoerbare bestand van de toepassing.
Just push play
Wanneer de gebruiker dubbelklikt op het Final Cut Pro-pictogram, wordt het uitvoerbare bestand met daarin de trojan uitgevoerd, waardoor de shell-oproepen worden gestart die de installatie van de malware uitvoeren. Binnen hetzelfde uitvoerbare bestand bevinden zich twee grote base64-blobs die worden gedecodeerd via shell-aanroepen. Het decoderen van beide blobs resulteert in twee overeenkomende tar-archieven. Eén bevat een werkkopie van Final Cut Pro. De andere base64-gecodeerde blob decodeert naar een aangepast uitvoerbaar bestand dat verantwoordelijk is voor het afhandelen van het gecodeerde i2p-verkeer. Zodra de ingesloten gegevens uit base64 zijn gedecodeerd en gedearchiveerd, worden de resulterende componenten als verborgen bestanden weggeschreven naar de map /private/tmp/
. Na het uitvoeren van het uitvoerbare i2p bestand, gebruikt het installatiescript curl-over-i2p om verbinding te maken met de webserver van de kwaadwillende auteur en de XMRig-opdrachtregelcomponenten te downloaden die de geheime mining uitvoeren. De versie van Final Cut Pro die wordt gestart en aan de gebruiker wordt gepresenteerd, wordt vanuit deze map aangeroepen en uiteindelijk van de schijf verwijderd.
- De gebruiker downloadt en dubbelklikt op de applicatiebundel
- Het uitvoerbare bestand met daarin de trojan wordt uitgevoerd
- Het werkende base64-gecodeerde Final Cut Pro-uitvoerbare bestand wordt geëxtraheerd
- Het base64-gecodeerde uitvoerbare i2p bestand wordt uitgepakt en tijdens de uitvoering vermomd als
mdworker_shared
- Het uitvoerbare Miner-bestand wordt bij de commando- en controleserver opgehaald
- Mining begint, vermomd als
mdworker_local
proces
Voor de gek houden
Al deze snelle staging bij de lancering van de applicatiebundel wordt afgehandeld door de reeks shell-aanroepen die zijn ingesloten in het schadelijke binaire bestand. Wij hebben drie verschillende iteraties van deze shell-aanroeplus waargenomen. De eerdere iteratie was minder complex en beschikbaar in een redelijk leesbaar formaat toen het via het strings-hulpprogramma werd gedumpt:
In de latere iteraties is het script omgezet in één grote one-liner. Dit langere script bouwt ook de instellingen van het configuratiebestand voor de miner:
De bash-lus in deze malware heeft een kenmerkende eigenschap die werd overgenomen, maar voor het eerst verscheen in samples in 2019. Ondanks onze veroordeling van de acties van malware-auteurs, is het moeilijk om niet geïntrigeerd te raken door het slimme gebruik van de volgende commando's:
(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\");
Het script draait een continue lus die elke drie seconden de lijst van lopende processen controleert, op zoek naar de Activity Monitor. Zodra het de Activity Monitor vindt, beëindigt het onmiddellijk alle kwaadaardige processen. Als het slachtoffer merkt dat zijn CPU heter draait dan normaal terwijl hij onbewust crypto delft voor de aanvaller, en de Activity Monitor opent om zijn vermoeden te bevestigen, stopt de malware en verbergt zich tot de volgende keer dat het slachtoffer de toepassing start.
In de derde en laatste generatie van het script vonden we een misleidende techniek die vaker voorkomt in Linux-malware. Het script gebruikt de ingebouwde bash-opdracht exec
met de -a
vlag om kwaadaardige processen te starten. Met de -a
vlag kan een aangepaste naam voor het proces worden ingesteld, die verschijnt in de uitvoer van opdrachten als ps aux
. Om op te gaan in de andere lopende processen, koos de auteur van de malware ervoor om de procesnamen in te stellen op de paden van mdworker_local
en mdworker_shared
, wat de namen zijn van legitieme serviceprocessen van de Spotlight-functie. Dit maakt het moeilijker om de kwaadaardige processen op te merken en is een andere ontwijkingstechniek van de malware. Niets te zien hier!
Ventura verhoogt de lat
Zoals we eerder beschreven, vertrouwden de latere iteraties van deze malware niet langer op launchd
voor persistentie, maar op de gebruiker die de illegale software startte om de miner te starten. Met deze aanpak kan de malware CPU-tijd stelen voor de duur van de actieve sessie en biedt het een hoge mate van onzichtbaarheid. Het succes van deze strategie hangt echter af van het regelmatig opstarten van de software door het slachtoffer.
In macOS Ventura heeft Apple beveiligingsverbeteringen aangebracht die een nieuwe uitdaging vormen voor deze aanpak. De strengere co-designing-controles in Ventura controleren of alle notariële apps correct zijn ondertekend en niet zijn gewijzigd door ongeautoriseerde processen, zelfs niet na de eerste lancering. Dit is een verbetering ten opzichte van eerdere versies van macOS, waar Gatekeeper applicaties alleen valideerde tijdens de eerste keer opstarten en het bestand als vertrouwd beschouwde zodra het succesvol was gestart.
In dit geval passen de belangrijkste torrentclients op macOS (namelijk Transmission en uTorrent) geen quarantainekenmerken toe, waardoor de validatiecontroles op een macOS Monterey-systeem worden omzeild. Maar op macOS Ventura kon de gewijzigde versie van Final Cut Pro, ondanks het ontbreken van quarantaine-attributen, niet worden opgestart en kregen we een foutmelding. Dit kwam doordat de malware de oorspronkelijke ondertekening van de code intact liet maar de toepassing wijzigde, waardoor de handtekening ongeldig werd gemaakt en het beveiligingsbeleid van het systeem niet werd nageleefd. De voortdurende controles in Ventura maken het moeilijker om deze validatie te omzeilen, in tegenstelling tot eerdere versies waar deze omzeild kon worden door het quarantainekenmerk te vermijden of te verwijderen.
Aan de andere kant voorkwam macOS Ventura not dat de miner werd uitgevoerd. Tegen de tijd dat de gebruiker de foutmelding krijgt, is die malware al geïnstalleerd. De gewijzigde versie van Final Cut Pro kon daardoor niet worden opgestart, wat bij de gebruiker argwaan zou kunnen wekken en de kans op verder gebruik sterk zou verminderen.
Nog één ding...
Voordat we deze malwarefamilie DOA verklaren met de Ventura-beveiligingsupdates, moet worden opgemerkt dat deze foutmelding alleen werd gezien op de illegale versies van Logic Pro en Final Cut Pro (beide Apple-titels). Op het moment van schrijven start de illegale Photoshop die is geüpload door wtfisthat34698409672 nog steeds met succes zowel de kwaadaardige als de werkende componenten op de nieuwste versie van macOS Ventura 13.2 en eerder. Dit lijkt te komen door een klein verschil in hoe het uitvoerbare bestand in de werkkopie van Photoshop wordt aangeroepen, vergeleken met hoe de uitvoerbare bestanden van Final Cut en Logic Pro worden gestart. Deze kunnen waarschijnlijk worden hersteld met kleine aanpassingen van de auteur van de malware.
Epiloog: het gevaar van illegale toepassingen
Illegale software geleverd via peer-to-peer netwerken is om meerdere redenen een ideaal mechanisme om malware af te leveren:
1. Tot macOS Ventura uitkwam was bestandsquarantaine een essentieel onderdeel van de macOS-malwarestrategie. Het toepassen van het quarantainekenmerk op gedownloade bestanden is van oudsher een 'opt-in'-aangelegenheid en grote torrent-clients kiezen er bewust voor om het quarantainekenmerk niet toe te passen op de bestanden die zij downloaden, waardoor een van de grootste beveiligingshindernissen voor auteurs van malware wordt weggenomen.
2. Voor alle resterende hindernissen heeft de auteur van de malware een onwetende medewerker, namelijk de gebruiker die de illegale applicatie heeft gedownload. De gebruiker kan worden overgehaald om handmatig andere beveiligingsfuncties, zoals Gatekeeper, uit te schakelen. Neem bijvoorbeeld deze tekst uit het bestand README.txt :
Als je problemen ondervindt met de image (vervelende 'image/toepassing is beschadigd'-berichten waardoor het lijkt alsof je dingen niet kunt openen), voer je de volgende opdracht uit in Terminal:
sudo spctl --master-disable
(Opmerking: dit commando wordt gebruikt om de Gatekeeper-functionaliteit volledig uit te schakelen. Bedenk dat er geen vervolginstructie is voor het opnieuw inschakelen)
3. Er is ook een psychologische component. De gebruiker weet dat hij iets illegaals doet en dus is niet verwonderlijk dat de ingebouwde beveiliging van Apple voorkomt dat hij illegale Apple-software draait. Bovendien, als de gebruiker uiteindelijk vermoedt dat hij per ongeluk malware op zijn werkcomputer heeft laten draaien, is de kans veel kleiner dat hij aan iemand van de beveiligings- of IT-afdeling zal uitleggen wat er is gebeurd.
Jamf Protect rapporteert specifiek of Gatekeeper is uitgeschakeld op eindpunten.
Alle bekende versies van deze malwarefamilie worden gedetecteerd en geblokkeerd door Jamf Protect Threat Prevention.
De ontdekte malware-samples werden gedeeld met Apple. Vanaf versie 2166 zijn de handtekeningen van XProtect ook bijgewerkt als verdediging tegen deze bedreiging.
IoC's
Universele binaire bestanden
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's
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's
cedd8f8ae61dc47130c34b39d9795083cc90ac1f
Bash-scripts
fbdf0af70f95d3c87cf8bcacc2d6673d9ccd4620
8701f8b0aeb2c66298eb1b4297d98664f8c1f1b9
5b304a1da9f56e8ffdfb68940fdd0bc2887d2eb9
ecffd9553c67478a55f7303f6cadf356101f9216
80f2682d60303ea9098444a35cb35e697ae18187
638ef84a29c747419027c306833d6420d351b244
Schrijf je in voor de Jamf blog
Ontvang markttrends, Apple-updates en Jamf-nieuws rechtstreeks in je inbox.
Raadpleeg ons Privacybeleid voor meer informatie over de manier waarop we uw gegevens verzamelen, gebruiken, bekendmaken, verplaatsen en bewaren.