Ontwijkende cryptojacking-malware voor macOS gevonden in illegale toepassingen

De afgelopen maanden heeft Jamf Threat Labs een type malware gevolgd die opnieuw opdook en onopgemerkt bleef, ondanks dat een eerdere versie bekend was bij de beveiligingsgemeenschap. In dit artikel onderzoeken we deze malware en de blik die het biedt op de voortdurende wapenwedloop tussen malware-auteurs en beveiligingsonderzoekers. Daarnaast benadrukken we de noodzaak van verbeterde beveiliging op Apple-apparaten om veilig en effectief gebruik in productieomgevingen te garanderen.

April 24 2023 op

Jamf Threat Labs

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.

  1. De gebruiker downloadt en dubbelklikt op de applicatiebundel
  2. Het uitvoerbare bestand met daarin de trojan wordt uitgevoerd
  3. Het werkende base64-gecodeerde Final Cut Pro-uitvoerbare bestand wordt geëxtraheerd
  4. Het base64-gecodeerde uitvoerbare i2p bestand wordt uitgepakt en tijdens de uitvoering vermomd als mdworker_shared
  5. Het uitvoerbare Miner-bestand wordt bij de commando- en controleserver opgehaald
  6. 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.