Sommario
La nuova ondata di malware denominata SparkKitty sta colpendo dispositivi iOS e Android, riuscendo a infiltrarsi sia attraverso store ufficiali come Google Play e App Store, sia tramite canali alternativi. Il funzionamento di SparkKitty si basa su tecniche avanzate di esfiltrazione dati: il malware sfrutta librerie malevole camuffate da componenti legittimi, come AFNetworking.framework o Alamofire.framework su iOS, e moduli Java o Kotlin su Android, per accedere e inviare immagini contenute nelle gallerie degli utenti verso server remoti controllati dagli attaccanti. In particolare, SparkKitty si distingue per la capacità di individuare attraverso sistemi OCR frasi seed e credenziali relative a wallet di criptovalute, ponendo in serio rischio la sicurezza di asset digitali e dati sensibili. Le indagini più recenti suggeriscono collegamenti diretti tra questa campagna e precedenti operazioni come SparkCat, segnalando una continuità nelle modalità di attacco e negli obiettivi, focalizzati prevalentemente su utenti coinvolti nel mondo delle criptovalute.
Modalità di diffusione e vettori di attacco

La campagna SparkKitty si distingue per la capacità di sfruttare molteplici vettori di distribuzione, riuscendo a infiltrarsi sia in store ufficiali che in circuiti informali di app Android e iOS. Nel caso dei dispositivi iOS, i criminali utilizzano profili di provisioning Enterprise per eludere i controlli di sicurezza Apple: tali profili, pensati per distribuire applicazioni interne alle aziende, permettono l’installazione di app fuori dal circuito dell’App Store, spesso senza limitazioni sui dispositivi coinvolti. L’attivazione della minaccia prevede la richiesta esplicita di autorizzazioni per l’accesso alla galleria fotografica, un comportamento anomalo per le app modificate (come le versioni di TikTok alterate oggetto dell’indagine). Il codice malevolo viene occultato all’interno di framework apparentemente legittimi, sfruttando meccanismi nativi di Objective-C per garantire l’esecuzione automatica all’avvio dell’app tramite la funzione load. Questo consente al malware di raccogliere e inviare immagini in tempo reale verso infrastrutture di comando e controllo, senza destare sospetti nell’utente.
Implementazione tecnica e strategie di occultamento
Sul fronte tecnico, SparkKitty adotta tecniche di occultamento sofisticate, tra cui l’uso di librerie fortemente offuscate e la crittografia AES-256 per mascherare le configurazioni e gli indirizzi dei server C2. Il caricamento del payload avviene solo se specifici parametri di configurazione vengono soddisfatti: ad esempio, la corrispondenza tra determinate chiavi nei file Info.plist e valori attesi, condizione necessaria per l’attivazione del codice dannoso. Una volta superati questi controlli, il malware esegue una sequenza strutturata di operazioni: recupero e decifrazione di ulteriori indirizzi C2, verifica dell’autorizzazione all’upload da parte del server remoto, creazione di un database locale per monitorare le immagini già esfiltrate e gestione di callback per inviare in tempo reale nuovi file acquisiti dall’utente. La trasmissione dei dati avviene tramite richieste PUT verso endpoint predefiniti, con informazioni dettagliate sull’app e sul dispositivo, oltre agli identificativi unici dell’utente. Su Android, SparkKitty si presenta sia come trojan classico sia come modulo Xposed in Kotlin, e sfrutta meccanismi simili per individuare e inviare immagini, adattandosi alle diverse versioni di sistema e framework di sicurezza.
Evoluzione delle varianti e tecniche di targeting
L’analisi delle varianti osservate mostra come SparkKitty si sia adattato a diversi contesti e tipologie di app, estendendo la diffusione anche a moduli distribuiti tramite casino app e piattaforme di messaggistica con funzionalità crypto. In alcuni casi, la logica di selezione delle immagini da esfiltrare si basa su controlli interni (ad esempio la presenza di specifiche stringhe o pattern riconosciuti via OCR), mentre in altri si rileva un’esfiltrazione indiscriminata di tutte le immagini presenti nella galleria. Questa flessibilità operativa, unita all’uso di tecniche di code hooking e di risposta dinamica ai server C2 (incluso il bilanciamento sulla base dei tempi di risposta), rende SparkKitty particolarmente insidioso e difficile da bloccare. Un ulteriore livello di pericolosità è dato dall’integrazione del malware direttamente nel codice delle app pubblicate sugli store ufficiali, senza appoggiarsi a framework di terze parti, complicando ulteriormente l’individuazione da parte dei sistemi automatici di verifica.
Distribuzione tramite app store e canali alternativi

