Video: LOCKY, cel mai nou crypto troian (virus), face ravagii (Noiembrie 2024)
Semnătura digitală nu este spartă
Întregul punct de a semna digital un document sau un fișier este de a dovedi că fișierul nu a fost modificat. Procesul utilizează o formă de criptografie cu cheie publică. Semnează digital un fișier criptându-l cu cheia privată. Faptul că fișierul criptat poate fi decriptat folosind cheia publică este o dovadă că nu a existat nicio modificare. Dacă BlueBox ar fi găsit o modalitate de a modifica efectiv un fișier fără a-i schimba semnătura digitală, asta ar fi fost o lovitură uluitoare pentru întreaga industrie criptografică. Dar nu au făcut-o.
BlueBox va raporta detaliile complete ale cercetării lor în cadrul conferinței Black Hat în câteva săptămâni. Cu toate acestea, cercetătorul ViaForensics Pau Oliva Fora a postat o dovadă a codului concept care ilustrează abordarea adoptată.
Într-adevăr, este foarte, foarte simplu. Fișierele APK sunt ambalate folosind o versiune a algoritmului răspândit de arhivare ZIP. Majoritatea implementărilor ZIP nu vor permite două fișiere cu același nume într-o singură arhivă, dar algoritmul în sine nu interzice această posibilitate. Când verificați semnătura digitală a unei aplicații, sistemul de operare Android se uită la primul fișier care se potrivește, dar când executați și lansați fișierul, acesta îl apucă pe ultimul . Apoi, pentru a troianiza o aplicație, tot ce trebuie să faceți este să descoperiți codul dvs. rău intenționat, folosind un nume care există deja în aplicație. Demonstrația Fora este doar câteva zeci de linii de cod Java.
Un alt atac structural
Un cercetător chinez care blogging ca Android Security Squad a găsit demonstrația intrigantă și a căutat alte modalități de a subverti procesul de verificare. Citirea postării traduse de Google este puțin grea, dar se pare că atacul se bazează pe un concept la nivel de Computer Science 101.
Programele de calculator stochează numărarea numerelor în colecții de biți cu dimensiuni fixe. De exemplu, cu opt biți puteți reprezenta numere de la 0 la 255. Dacă este necesar să reprezentați numere negative, convenția de lungă durată este că bitul din stânga indică un număr negativ. Apoi, cu opt biți, puteți reprezenta, de asemenea, numere de la -128 la 127. Numărul binar 11111111 reprezintă fie 255, fie -1, în funcție de faptul că este destinat ca număr nesemnat sau semnat.
Android Security Squad a trecut pe formatul antetului fișierului APK și a găsit un câmp de date care se presupune a fi o compensare pozitivă, dar acesta este stocat ca un număr întreg semnat. Forțarea acestui câmp la o anumită valoare negativă determină încărcătorul APK să execute codul rău intenționat, în loc de codul semnat digital deja verificat. OK, este ceva mai complex, dar cam așa funcționează.
Lipiți cu Google Play
Niciunul dintre aceste hackuri nu transformă efectiv mecanismul de semnătură digitală Android. Mai degrabă, ambele profită de aspecte interesante din structura APK pentru a face semnătură digitală irelevantă. De asemenea, niciuna dintre ele nu va permite unei aplicații troiene să se strecoare dincolo de analiza Google. Google a actualizat în mod specific Google Play pentru a filtra aplicațiile trojanizate folosind atacul „cheie principală” chiar și fără acest pas, securitatea standard ar bloca aproape orice tip de aplicație troianizată.
Lecția este clară. Scoateți întotdeauna aplicațiile din surse legitime, verificați întotdeauna pentru a vă asigura că numele dezvoltatorului este valid și configurați-vă telefonul astfel încât să nu permită instalarea aplicațiilor din „surse necunoscute”. Fii atent la ce permisiuni solicită o aplicație și fii gata să abandonezi o instalație cu aspect suspect. Dacă operatorul dvs. oferă o actualizare Android, instalați-o întotdeauna. Este doar bunul simț!