13/09/2013
17:49

Una nuova minaccia per Android... si tratta del TrojanSMS.Agent.A!


Il CRAM (Centro Ricerche Anti-Malware) della TG Soft ha di recente scoperto e analizzato una nuova minaccia per Android che si nasconde all'utente al fine di rubare dati sensibili e prendere il controllo degli SMS.

Il CRAM (Centro Ricerche Anti-Malware) della TG Soft ha di recente scoperto e analizzato una nuova minaccia che, tra gli altri, colpisce gli utenti del sistema operativo Android. Si tratta del TrojanSMS.Agent.A che, una volta installato, si nasconde all'utente al fine di rubare dati sensibili (come ad esempio il numero di telefono, l'IMEI, ...) e prendere il controllo degli SMS.

Nome: application.apk Android.TrojanSMS.Agent.A
Package: com.android.system
MD5: E4941DF174EE0700E004904C7C8C132F
Dimensione: 20.480 Byte

Quando si prova ad installare questa app malevola, che si da il nome di "Android", essa richiede i seguenti permessi (dichiarati all'interno del file AndroidManifest.xml):
  • android.permission.INTERNET
  • android.permission.WRITE_SMS
  • android.permission.READ_SMS
  • android.permission.SEND_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.WRITE_EXTERNAL_STORAGE
  • android.permission.WAKE_LOCK
  • android.permission.READ_PHONE_STATE
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.READ_CONTACTS
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.CHANGE_COMPONENT_ENABLED_STATE
In particolare, tra i vari permessi riguardanti gli SMS, segnaliamo SEND_SMS e RECEIVE_SMS. Il primo di questi due permessi permette all'app di inviare SMS, mentre il secondo indica che l'app intende monitorare gli SMS in arrivo al fine di memorizzarli o di eseguire operazioni su di essi. Inoltre, tra gli altri permessi, segnaliamo anche RECEIVE_BOOT_COMPLETED e WAKE_LOCK. Il primo di questi due permessi indica che l'app vuole ricevere un avviso non appena il sistema operativo si avvia, mentre il secondo permette di evitare che il processore vada in "sleep" e/o allo schermo di oscurarsi.

Ricordiamo che è sempre buona norma LEGGERE ATTENTAMENTE i permessi che una app richiede prima di installarla!


Android.TrojanSMS.Agent.A


Dando un'occhiata all'AndroidManifest.xml, inoltre, possiamo vedere che la prima Activity che verrà lanciata, una volta avviata l'applicazione, sarà AppDownloaderActivity e il suo nome sarà quello con ID app_name dichiarato nel file res/strings.xml (ossia fonts). Inoltre, possiamo vedere che l'app è composta, oltre che da questa Activity, anche da un Service chiamato SystemService e quattro BroadcastReceiver chiamati rispettivamente SmsReceiver, il quale richiede il massimo della priorità (1000), OnBootReceiver, IncomingCallReceiver e ServiceController.
Tra le stringhe dichiarate in res/strings.xml, possiamo notarne una particolare con ID hello, il cui valore è "rus mod by 13nikita успешно установлен".

Una volta installata, l'app si presenta in un primo momento tra le nostre applicazioni, con il nome di fonts.

Android.TrojanSMS.Agent.A

Se lanciamo l'app, essa ci mostra una schermata nera con un messaggio che dice: "Android System Update Installed". In background, nel frattempo, l'app si auto-cancella dal menù delle applicazioni (disabilitando l'attività AppDownloaderActivity) e lancia un servizio, chiamato SystemService, che si aggancia all'avvio del sistema operativo in modo da avviarsi in automatico ad ogni riavvio del dispositivo.

Android.TrojanSMS.Agent.A     Android.TrojanSMS.Agent.A


In particolare, analizzando la classe AppDownloaderActivity, possiamo notare come questa lanci SystemService utilizzando localIntent.setFlags(268435456), ossia lanciando il servizio come un nuovo task (il valore 268435456 infatti corrisponde a FLAG_ACTIVITY_NEW_TASK). Inoltre, notiamo come venga chiamato il metodo del PacketManager di Android setComponentEnabledSetting(localComponentName, 2, 1) che serve per abilitare alcuni settaggi di un particolare componente (in questo caso AppDownloaderActivity stessa). In particolare, questo metodo viene chiamato con 2 (valore corrispondente a COMPONENT_ENABLED_STATE_DISABLED) come nuovo stato, che sta ad indicare che l'Activity verrà disabilitata a prescindere da ciò che è dichiarato nel AndroidManifest.xml, e con 1 (valore corrispondente a DONT_KILL_APP) come flag, che sta ad indicare che questo non deve comunque fermare/uccidere l'app.

Android.TrojanSMS.Agent.A

Analizzando la classe SystemService, possiamo notare come questa dichiari due variabili statiche, mainurl e url, di cui la prima contiene il domain: online17.ru. Questo domain risulta essere dislocato in Russia, avere nome mailkryton.beget.ru e indirizzo IP 91.106.203.33.
Una volta avviato, SystemService procede ad avviare un AsyncTask, chiamato addTask, interno alla stessa classe che si occupa di fare alcune operazioni in background e a settare un AlarmManager che si ripete ogni 3 minuti e che provvede ad avviare ServiceController.
Nel background, addTask si occupa di connettersi all'indirizzo IP 91.106.203.33, all'URL: http://online17.ru/dev/reg.php?country=[...]&phone=[...]&op=Android&balance=[...]&imei=[...]. In questo modo, il malware invia alcuni dati sensibili dell'utente, quali: il codice ISO del paese, il numero di telefono, il sistema operativo (da questo possiamo dedurre che esistono versioni del malware che bersagliano altri sistemi operativi oltre Android), l'IMEI (International Mobile Equipment Identity) e un campo chiamato balance che crediamo possa essere il credito della scheda SIM. Il server analizza i dati inviati e, se questi dovessero essere quelli standard dell'emulatore di Android (ad esempio 15555215554 come numero di telefono, 000000000000000 come IMEI e 0 come balance), il server risponderà avvisando il malware che il dispositivo in cui il malware è installato è nella blacklist.

Inoltre, il malware si connette ripetitivamente, ogni 3 minuti circa ad: http://online17.ru/dev/getTask.php?imei=[...]&balance=[...]. Questo, probabilmente, per aggiornare il campo balance del dispositivo nel server. Se stiamo utilizzando un dispositivo reale (o, comunque, non siamo stati messi nella blacklist), allora, nella sua risposta, il server indicherà tra gli altri anche la data di infezione, la data di dell'ultima "attivazione", l'operatore telefonico e, in un campo chiamato balance, l'indirizzo IP del dispositivo.

Android.TrojanSMS.Agent.A

Analizzando la classe OnBootReceiver, possiamo notare come questa semplicemente si occupi di agganciarsi all'avvio del sistema operativo e di lanciare SystemService, sempre utilizzando il flag FLAG_ACTIVITY_NEW_TASK al fine di lanciare il servizio come un nuovo task.

Android.TrojanSMS.Agent.A

Analizzando la classe ServiceController, possiamo notare come questa si occupi di fare alcune operazioni in background, come ad esempio: mandare SMS tramite il metodo sendSMS(), creare un file di log chiamato log.file all'interno della scheda SD tramite il metodo appendLog(), e salvare un apposito segnalibro all'interno del browser tramite il metodo saveBookmark().

Android.TrojanSMS.Agent.A

Infine, analizzando la classe SmsReceiver, possiamo notare come questa si occupi di scansionare gli SMS ricevuti attraverso il metodo onReceive() e, se il numero del mittente contiene le sequenze numeriche "088011" o "000100", il malware cerca nel testo degli SMS il pattern dato dall'espressione regolare "-?\\d+" (ossia zero o un "-" seguito da uno o più numeri). Se questo pattern è trovato, allora viene memorizzato all'interno della variabile statica secretcode.
Inoltre, all'interno di questa classe è dichiarata anche un'altra classe, chiamata Scan (Runnable), all'interno del cui metodo run() si occupa di scansionare gli SMS e, nel caso in cui trovi SMS in arrivo da determinati mittenti, prima segna i messaggi come già letti (probabilmente per far si che il sistema operativo non notifichi il messaggio stesso) e poi gli elimina.

Android.TrojanSMS.Agent.A


-------------------------
Analisi a cura di:
Paolo Rovelli & Gianfranco Tonello
CRAM (Centro Ricerche Anti-Malware) di TG Soft

Ogni informazioni pubblicata sul nostro sito può essere utilizzata e pubblicata su altri siti internet, blog, forum, facebook e/o in ogni altra forma sia in modalità cartacea che elettronica a patto che venga sempre e comunque citata la fonte esplicitamente “Fonte: C.R.A.M. by TG Soft www.tgsoft.it” con link cliccabile all'informativa e/o pagina web originale da cui sono stati estrapolati contenuti testuali, spunti e/o immagini.

Sarà gradito nel caso di utilizzo dell'informativa del C.R.A.M. by TG Soft www.tgsoft.it nella relazione di articoli di sintesi il riconoscimento/ringraziamento di seguito “Si ringrazia il Centro Ricerche Anti-Malware C.R.A.M. by TG Soft di cui segnaliamo il link diretto all'informativa originale:[link diretto cliccabile]”

Vir.IT eXplorer PRO è certificato dai maggiori enti internazionali: