Elementi importanti dell’analisi
- Coefficiente d’entropia dell’APK
- Warnings inerenti a possibili Phishing detections
- Profiling dell’utente collegato
- Gathering ed utilizzo del numero di telefono, associato all’account
- Accesso al microfono e telecamera al fine di effettuare registrazioni audio, screenshots e registrare video
- Accesso ai contatti del telefono per condividere l’applicazione
- Cronologia di browsing nell’applicazione e ricerche effettuate
- Richieste HTTP sospette verso due indirizzi IP identificati contenenti diversi attributi e parametri ottenuti
- Configurazione per i parametri delle richieste HTTP
- Ottenimento del device ID ed informazioni del telefono
Introduzione
Temu è una nuova applicazione di e-commerce, disponibile per Windows, Android e iOS, che permette l’acquisto di svariati prodotti a prezzi molto bassi. Diverse preoccupazioni e timori per la sicurezza dei dati e la privacy degli utenti sono emerse dopo la pubblicazione dell’analisi redatta da GlizzlyReports al seguente link: We believe PDD is a Dying Fraudulent Company and its Shopping App TEMU is Cleverly Hidden Spyware that Poses an Urgent Security Threat to U.S. National Interests – Grizzly Research LLC (grizzlyreports.com)
APK assessment
Nella presente analisi è stato preso in considerazione l’archivio APK (versione 2.9.1) con hash 8601e8ec7dc523f02df8bd52a4ac22e3.
L’archivio possiede un alto coefficiente d’entropia che indica una situazione di packing ed obfuscation.
Effettuando una disamina del codice esadecimale dell’applicazione è possibile notare riferimenti al pacchetto baogong, contenente diversi metodi di gestione dei pagamenti, shopping carts enumerations ma anche metodi di hardware information gathering e permessi piuttosto invasivi ma necessari per alcune features di Temu.
A seguire la distribuzione di bytes dell’APK, nella quale si evince una fase di byte shuffling nella regione alta:
A seguire i dettagli della mappatura di memoria dell’archivio APK, ove si evidenzia l’header del file PK, identificante dei files di tipo archivio.
All’interno del dumping esadecimale della sezione possiamo notare il riferimento a stringhe in lingua tedesca e al package app_baogong che permette di gestire nel caso specifico le settings del UI model XML.
Abbiamo evidenza di costrutti riferiti a collegamenti HTML href e pulsanti per la struttura WebView:
A seguire le stringhe estratte relative ad un recente warning per l’applicazione stessa da parte di Google Safe Browsing ed associate a deceptive behaviour, pertanto riferibile a potenziali pagine false che richiedono pagamenti con carta elettronica:
Temu utilizza diversi moduli di tipo Calendar ed attributi per i patterns di DateTime e dayNames, pertanto a seconda della nazionalità del dispositivo sul quale è stata installata l’applicazione, vengono utilizzati diversi approcci di gestione delle date e dei giorni della settimana.
Di seguito alcuni riferimenti a stringhe in cirillico per la selezione multilanguage:
L’ID utilizzato da Temu in contesti di richieste API risulta essere 262921625321:
Temu possiede diverse funzionalità fisiologiche caratteristiche di applicativi e-commerce, tra cui l’aggiunta del numero postale DHL per il corriere, aggiunta della carta di credito (tra cui l’inserimento del numero CVV per effettuare il pagamento tramite metodo 3DS), l’aggiunta del numero telefonico.
Il numero di telefono inserito risulterà pertanto associato con l’utenza collegata. Vi sono poi riferimenti ai permessi richiesti da Temu, quali accesso alla telecamera, accesso allo storage del telefono, accesso al microfono, accesso alla location:
Vi è la possibilità di modificare ed eliminare eventuali ordini effettuati, cancellare pagamenti e metodi di pagamento, come ad esempio PayPal.
È presente una browsing history che tiene traccia della navigazione lato e-commerce effettuata mediante l’utilizzo dell’applicazione. Vi è un modulo di profiling che tiene tracciamento delle attività dell’utenza collegata.
È possibile collegare Temu ai metodi di pagamento Afterpay, Clearpay, Klarna, PayPal e iDEAL.
Qui stringhe di riferimento all’inserimento del codice di verifica dell’account, l’indirizzo e-mail od il numero di telefono associato.
Da una disamina ulteriore delle stringhe estraibili possiamo avere evidenza di patterns codificati in Base64 che fanno riferimento ad un file di certificato:
L’autorizzazione di accesso alla posizione da parte dell’applicazione potrebbe essere dovuta al fatto che la medesima permette di aprire specifici indirizzi con Maps:
Vi è la possibilità di salvare la carta di credito inserita: tale pratica potrebbe essere indesiderata da alcuni utenti che preferiscono sovente inserire le informazioni della carta di credito nel momento del pagamento in fase di effettuazione e autorizzazione mediante sistema 3DS.
Vi è una profilazione in merito agli indirizzi e le ricerche suggerite per attività precedenti:
L’accesso al microfono avviene mediante la funzionalità di ricerca vocale:
L’applicazione richiede l’autorizzazione per modificare la carta di credito utilizzabile per i pagamenti nel caso in cui il metodo di pagamento di default non sia disponibile.
Analisi codice sorgente
A seguire le definizioni degli attributi esadecimali che fanno riferimento ai permessi ottenuti da Temu. Possiamo menzionare i permessi relativi alla camera, accesso ai contatti, accesso al microfono, accesso allo storage, accesso alla posizione attuale, accesso alle impostazioni del telefono ed accesso alle impostazioni di registrazione audio e video.
All’interno del package a00 possiamo notare la definizione di un token identificativo dell’installazione dell’applicazione ed individuazione del network operator.
A seguire una serie di costrutti try-catch, ognuno individualizzante di diversi eventi contestuali alla fase di pagamento:
Il metodo toString è di tipo String e provvede a creare un oggetto StringBuffer, il quale contiene diversi dettagli degli attributi di headers, connessioni e body:
Qui alcuni attributi facenti riferimento a condizioni booleane, ad esempio il controllo della presenza di callback requests:
Qui la fase di costruzione della struttura dei parametri componenti l’oggetto billingAddressModel per la fase di pagamento e checkout con carta di credito.
Vi sono listeners per gli eventi di chiusura di istanze View:
Qui il metodo di conversione in stringa di oggetti CMDataEntity, contenente diversi parametri, tra cui text e timestamp di salvataggio:
Di seguito un riferimento al contenuto della clipboard richiamato in fase di esecuzione del metodo C262781.m18517e:
La classe C0106a contiene numerosi riferimenti alle carte di credito registrate e viene effettuata un’enumerazione delle stesse; infatti nel caso in cui l’oggetto card_content_list sia diverso da null viene richiamato il metodo card_contente_list.m47839d e viene salvato il risultato della chiamata a funzione all’interno della variabile C14414h:
Nel momento in cui vengono richiamate applicazioni di pagamento esterne, sono utilizzati oggetti di tipo PayAppDelegate salvando le URLs target all’interno dell’oggetto c9886a.f30781b nel caso in cui il valore dell’indice i sia 2.
Temu utilizza il metodo di pagamento sicuro 3DS come è possibile notare dal metodo m91108d che permette di effettuare una configurazione per i pagamenti.
Temu salva il client_key del dispositivo sul quale è installata e l’ Android SDK del telefono:
Viene supportato anche il metodo di pagamento Iris:
Di seguito i dettagli del pacchetto HTTP inviato contenente le informazioni ed i dettagli del dispositivo in questione, come ad esempio l’IP, DNS, localhost:
Il metodo com.baogong.bottom_rec.fragment.utils.c.a prende come argomento in input un oggetto hashMap e tramite oggetti UriBuilder effettua chiamate API per le carte di credito Poppy.
A seguire possiamo notare la detonation dell’applicazione in questione ove possiamo notare richieste HTTP comprendenti attributi individualizzanti, quali ad esempio l’ID, l’app ID, il domain package name.
Qui diversi domini di Temu contattati in fase di esecuzione:
Tra i servizi eseguiti possiamo notare connettività e storage. Essa fa uso dei moduli androidxx.JizhanHelper e androidxx.MdfyHelper. Tra i metodi richiamati vi è evidenza dell’ottenimento della tipologia di connessioni in vigore a bordo del dispositivo mediante la funzione booleana android.net.NetworkCapabilities.hasTransport:
Temu ottiene i dettagli delle network security policies, il device ID del dispositivo, imposta gli attributi degli oggetti sockets utilizzati in fase di esecuzione e vi sono events handlers della libreria whaleco.
Viene ottenuto il MAC Address dell’interfaccia di rete utilizzata mediante il metodo java.net.NetworkInterface.getHardwareAddress:
Il package t21 contiene il metodo di tipo String f, il quale ritorna diversi attributi di configurazione del DNS e vengono gestite le richieste HTTP verso gli indirizzi IP 20.15.0[.]56 e 20.15.0[.]9:
Il metodo h ritorna un oggetto di tipo ArrayList di stringhe contenente l’indirizzo IP 20.15.0[.]9:
Anche l’indirizzo IP 20.15.0[.]8 viene inserito all’interno dei parametri ips dell’ArrayList:
Il metodo statico pubblico d è di tipo StNovaSetupConfig. Esso permette di impostare gli attributi di configurazione in merito all’indirizzo IP 20.15.0[.]56 all’interno di un array di tipo String mentre la URI è “/d3” e gli headers vengono inseriti in un oggetto di tipo HashMap.
Con un’analisi DTI dei domini us[.]thtk[.]temu[.]com e us[.]temu[.]com, utilizzati mediante le richieste HTTP attraverso l’indirizzo IP 20.15.0[.]56, è possibile evidenziare i seguenti dettagli relativi alle porte aperte 80 e 443. I dettagli includono gli attributi api_uid, indispensabili per le richieste HTTP e HTTPS:
Il dominio us[.]temu[.]com possiede un’infrastruttura web server nginx:
Qui di seguito diversi attributi statici, array di integers relativi ad oggetti del layout e della gestione delle frame positions:
Vengono ottenuti in modo serializzato alcuni attributi individualizzanti del telefono sul quale viene installata Temu, quali ad esempio tel_location_id ed email_id:
All’interno della classe z1 possiamo notare il metodo di tipo Object a (che andrà poi ad implementare il medesimo all’interno della classe c1), il quale ottiene il serial number associato all’utente con il getter this.f60958a.getSerialNumberForUser(this.f60959b).
All’interno dell’oggetto hashtable2 vengono aggiunti diversi attributi individualizzanti, quali ad esempio gli indirizzi di consegna, serial number, numero di telefono.
All’interno del package cu0 e la classe c possiamo notare l’utilizzo di API di Line[.]me, un’applicazione di messaggistica istantanea:
Temu ha il permesso di accesso ai contatti del telefono con lo scopo di condividere l’applicazione stessa:
Nel caso in cui l’attributo booleano del permesso di lettura dei contatti del telefono sia equivalente a TRUE viene riempito un array di String contenente i contatti enumerati a bordo del telefono:
CONCLUSIONI:
Temu possiede numerose caratteristiche che, nonostante siano fisiologiche e coerenti con la categoria dell’applicazione stessa (e-shopping),presentano alcune criticità in relazione alla conformità alla privacy dei dati personali degli utenti. Questo è il motivo principale per cui Temu potrebbe essere considerata come un’applicazione potenzialmente indesiderata dagli utenti e, di conseguenza, tacciata come “sospetta” dai vari application stores.
Ciò che colpisce di Temu è il livello di profondità a cui accede nei dispositivi sui quali è installata anche per le proprie peculiarità di ottenimento di attributi identificativi, come ad esempio il device ID contestualmente all’invio di richieste HTTP individualizzanti. Secondo i termini e le condizioni di Temu, inoltre, nel caso in cui il metodo di pagamento di default salvato all’interno del proprio account non fosse disponibile, l’applicazione procederà a selezionare una seconda carta di credito (se impostata in precedenza all’interno dei metodi di pagamento).
Alla luce delle superiori evidenze, Temu potrebbein definitiva essere indicato come “GreyWare” in quanto non propriamente identificabile come malware ma comunque in grado di influenzare la user experience, mostrando comportamenti non sempre trasparente non discutibili sul piano della conformità regolamentare della privacy.