SparkKitty si è affermato come una delle campagne di spionaggio digitale più sofisticate degli ultimi mesi grazie alla capacità di infiltrarsi sia nei circuiti ufficiali che in quelli paralleli. Diversi casi documentati hanno confermato la pubblicazione di app malevole su Google Play, con oltre 10.000 installazioni, e la presenza di versioni per iOS rilevate anche sull’App Store. In molti casi, queste app si presentano come strumenti di messaggistica dotati di funzionalità legate alle criptovalute oppure come wallet tracker. La distribuzione avviene anche tramite siti web creati appositamente, dove vengono proposti mod di app popolari (come TikTok) oppure progressive web app (PWA) collegate a piattaforme di scam crypto e Ponzi. Gli utenti vengono spesso attirati attraverso campagne pubblicitarie su social network o piattaforme di video sharing, che rimandano a landing page dedicate con istruzioni per l’installazione delle app infette.
Funzionamento su iOS: analisi approfondita

Nel contesto iOS, SparkKitty sfrutta diversi meccanismi per aggirare le restrizioni imposte da Apple. Il vettore principale è costituito dall’uso di profili di provisioning Enterprise che, una volta accettati manualmente dall’utente, abilitano l’installazione di app non certificate direttamente dall’App Store. Al loro interno, le app malevole incorporano framework offuscati come AFNetworking.framework o Alamofire.framework, modificati rispetto alle versioni originali open source, con l’aggiunta di classi come AFImageDownloaderTool responsabili della raccolta e trasmissione delle immagini. Il codice dannoso si attiva già nella fase di caricamento tramite la funzione load di Objective-C, senza necessità di interazione utente. Dopo aver richiesto l’accesso alla galleria, SparkKitty crea un database locale per tenere traccia delle immagini già esfiltrate e invia i nuovi file rilevati verso indirizzi C2, previa autorizzazione del server remoto. Le informazioni trasmesse includono dettagli sul dispositivo e sull’applicazione, rendendo estremamente difficile individuare il flusso di dati anomali attraverso una semplice analisi del traffico.
Moduli malevoli su Android e meccanismi di esfiltrazione

