Tornar al Blog

El malware de macOS que no explota res: l'enganxes tu al Terminal

Sense CVE. Sense exploit. Amb permisos d'usuari.
macOS · ClickFix · Keychain i galetes de sessió

El 6 d'agost, Huntress va publicar el desmuntatge d'un lladre de credencials per a macOS escrit en Go. El van trobar al juny, en una cerca retrospectiva, dins d'un Mac que ja monitoritzaven: hi feia uns tres mesos que hi era. El que fa interessant el cas no és el binari, que és el de sempre. És que en tota la cadena no hi ha cap vulnerabilitat. No hi ha CVE per buscar, ni versió mínima on arribar, ni pedaç per aplicar dimarts. Hi ha un web que dicta una ordre a una persona i una persona que l'enganxa al Terminal.

La tècnica té nom des de fa un parell d'anys —ClickFix— i va néixer al Windows: el fals CAPTCHA, el «prem Win+R i enganxa això per verificar que ets humà». Contra macOS no és nova: el mateix Microsoft va documentar al maig una campanya amb esquers de falses utilitats per a Mac. El que va canviar a l'agost és que la infraestructura va aprendre a amagar-se. Un dia abans de l'informe de Huntress, el 5 d'agost, Microsoft Threat Intelligence va publicar l'anàlisi de més de 250 dominis muntats per servir aquests esquers, amb un filtre al davant que decideix a qui els ensenya.

El primer que fa l'ordre no és robar

Huntress publica l'ordre sencera, i està escrita per algú que ha pensat què passarà després. Tot va dins d'un subshell en segon pla amb la sortida redirigida a /dev/null: descarrega un script amb curl des d'una adreça IP, l'executa amb bash i esborra el fitxer temporal. Després vénen quatre instruccions que no roben res: clear, un printf amb la seqüència d'escapada que buida la memòria de desplaçament de la finestra, un history -d que elimina de l'historial la línia acabada d'executar i un fc -p /dev/null que desenganxa el fitxer d'historial.

Traduït: quan la persona aixequi la vista de la pantalla, la finestra estarà neta i no hi haurà res per ensenyar. Si demà aquesta persona sospita i truca al seu informàtic, el primer que farà l'informàtic és demanar-li que obri el Terminal i miri què va enganxar. No ho trobarà. Aquest esborrat apunta al teu procés de resposta: a la conversa de l'endemà.

El Gatekeeper no falla: és que no hi és convidat

Aquí és on cau l'argument amb què fa anys que convivim, el de «al Mac això no passa perquè Apple ho signa tot». L'script que es descarrega perfila la màquina amb ioreg i system_profiler, mira uname -m per saber si és Apple Silicon o Intel, es baixa el binari Mach-O que toca i el deixa en una carpeta creada a propòsit dins de ~/Library/Caches/ amb un nom que imita un servei del sistema. Després li dona permisos d'execució i executa xattr -d com.apple.quarantine a sobre.

Aquest atribut estès, com.apple.quarantine, és la marca que el navegador i el Finder posen al que baixa d'internet, i la que dispara la comprovació de notarització i el diàleg de «segur que ho vols obrir?». Aquí hi ha un detall que ho arrodoneix: curl no posa aquesta marca. El que baixa pel shell ja neix sense, així que aquest xattr -d és un cinturó sobre uns tirants que ningú no duia. El Gatekeeper no ha estat burlat ni ha fallat: no hi va arribar a intervenir mai, perquè la via d'entrada no va ser una descàrrega oberta amb doble clic, va ser el teu shell obeint-te.

La persistència segueix la mateixa línia. El binari acaba en una altra carpeta de memòria cau amb nom de servei d'Apple i es registra amb launchctl bootstrap gui/501 apuntant a un LaunchAgent anomenat com.apple.softwareupdated.plist. És a dir: a la llista d'elements en segon pla del teu Mac apareix una cosa que es diu gairebé igual que l'actualitzador de programari del sistema. I per escalar, un osascript que demana la contrasenya amb l'aspecte d'un diàleg normal de macOS: totes les peces són eines natives fetes servir tal com estan documentades. El binari, a més, va signat —a l'Apple Silicon el nucli no executa res sense signatura—, però una signatura ad-hoc la genera el mateix compilador i no identifica ningú. El que aquest binari no passa mai, perquè ningú no l'hi demana, és la notarització d'Apple.

DRAIN_PCT: la variable que diu molt

La part que s'ha endut els titulars és la funció que Huntress va trobar dins del binari, anomenada DRAIN: busca adreces de moneder de Bitcoin, Litecoin, Dogecoin, Monero, Ethereum i XRP, consulta el saldo a la cadena i, si hi ha fons, treu una adreça de destinació d'una llista incrustada al mateix binari o del seu servidor de control i hi transfereix el valor. Amb un detall que els analistes subratllen com a novetat: una variable DRAIN_PCT que permet endur-se un percentatge en comptes del saldo sencer.

Un lladre que s'endú el 100% es descobreix aquella mateixa tarda. Un que s'endú una part pot passar per un error de l'aplicació, per una comissió estranya, per «mira, quina cosa». La diferència entre robar i munyir és exactament la diferència entre un incident d'un dia i un de tres mesos. I convé dir el matís honest, que la mateixa Huntress apunta: les carteres que apareixen al binari no tenien transaccions registrades públicament. No estem mesurant un botí, estem mesurant una capacitat.

En una empresa, el car no és la cripto

Si el Mac infectat és el d'una empresa que no toca criptomonedes, és fàcil llegir això i arxivar-ho. Seria un error. La llista del que el mateix binari s'endú abans d'arribar al moneder és la de sempre: contrasenyes desades al navegador, el Keychain, les galetes en memòria cau i credencials del sistema. La galeta de sessió és la joia, i la raó és la que ja hem explicat aquí: una sessió ja emesa no torna a demanar el segon factor. Qui la reutilitza no s'està autenticant, està sent tu.

D'aquí surt la conseqüència pràctica que més es salta la gent quan neteja un equip: canviar la contrasenya no tanca res. Si no es revoquen les sessions i es revisen les aplicacions connectades, l'atacant continua a dins amb el token que ja tenia mentre l'usuari es felicita per la contrasenya nova.

«Jo me n'hauria adonat» no és un control

L'informe de Microsoft del 5 d'agost és el que convé ensenyar a qui respon això. Davant de les pàgines esquer hi ha un filtre d'uns 2,5 KB de JavaScript que examina la plataforma declarada pel navegador, la mida de pantalla i de finestra, senyals de WebGL, la zona horària, si la pàgina va dins d'un iframe i si el dispositiu té pantalla tàctil. I porta dos paranys específics per a analistes: un comptador que detecta si tens la consola de desenvolupador oberta i una comprovació de suport de còdecs amb canPlayType("video/mp4"), pensada per caçar navegadors sense interfície, els que fan servir els sistemes d'anàlisi automàtica.

Si el filtre decideix que ets un investigador, no t'ensenya l'atac: et serveix una altra cosa. La víctima veu la pàgina maliciosa; qui l'aniria a comprovar, no. A això s'hi suma l'embolcall: pàgines que imiten descàrregues de GitHub amb una insígnia d'«editor verificat» falsificada. La cadena que Microsoft va seguir a través d'aquest filtre acabava en AMOS, la família de lladres de macOS més estesa dels últims anys, i el conjunt de la campanya també distribuïa MacSync.

És el mateix patró que vam veure amb les xarxes wifi d'hotels manipulades per robar sessions de Microsoft 365: l'objectiu ja no és el teu servidor, és l'estona en què la teva gent és fora de l'oficina amb un portàtil i amb pressa.

El que Apple va fer al març, i per què no n'hi ha prou

Convé reconèixer-ho: Apple ho va veure venir i va actuar. A macOS 26.4, al març del 2026, va aparèixer un avís nou en enganxar certes ordres al Terminal. El text és directe —«Possible malware, Paste blocked»— i explica que els estafadors solen demanar que s'enganxin instruccions al Terminal, i que el Mac no ha patit cap dany. És una defensa ben pensada, al lloc exacte on passa el problema, i va arribar abans que els informes d'agost.

I tot i així no tanca l'assumpte, i el mateix document de suport d'Apple deixa veure per què. No hi ha un avís, n'hi ha dos nivells. El tou —el del «Possible malware»— porta un botó per enganxar igualment, i qui fa vint minuts que es baralla amb un «error» que li impedeix veure un document el premerà. El dur bloqueja sense sortida, però salta quan allò enganxat coincideix amb programari maliciós ja conegut, que és justament el que no serà l'ordre de la campanya següent. I hi ha un tercer matís, el més interessant: Apple explica que l'avís està pensat per a qui no fa servir el Terminal habitualment i enganxa una cosa que li ha arribat d'un correu, d'un xat o d'una font semblant. Protegeix bé qui no l'obre mai. No l'administrador que el té obert tot el dia, que és qui més mal pot fer si s'equivoca.

Els tres mesos són el titular

Tornem al principi, perquè la dada incòmoda del cas de Huntress no és el DRAIN. És que el Mac estava monitoritzat i el bitxo va sortir en una caça retrospectiva, mesos després d'entrar. Sembla que ningú no se n'havia adonat en aquell moment. Això no s'arregla comprant un antivirus millor: un antivirus decideix en l'instant en què veu el fitxer i, si en aquell instant no el coneix, el deixa passar; que hi torni a mirar depèn que algú llanci una altra anàlisi quan ja existeixi la signatura.

El que va salvar el cas va ser l'altra meitat: telemetria desada —quin procés en va llançar un altre, què es va registrar als elements d'arrencada, què va sortir per la xarxa— i algú fent-hi preguntes setmanes després. Aquesta és la diferència entre detecció i caça, i és exactament el que muntem quan parlem d'EDR i MDR: no només l'agent que bloqueja, sinó l'històric que permet preguntar «això hi és des del març?» i obtenir una resposta. Sense aquest històric, la resposta honesta a aquesta pregunta és «no ho sé», i amb «no ho sé» no es tanca un incident.

Què faríem dilluns

Res d'això necessita pressupost nou. Necessita que algú s'assegui un matí:

  • Compta els Macs. No els que són a l'inventari: els que hi ha. El parc Mac sol viure a direcció, disseny i màrqueting, comprat fora del circuit habitual, i acaba fora de la consola on hi ha tota la resta. Ningú no el gestiona, així que ningú no el mira.
  • Comprova que l'agent de seguretat també hi és. Molts contractes d'EDR es despleguen sobre el parc Windows i el Mac es queda «per més endavant». Més endavant va ser el març.
  • Mira els elements d'inici de sessió i els agents. launchctl print gui/$(id -u) i el contingut de ~/Library/LaunchAgents. El que busquis no es dirà «malware»: es dirà com alguna cosa d'Apple. Fixa't en la ruta abans que en el nom: un executable dins de ~/Library/Caches/ no hi hauria de ser.
  • Digues la frase, una de sola, a la propera reunió. Cap web, cap xat de suport i cap trucada et demanarà mai que enganxis una ordre al Terminal. Cap. És l'única regla que cal i cap en una ratlla.
  • Si algú ja ho va enganxar, l'ordre importa. Aïlla l'equip de la xarxa abans de tocar res, i després revoca sessions i rota el que hi hagués al Keychain i al navegador. Reinstal·lar el Mac sense revocar sessions deixa l'atacant dins del núvol amb una màquina neta al davant.

I una cosa que no direm perquè quedaria bé: que cal formar la gent perquè no hi caigui. Formar ajuda. Però l'esquer que Huntress descriu va arribar per correu amb un enllaç, i les pàgines que va analitzar Microsoft imiten descàrregues legítimes amb insígnia de verificat. Dissenyar la seguretat d'una empresa assumint que ningú no s'equivocarà mai no és formació, és optimisme. El que es planifica és el després: que quan algú s'equivoqui, se sàpiga el mateix dia i no al juny.

Detecció i resposta gestionada sobre tot el parc —Windows, Linux i també els Macs que va comprar direcció— és el que operem a EDR i MDR, dins de la feina de ciberseguretat del dia a dia. Si no saps quants Macs hi ha a la teva empresa ni qui els mira, escriu-nos i els comptem amb tu.

Nota sobre fonts. L'ordre de ClickFix amb l'esborrat d'historial, l'script de perfilatge, l'ús de xattr -d com.apple.quarantine, les rutes de memòria cau amb nom de servei d'Apple, la persistència mitjançant launchctl bootstrap i un LaunchAgent anomenat com l'actualitzador de programari, el diàleg d'osascript per capturar la contrasenya, la funció DRAIN amb la seva variable de percentatge, la llista de dades robades i l'absència de transaccions públiques a les carteres, de l'anàlisi Wallet-depleting macOS malware wants your crypto publicat per Huntress el 6 d'agost del 2026, on també consta que la troballa es va produir en una caça retrospectiva al juny sobre un equip infectat uns tres mesos abans. Els més de 250 dominis, el filtre d'aproximadament 2,5 KB de JavaScript amb empremta de navegador, les dues comprovacions anti-analista, les pàgines que imiten descàrregues de GitHub amb insígnia d'editor verificat i les famílies MacSync i AMOS, de l'informe From open lures to cloaked gates: How a macOS ClickFix campaign learned to hide de Microsoft Threat Intelligence, del 5 d'agost del 2026, que referencia a més la seva pròpia recerca del maig del 2026 sobre esquers de falses utilitats per a Mac; cobertura addicional a The Hacker News. L'avís «Possible malware, Paste blocked» del Terminal i la seva arribada a macOS Tahoe 26.4 el març del 2026, de 9to5Mac i Macworld; els dos nivells d'avís —un amb opció d'enganxar igualment i un altre que bloqueja sense sortida davant de programari maliciós ja conegut— i el criteri d'activació (algú que no fa servir el Terminal habitualment enganxant text arribat per correu, xat o una altra font) estan documentats per Apple a If your Mac blocks a Terminal command paste or script. La lectura sobre inventari, telemetria i ordre de resposta és nostra. Imatge de portada: «Apple-desk-laptop-macbook-pro», via Wikimedia Commons, sota dedicació de domini públic CC0.

Compartir:

Subscriu-te al nostre butlletí

Per rebre històries del món IT, novetats d'everyWAN i ofertes exclusives per a subscriptors, dona't d'alta a la nostra llista de correu

everyWAN
everyWAN