La scorsa settimana il CRAM (Centro di Ricerche Anti-Malware della TG Soft) ha scoperto un nuovo malware per Android molto particolare che tenta di iscrivere l'utente (a sua insaputa) a servizi a pagamento rispondendo in automatico a determinati messaggi SMS.
Questa app maligna pretende di essere un browser. In particolare, almeno stando all'icona, una versione di Internet Explorer per Android.
Package: |
ru.system.android |
MD5: |
FBB707B4689464A2F11BBBCCD114CF4F |
Dimensione: |
117.439 Byte |
L'app, chiamata "Браузер" (parola russa per "browser"), richiede i seguenti permessi:
- CALL_PHONE
- CHANGE_COMPONENT_ENABLED_STATE
- INTERNET
- INSTALL_SHORTCUT
- PROCESS_OUTGOING_CALLS
- READ_EXTERNAL_STORAGE
- READ_PHONE_STATE
- READ_SMS
- RECEIVE_SMS
- SEND_SMS
- WAKE_LOCK
- WRITE_EXTERNAL_STORAGE
- WRITE_SMS
Ora, facendo un po' di attenzione, ci si dovrebbe domandare perchè mai un browser dovrebbe richiedere i
permessi per leggere, scrivere ed inviare messaggi SMS (
READ_SMS,
WRITE_SMS e
SEND_SMS) o quelli
per avviare chiamate telefoniche senza passare attraverso il Dialer (
CALL_PHONE)
e monitorare/modificare/interrompere le chiamate in uscita (
PROCESS_OUTGOING_CALLS).
Ricordiamo che è sempre buona norma LEGGERE ATTENTAMENTE i permessi che una app richiede prima di installarla!
Una volta lanciata, il malware mostra una finta schermata di caricamento/installazione:


Se si clicca sul bottone "Продолжить" ("Procedere"), il malware mostra una schermata di caricamento che non terminerà mai ("Пожалуйста подождите..." è l'equivalente russo di "Attendere prego..."):

Nel frattempo, in background, il malware si elimina dal menù delle applicazioni. Inoltre, essendosi lanciato senza lasciare traccia nello stack di Android, se si esce dall'app (ad esempio cliccando il tasto
home) non sarà più in possibile rientrarvi. Tuttavia, l'app ha ancora 2 processi in esecuzione (quello principale e il servizio
UpdateService).
UpdateService si occupa di avviare ripetitivamente un BroadcastReceiver chiamato
UpdateReceiver ogni ora (36000 secondi), tramite l'utilizzo di un AlarmManager. A sua volta,
UpdateReceiver si assicura che il dispositivo non vada in sleep (schermo e tastiera retroilluminata al massimo della luminosità e CPU in esecuzione), tramite l'acquisizione del
FULL_WAKE_LOCK. Inoltre, lo stesso
UpdateReceiver controlla l'operatore telefonico associato alla SIM del dispositivo infetto. In particolare, se l'operatore telefonico è:
- Mobile Telesystems Russia (MCC+MNC = "25001"), allora invia un messaggio SMS al numero "111" con corpo del messaggio "11";
- MegaFon Moscow Russia (MCC+MNC = "25002"), allora invia un messaggio SMS al numero "000100" con corpo del messaggio "b";
- Bee Line GSM Russia (MCC+MNC = "25099") e il valore del campo "wasreload" nelle SharedPreferences è uguale a "true", allora chiama il numero "*102#" (generalmente questi tipi di numeri sono comandi dell'operatore telefonico, ad esempio per conoscere il credito residuo della propria SIM).
Infine, se l'operatore telefonico non corrisponde a nessuno dei precedenti, ma il nome dell'operatore stesso (
SPN: Service Provider Name) non contiene la stringa
"tele" o
"теле" (solo in Russia, tra gli operatori telefonici esclusi, vi sono:
BM Telecom,
Don Telecom,
Telecom XXI,
Mobile Telesystems,
New Telephone Company,
Stuvtelesot e
Primtelefon) e il valore del campo
"wasreload" nelle SharedPreferences è uguale a
"false", allora
chiama il numero "*105#".

Inoltre, il malware ha anche un BroadcastReceiver, chiamato
OutMsgReceiver, che
monitora tutti gli SMS ricevuti. Ogni volta che un SMS viene ricevuto, quest'ultimo controlla se nel corpo del messaggio è contenuta la stringa
"Ответьте на это SMS" ("Rispondi a questo SMS") o
"ответное SMS". In tal caso, allora,
invia un messaggio SMS di risposta al mittente con, come corpo del messaggio, una stringa casuale delle seguenti:
"5",
"3",
"9",
"6",
"ок" e
"да". Probabilmente, questo è fatto con l'intento di iscrivere l'utente (a sua insaputa) a qualche servizio a pagamento attivabile via SMS.
Inoltre, viene anche controllato se il corpo del messaggio contiene alcune stringhe che identificano che il credito insufficiente o il numero bloccato (quali ad esempio:
"недостаточно",
"средств" o
"средства",
"пополнить",
"счет",
"баланс",
"превышен" o
"исчерпан",
"лимит",
"черном",
"списке",
"заблокирован",
"недоступен",
"ошибка",
"услуга",
"недоступна",
"подпис",
"баланс",
"стоимость" o
"цена"). In tal caso, allora, il BroadcastReceiver viene abortito. Se, invece, il testo del messaggio NON contiene nessuna delle stringhe precedenti, ossia se il credito è sufficiente, e il numero del mittente contiene
"111" o
"000100", allora il credito residuo viene memorizzato nel campo "balance" delle SharedPreferences.
Infine, il malware ha anche un BroadcastReceiver, chiamato
OutCallReceiver, che
monitora tutte le chiamate in uscita. Se queste sono dirette ad un numero di telefono che contiene determinate cifre (quali ad esempio:
"0611",
"4959748888",
"88007000611",
"88002500890",
"0890",
"0500",
"0555",
"88005500500",
"88005500555",
"9201110500",
"9201110500",
"9201110555" o
"611"), allora
termina la chiamata.
Da notare che, cablate a codice all'interno del malware, vi sono alcune stringhe corrispondenti a
URL (quali ad esempio:
"mxclick.com" e
"http://qpclick.com/") e alcuni metodi che usano tali stringhe (come ad esempio:
UpdateService.a(),
m.a() e
USSDDumbExtendedNetworkService.onBind()). Tuttavia, il malware non sembra eseguire questi metodi e/o, comunque, connettersi a nessuno di questi
URL.

Link estratto: http://qpclick.com/getTask.php?imei=[DEVICE_ID]&BALANCE=[BALANCE]&country=[SIM_COUNTRY_ISO]&phone=[PHONE_NUMBER]&op=[SIM_OPERATOR_NAME]&mnc=[MNC]&mcc=[MCC]&model=[MODEL]&os=[VERSION]
---------------------------------
Paolo Rovelli
Mobile Developer & Malware Analyst
CRAM (Centro Ricerche Anti-Malware) di TG Soft