Sul versante Android, SparkKitty si diffonde sia come trojan embedded nelle app sia sotto forma di moduli Xposed scritti in Kotlin o Java, spesso incorporati in app con funzionalità legate al mondo crypto. L’attivazione del codice malevolo avviene già all’avvio dell’app, con la richiesta e decifrazione di file di configurazione criptati AES-256 che contengono indirizzi C2. La verifica dell’autorizzazione all’upload viene gestita dinamicamente in base alle risposte JSON dei server di comando, che specificano se e quando avviare l’esfiltrazione delle immagini. Il malware esegue inoltre controlli sull’hash MD5 dei dispositivi infetti, distinguendo tra modalità operative “debug” e “release” e caricando tutte le immagini o solo una selezione mirata, probabilmente per eludere i controlli automatici durante la fase di test. Nelle varianti distribuite tramite casino app, SparkKitty utilizza framework come LSPosed per iniettare codice all’interno di applicazioni legittime, aggirando le difese degli app store e ampliando la superficie di attacco.
Tecniche di offuscamento e resilienza
L’evoluzione delle versioni di SparkKitty evidenzia un investimento considerevole in tecniche di offuscamento e resilienza. Oltre all’uso di framework e librerie con nomi e simboli modificati, sono stati identificati campioni che utilizzano versioni manipolate di librerie crittografiche come libcrypto.dylib, spesso offuscate con LLVM e collegate a configurazioni già riscontrate in altri moduli della campagna. La catena di comunicazione con i server C2 è interamente cifrata e distribuita su più endpoint, selezionati dinamicamente in base ai tempi di risposta. Questo approccio rende la rete di comando estremamente difficile da bloccare, mentre la segmentazione delle funzionalità tra diversi moduli consente al malware di sopravvivere anche in caso di rimozione parziale da parte dei team di sicurezza degli app store.
Connessioni tra SparkKitty, SparkCat e altri cluster di attività
Le analisi forensi condotte su SparkKitty hanno permesso di individuare collegamenti diretti con precedenti campagne come SparkCat, già note per la loro efficacia nell’esfiltrazione di seed phrase e credenziali crypto. La continuità nelle modalità di attacco si riflette nell’impiego di OCR avanzati per l’individuazione di stringhe sensibili all’interno delle immagini, così come nell’uso di store fake e landing page clone delle piattaforme ufficiali. Numerosi domini coinvolti nelle attività SparkKitty risultano riconducibili alle stesse infrastrutture operative già utilizzate in SparkCat, a conferma di una regia comune e di un’evoluzione della minaccia verso forme sempre più elusive e specializzate. L’attenzione costante verso le community crypto, unite a un’ampia offerta di app “modificate” o “exclusive” veicolate tramite gruppi Telegram, campagne social e piattaforme video, rafforza la strategia di targeting mirato di utenti con asset digitali di valore.
Analisi dei rischi per utenti esperti e prospettive di difesa
Nonostante SparkKitty adotti tecniche spesso invisibili ai sistemi di difesa tradizionali, è possibile individuare alcuni segnali di compromissione, come richieste anomale di permessi sulle gallerie immagini, traffico cifrato verso indirizzi sospetti e comportamenti anomali dopo l’installazione di app provenienti da canali non ufficiali. L’adozione di sistemi di monitoraggio avanzati, la verifica approfondita dei permessi richiesti dalle app e l’aggiornamento costante dei dispositivi rappresentano contromisure essenziali, soprattutto per utenti operanti nel settore crypto e finanziario. È cruciale inoltre prestare particolare attenzione alla provenienza delle app e diffidare da strumenti che promettono funzionalità extra rispetto a quelle disponibili negli store ufficiali, anche quando l’interfaccia appare identica alle versioni originali.
Dettaglio tecnico: meccanismi di crittografia e trasmissione dati
Dal punto di vista tecnico, SparkKitty rappresenta un esempio avanzato di modularità e automazione nei processi di attacco. La crittografia AES-256 in modalità ECB viene utilizzata sia per proteggere le configurazioni interne sia per la trasmissione degli indirizzi C2 e dei dati utente. Le chiavi di cifratura sono spesso codificate nei file Info.plist delle app malevole o nei database di preferenze utente, mentre i payload aggiuntivi vengono caricati solo dopo aver superato verifiche di integrità e corrispondenza tra parametri interni. La logica di trasmissione dati si basa su richieste HTTP PUT multipart, con un controllo centralizzato da parte dei server C2 sull’autorizzazione all’upload delle immagini. Il caricamento selettivo di file, in funzione delle risposte dei server e degli hash dei dispositivi, rende difficile intercettare tempestivamente le attività malevole. L’integrazione di moduli Xposed su Android e di framework nativi su iOS garantisce infine la persistenza del malware anche in caso di parziali aggiornamenti di sicurezza da parte dei produttori.