Home » Android » O analiza a vulnerabilitatii tel URI
formats

O analiza a vulnerabilitatii tel URI

Acum câteva zile a fost prezentată o vulnerabilitate a telefoanelor Samsung prin care se poate face ștergerea completă a dispozitivului de la distanță, fără ca măcar utilizatorul să fie conștient de acest lucru.

Aveți un video cu demonstrația mai jos:

Cum e posibilă această vulnerabilitate?

În primul rând trebuie să menționez că atacul în sine e compus din două părți:

  1. Se trimite către telefon un mesaj WAP-Push Service Load, prin care se specifică o adresa web iar telefonul o încarcă imediat. Asta înseamnă că oricine vă poate face telefonul să acceseze orice site. Iar dacă sistemul de operare de pe acel telefon are anumite bug-uri, atunci e posibilă inclusiv extragerea de date confidențiale. Gândiți-va spre exemplu că adresa duce către o aplicație (Java, apk, etc.) si atunci acea aplicație e instalată automat pe telefon. Toate astea fără a fi în vreun fel conștienți de atac.

Soluție: Pentru dispozitivele Android accesați mesajele text, apăsați Meniu, mergeți la Settings, apoi Push Message Settings, iar în final configurați Service Loading pe Prompt sau Never. Dacă nu aveți aceste opțiuni înseamnă că telefonul nu va încărca acea adresă web în mod automat.

2. Cea de-a 2a parte a atacului face uz de resursa „tel:” ce determină telefonul să afișeze acel număr de telefon deja format. Acest URI e foarte util când navigați pe site-uri ce au diferite numere de telefon la contact și, pentru a nu vă nota numărul și apoi să-l formați, se va utiliza tel:numar.  Problema este că la Samsung, dar probabil și alte dispozitive, există un cod ce face reveirea la setările inițiale (wipe) ceea ce presupune pierderea aplicațiilor, pozelor, contactelor, etc. Acum tot ce mai rămâne de făcut e să combinăm resursa „tel” cu codul de ștergere al dispozitivului și cu atacul WAP Push pentru a face o ștergere de la distanță.

Consider că existența unui cod pentru revenirea la setările inițiale nu e o problemă, acest cod fiind prezent cu mult timp în urmă, din 2009 chiar după cum se poate observa aici. Din păcate producătorii de telefoane nu au învățat din greșelile trecutului și încă mai acceptă mesaje WAP-Push. Nu știu câți dintre voi ați încercat să vă abonați la servicii precum horoscop ale operatorului de telefonie, însă atunci când primiți horoscopul zilnic acesta e trimis sub forma unui mesaj WAP-Push. Încărcarea automată a paginii din acest mesaj a fost dezbătută de mai multe ori și chiar eu am discutat despre această problemă.

Mai rămâne de analizat partea cu acel URI tel. Trebuie să menționez că nu toate telefoanele sunt afectate și sunt mai multe tipuri de comportament.

Așadar, care e pericolul?

Zilele trecute am analizat mai multe telefoane cu diferite sisteme de operare. Pentru asta am făcut o pagină de test cu următorul cod:

<html>
<head>
<title> HackATel
</title>
</head>
<frameset>
<frame src=”tel:*%2306%23″ />
</frameset>
</html>

După cum se observă, într-un frame am pus resursa tel cu valoarea *#06#, valoare ce reprezintă codul pentru aflarea IMEI-ului. Apoi am cerut unor personae diferite să acceseze această pagină și să îmi spună dacă telefonul le-a afișat direct IMEI-ul, fără a cere vreo confirmare în prealabil. Astfel am identificat următoarele telefoane vulnerabile: HTC Desire, Samsung Galaxy W, iPhone 3GS, HTC Evo 3D, HTC One X, HTC One XL. Așadar nu doar telefoanele cu Android afișează în mod direct codul fără a cere vreo confirmare.

Pentru a testa și voi am făcut două pagini de test: http://m-sec.net/testtel.html care are codul pentru IMEI și http://m-sec.net/testone.html ce are numărul 100. Accesați-le de pe telefon și vedeți ce se întâmplă. Aș aprecia dacă lăsați și un comentariu mai jos.

Și dacă tot am ajuns la coduri, vreau să fac câteva precizări. În primul rând au apărut destul de multe articole în presă (unu, doi, trei, etc.) sau denumiri de aplicații ce utilizează cuvântul USSD. Din păcate acest lucru este fals și iată de ce.

SS, USSD, MMI

Toate codurile introduse ce conțin caracterul * sau # sunt coduri MMI (Man Machine Interface). Deși au aceeași structură, ele au denumiri și utilizări diferite.

SS sau Supplementary Service sunt acele coduri ce permit modificări ale serviciilor de apel precum redirecționare, apel în așteptare, identitatea apelului. Spre exemplu ##002# determină anularea tuturor redirecționărilor. Astfel de coduri, întrucât sunt și în standard, se află scrise în fiecare dispozitiv, indiferent de producător și sunt aceleași mereu. Mai multe detalii găsiți în 3GPP TS 22.004. Totodată aceste coduri au nevoie să se termine cu apăsarea tastei de apel.

