Impedisce gli screenshot
Ha FLAG_SECURE: le sue schermate si catturano come zero byte
mentre il resto del sistema si fotografa normalmente. Né la persona che usa il
telefono né un analista possono documentare cosa mostra.
Analisi tecnica · spyware
Un'applicazione presente su Google Play, distribuita come assistenza clienti di un operatore telefonico, non ha quasi nulla dentro di sé: carica la propria schermata dal server di chi la gestisce. E a quel server mette in mano tre leve sul telefono — leggere l'identificativo, registrare il microfono su file, prelevare un file. Non è dedotto dai permessi: è scritto nel suo stesso codice.
Riccardo Bacci — Mythos Sentinel, Terni · 5 settembre 2026
Identità del campione
com.itassistenzaclienti, versione 1.0.CN=teleit: nessuna
organizzazione, nessun paese. Un editore anonimo a fronte di permessi per
microfono, gestione delle chiamate e installazione di pacchetti.La scheda su Play, nella sezione Sicurezza dei dati compilata dall'editore, dichiara «nessun dato raccolto». I contatori di rete del sistema operativo, sul dispositivo di prova, la misurano invece mentre invia 6,5 MB, saliti a 15,1 MB, contro 0,53 MB ricevuti: circa dodici a uno in salita, verso un solo server privato. Non serve sapere cosa stia uscendo perché la dichiarazione risulti smentita: basta il volume.
Il punto decisivo
All'avvio l'app è una WebView che carica la propria interfaccia da
https://telecomunicazioni-mobile.com/support/. La pagina che serve
oggi può cambiare domani, perché è il loro server a deciderla. Ciò che invece è
congelato nel pacchetto — e che quindi conta davvero — è cosa quel server può
ordinare al telefono.
L'activity principale registra un oggetto nativo con
addJavascriptInterface sotto il nome mysupport, ed espone
alla pagina remota tre metodi:
getToken() — restituisce il codice di
abbinamento fra dispositivo e operatore. La pagina osservata durante l'analisi lo
interrogava una volta al secondo e lo mostrava come «il tuo ID univoco,
comunicalo all'operatore».openVoiceNotesActivity() — avvia una seconda
schermata dell'app che possiede un oggetto android.media.AudioRecord
e un metodo che restituisce un file: registra il microfono e lo salva su
disco. È codice dell'applicazione, non della libreria video di terze
parti che incorpora.pickFile(...) — apre un selettore di file:
preleva un file dal dispositivo.
Nella stessa activity ci sono i gestori onCallReceived(...) e
onUrlReceived(...): il server può anche spingere al telefono eventi di
tipo «chiamata» e «apri questo indirizzo».
A corredo
Ha FLAG_SECURE: le sue schermate si catturano come zero byte
mentre il resto del sistema si fotografa normalmente. Né la persona che usa il
telefono né un analista possono documentare cosa mostra.
Il nome mysupport, gli indirizzi e le azioni sono stringhe cifrate
decodificate solo a runtime, e il codice è appesantito da calcoli inutili — xor,
moltiplicazioni, resti — il cui unico scopo è rendere illeggibile il flusso.
Otto classi chiamate tutte ComponentNNNNNNN con numerazione
casuale: il codice non è stato scritto a mano.
Microfono, MANAGE_OWN_CALLS e installazione di pacchetti. Niente
fotocamera, SMS, rubrica, posizione o archivio: non è un'app avida, è un'app
puntata.
Un dettaglio che chiude il quadro: durante l'analisi il server dell'operatore ha risposto con un errore 502, e in quel momento l'app non ha mostrato e non ha fatto nulla. Senza il proprio server è un guscio vuoto — conferma, per l'ennesima via, che è pilotata interamente dall'esterno.
Ripetibile
L'app non si fida delle autorità di certificazione del sistema, né di quelle che
l'utente aggiunge. Nel proprio network_security.xml dichiara una sola
radice di fiducia: un file grezzo imbarcato nel pacchetto,
res/raw/bundle.pem, con 145 certificati pubblici. Non c'è alcun
pinning applicativo. Quel file è l'intera barriera all'ascolto.
bundle.pem, portandolo da 145 a 146 certificati, e verificato che
l'ultimo fosse esattamente il nostro. Essendo un file grezzo e non una risorsa
compilata, non è servito alcun decompilatore.arm64_v8a, hdpi e it — con un'unica chiave
usa-e-getta, perché l'installazione a più parti pretende una firma coerente.
Al primo avvio il traffico decifrato mostra
GET /support/9.html?language=it&packagename=com.itassistenzaclienti
che risponde 200 (2.555 byte), seguito da main.css e
icon.png. Negli header non viaggia alcun identificatore sensibile in
chiaro: solo x-requested-with e il modello del dispositivo.
Il limite, dichiarato
Non abbiamo catturato i dati in uscita. Per farlo avremmo dovuto sostituirci all'operatore, ordinare al telefono di accendere il microfono e leggere i byte che tentava di caricare: significa mettere in funzione dal vivo lo strumento di sorveglianza, e non è un'azione che si compie a prescindere dal fine. Quindi qui si parla di capacità dimostrata e comportamento misurato, non di contenuti intercettati.
Per la stessa ragione due cose presenti nel pacchetto non le contiamo come prova. I riferimenti a registrazione dello schermo, WebSocket e caricamento in più parti vengono dall'SDK video di Stream e dalla libreria di rete Retrofit che l'app incorpora: la loro sola presenza non dimostra un uso. E la schermata di registrazione non parte da sola — apre un'interfaccia con pulsanti e richiede un tocco, il che significa che l'operatore deve guidarci la persona al telefono. Lo scriviamo perché la regola che ci siamo dati è descrivere il comportamento, non attribuire l'intenzione.
Per chi difende
telecomunicazioni-mobile.com93.186.254.171
(host171-254-186-93.serverdedicati.aruba.it, server dedicato Aruba
in Italia — unico destinatario su 30 campionamenti)com.itassistenzaclientiCN=teleit, SHA-256
c37ab648 96d44ffe 831f6309 e5f66541 3f47b42f 6341d1ef a81b23ba
5d6545ad/storage/emulated/0/.AReaper con dentro un file identificativo
Ricontrollato il 5 settembre 2026: il dominio risolve ancora su
quell'indirizzo, il certificato Let's Encrypt è stato rinnovato il 21 luglio 2026 e
il pannello risponde ancora 200 con lo stesso script che chiama
mysupport.getToken(). L'infrastruttura è mantenuta e attiva.
Questi indicatori sono stati proposti a mvt-indicators, la raccolta usata dal Mobile Verification Toolkit di Amnesty International, così che chiunque usi MVT possa controllare un telefono contro di essi.
Se temi per il tuo telefono
Il travestimento funziona perché è noioso: un'app che si chiama «assistenza clienti», un operatore al telefono, un codice da leggere ad alta voce. Niente di ciò che appare sullo schermo somiglia a un attacco. Le difese pratiche sono altrettanto noiose: installare partendo dalla scheda che hai cercato tu e non da un link che ti hanno mandato, diffidare di qualunque «assistenza» che pretenda una propria app e un codice dettato a voce, e controllare ogni tanto quali app hanno il permesso del microfono.