USSD sau Unstructured Supplementary Service Data sunt acele coduri care sun trimise către rețeaua de telefonie în cazul în care nu este recunoscut ca un alt cod din celelalte categorii. Spre exemplu *100# în anumite rețele determină afișarea meniului pentru Self Care. Aceste coduri sunt așadar dependente de rețea. Și aici trebuie apăsată tasta de apel pentru a se executa comanda.  Pentru detalii vedeți 3GPP TS 22.090

Coduri MMI ale producătorului sunt, după cum spune și numele, definite de producătorul respectivului telefon. Acestea conțin întotdeauna caracterele * și #. Prin ele se pot activa meniuri ascunse, schimba anumite funcții doar pentru acel model de telefon, etc. Singura excepție pe care toți producătorii trebuie să o implementeze este codul de aflare al IMEI  *#06#.  În această categorie se încadrează codul pentru wipe de care precizam anterior. Cel mai important aspect e acela că pentru execuția lor nu mai este nevoie de apăsarea tastei de apel, execuția codului făcându-se imediat după scrierea ultimului caracter.

Coduri specifice SIMului – o categorie aparte ce permite schimbarea codului PIN1/2 și deblocarea lui prin cod PUK. Exemplu: **04*PINvechi*PIN1-nou*PIN1-nou#. Aceste coduri nu se trimit către rețea, sunt implementate în fiecare SIM și nu necesită tasta de apel pentru procesare. Specificațiile complete le găsiți în 3GPP TS 22.030

Așadar avem două categorii de coduri ce sunt executate imediat ce ultimul caracter a fost introdus: codurile specifice dispozitivului – introduse de fiecare producător în parte -și codurile specifice cartelei SIM. Tocmai de aceste coduri se folosește atacul. Nu pot spune cu siguranță dacă există și telefoane care formează automat numărul de telefon specificat de “tel” însă nu doar dispozitivele cu Android sunt afectate.

Ținând cont de cele de mai sus, nu sunt de acord cu titlurile (fie de articole fie de aplicații) în care se folosește noțiunea de USSD când de fapt e vorba de altceva.

Pentru a vă proteja de acest tip de atac recomandarea este fie de a instala un alt dialer și de a primi interogare din partea telefonului cu ce aplicație să fie folosită, fie de a instala aplicația TelStop a lui Collin Mulliner din Google Play. Momentan este cea mai bună aplicație de protecție pentru dispozitivele Android în privința acestui atac. Aceasta intercepteaza codul trimis de pe web și, dacă este unul periculos pentru dispozitivul mobil, atunci aveți posibilitatea de a-l bloca sau a continua cu execuția lui. Dacă este pur și simplu un număr de telefon, atunci numărul va și afișat în mod normal.

Cam așa arată telefonul când e instalat încă un dialer:

Din păcate, întrucât nu am încă un dispozitiv iPhone nu știu ce modalitate de protecție ar fi. Lăsați comentariu dacă există ceva asemănător și care să nu necesite Jailbreak. Ca și exemplu, iată ce se poate face:

Tocmai astfel de lucruri aș vrea să văd la producătorii de soluții de securitate. Există încă o mulțime de astfel de atacuri banale și vechi pe care nicio soluție de securitate nu le detectează. Idei am multe pentru îmbunătățirea sau testarea soluțiilor de securitate existente pe piață pentru dispozitivele mobile, așa că cine dorește mă poate contacta și negociem o formă de colaborare.

 

 
Tags: , , ,

5 Responses

  1. […] Update: Citiți un articol mai larg despre vulnerabilitate, cauze și soluții pe ro.m-sec.net […]

  2. […] aflat de vulnerabilitate de pe m-sec.net, un blog romănesc de securitate. Detalii și pe […]

  3. Serban

    Pot sa confirm pentru:

    Nexus S – Cyanogenmod 9
    Xperia Active – stock
    Xperia U – stock
    HTC Desire – stock

    Sunt curios care a fost rationamentul din spatele codurilor MMI si SIM incat sa nu necesite apasarea tastei de apel. Usability?

  4. Laurentiu

    Pe C7 – Symbian Belle cu browser-ul integrat cere confirmare. Opera mobile refuza sa incarce iframe-ul.

  5. vali

    Sony xperia u st25i browserul stock android 4.0.4 la *#06# si nr. 100 prin dialerul tel doar il incarca 7i asteapta confirmarea insa prin comodo antivirus doar*#06# il blocheaza ca fiind un potential pericol insa nr. 100 prin comodo antivirus il incarca in dialer si asteapta comanda

Dă-i un răspuns lui Serban Anulează răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

Poți folosi aceste etichete și atribute HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

© m-sec.net
credit