Starije izmjene na obje strane
Starija izmjena
Novija izmjena
|
Starija izmjena
|
racfor_wiki:android:ranjivost_android_operativnog_sustava_strandhogg [2020/01/09 04:44] kvrbic [Kako izvesti napad] |
racfor_wiki:android:ranjivost_android_operativnog_sustava_strandhogg [2024/12/05 12:24] (trenutno) |
* Activity(engl. //Activity//): | * Activity(engl. //Activity//): |
| |
Aktivnost je vrsta komponente aplikacije. Instanca aktivnosti pruža grafički korisničko sučelje na ekranu. Apitično ima više aktivnosti za različite korisničke interakcije, poput biranja telefonskih brojeva i čitanja popisa kontakata. Sve aktivnosti moraju biti definirane u datoteci manifesta aplikacije. | Aktivnost je vrsta komponente aplikacije. Instanca aktivnosti pruža grafički korisničko sučelje na ekranu. Tipično ima više aktivnosti za različite korisničke interakcije, poput biranja telefonskih brojeva i čitanja popisa kontakata. Sve aktivnosti moraju biti definirane u manifest datoteci aplikacije. |
| |
* Namjera(engl. //Intent//): | * Namjera(engl. //Intent//): |
Kao što vidimo na slici iznad očekivano ponašanje sustava koji dodaje aktivnosti jednu na drugu unatar istog zadatka. Programerima, kako bi imali više kontrole nad ovim postupkom, Android sustav daje par načina za izmjenu ovog procesa. | Kao što vidimo na slici iznad očekivano ponašanje sustava koji dodaje aktivnosti jednu na drugu unatar istog zadatka. Programerima, kako bi imali više kontrole nad ovim postupkom, Android sustav daje par načina za izmjenu ovog procesa. |
| |
* Način pokretanja (engl. //launch mode//) i zastavice namjene(engl. //intent flags//) - načini pokretanja i zastavice poput ''<font 13.2835px font-family: sans-serif transform: scaleX(0.986021)/sans-serif;;inherit;;inherit>NEW_TASK</font>''<font 13.2835px font-family: sans-serif transform: scaleX(0.951084)/sans-serif;;inherit;;inherit>, ''SINGLE_TOP'',</font><font 13.2835px font-family: sans-serif transform: scaleX(0.958142)/sans-serif;;inherit;;inherit>''CLEAR_TOP'', itd. daju programerima mogućnost da</font> mijenaju zadanu povezanost aktivnosti sa svojim zadatkom i način na koji se aktivnosti kreiraju | * Način pokretanja (engl. //launch mode//) i zastavice namjene(engl. //intent flags//) - načini pokretanja i zastavice poput <font 13.2835px font-family: sans-serif transform: scaleX(0.951084)/sans-serif;;inherit;;inherit>''NEW_TASK'', ''SINGLE_TOP'',''CLEAR_TOP'', itd. daju programerima mogućnost da</font> mijenaju zadanu povezanost aktivnosti sa svojim zadatkom i način na koji se aktivnosti kreiraju |
* Događaji(engl. //events//) - ako se programer odluči može implementirati funkciju ''onBackPressed()'' koja će mu omogućiti da preduhitri taj događaj i tako utječe na aktivnost | * Događaji(engl. //events//) - ako se programer odluči može implementirati funkciju ''onBackPressed()'' koja će mu omogućiti da preduhitri taj događaj i tako utječe na aktivnost |
| |
| |
===== Kako izvesti napad ===== | ===== Mogućnosti napada ===== |
| |
===== Kako izvesti napad ===== | |
| |
StrandHogg je jedinstven jer omogućuje sofisticirane napade bez potrebe za tzv. "root" uređajem, koristi slabost u sustavu višezadaćnosti kako bi izveo napade koji omogućuje zlonamjernim aplikacijama da se maskiraju kao i bilo koja druga aplikacija na uređaju. Taj se rad temelji na Androidovoj kontrolnoj postavci pod nazivom taskAffinity koja omogućava bilo kojoj aplikaciji, uključujući zlonamjernoj, da slobodno preuzme bilo koji identitet u sustavu višezadaćnosti koji želi. | StrandHogg je jedinstven jer omogućuje sofisticirane napade bez potrebe za tzv. "root" uređajem, koristi slabost u sustavu višezadaćnosti kako bi izveo napade koji omogućuje zlonamjernim aplikacijama da se maskiraju kao i bilo koja druga aplikacija na uređaju. Taj se rad temelji na Androidovoj kontrolnoj postavci pod nazivom taskAffinity koja omogućava bilo kojoj aplikaciji, uključujući zlonamjernoj, da slobodno preuzme bilo koji identitet u sustavu višezadaćnosti koji želi. |
| |
Tvrtka Promon je provela istraživanje i pronašala je svih 500 najpopularnijih aplikacija u riziku, a sve verzije Androida su pogođene od prve pa do najnovijeg Androida 10. Ovo istraživanje je znatno proširenje na istraživanje koje je 2015. provelo Sveučilište Penn, gdje su istraživači teoretski opisali određene aspekte ranjivosti. Google je tada odbacio ozbiljnost ranjivosti, ali kako su daljnja istraživanja pokazala hakeri iskorištavaju StrandHogg kako bi dobili pristup uređajima i aplikacijama. | Tvrtka Promon je provela istraživanje i pronašala je svih 500 najpopularnijih aplikacija u riziku, a sve verzije Androida su pogođene od prve pa do najnovijeg Androida 10. Ovo istraživanje je znatno proširenje na istraživanje koje je 2015. provelo Sveučilište Penn, gdje su istraživači teoretski opisali određene aspekte ranjivosti. Google je tada odbacio ozbiljnost ranjivosti, ali kako su daljnja istraživanja pokazala hakeri iskorištavaju StrandHogg kako bi dobili pristup uređajima i aplikacijama. |
| |
| Utjecaj: |
| |
| * Sve inačice Androida, uključujući i Android 10 |
| * Svih 500 najpopularnijih aplikacija |
| * Identificirano je 36 zlonamjernih aplikacija koje koriste ranjivost |
| * Ranjivost se može iskoristiti bez pristupa root-u |
| |
| Mogućnosti napadača: |
| |
| * Može slušati putem mikrofona |
| * Fotografiranje kroz kameru |
| * Čitanje i slanje SMS poruka |
| * Uspostavljanje ili snimanje telefonskih razgovora |
| * Login podatci |
| * Pristup svim privatnim fotografijama i datotekama na uređaju |
| * Pristup podatcima o lokaciji i GPS-u |
| * Pristup popisu kontakata |
| * Pristup telefonskim zapisnicima |
| |
| |
| ===== Kako izvesti napad ===== |
| |
Kako bi napravili malware dovoljno je u manifestu zloćudne aplikacije moramo postavi ''taskAffinity'' na jednoj ili više aktivnosti kako bi odgovarala imenu paketa(engl. //package name//) bilo koje aplikacije treće strane. Zatim kombiniranjem s ''allowTaskReparenting="true"'' u manifestu ili pokretanjem aktivnosti s zastavicom namjere ''Intent.FLAG_ACTIVITY_NEW_TASK'' zlonamjerna aktivnost bit će smještena unutar i na vrh zadatka cilja. Tako zlonamjerna aktivnost otima zadatak cilja. Sljedeći put kad se ciljna aplikacija pokrene iz launchera, "oteti" zadatak će biti naprijed i zlonamjerna aktivnost bit će vidljiva korisniku. Tada je dovoljno da zlonamjerna aplikacija izgleda kao ciljana aplikacija kako bi se uspješno pokrenuli napadi na korisnika. Moguće je oteti takav zadatak prije nego je ciljna aplikacija uopće instalirana. | Kako bi napravili malware dovoljno je u manifestu zloćudne aplikacije moramo postavi ''taskAffinity'' na jednoj ili više aktivnosti kako bi odgovarala imenu paketa(engl. //package name//) bilo koje aplikacije treće strane. Zatim kombiniranjem s ''allowTaskReparenting="true"'' u manifestu ili pokretanjem aktivnosti s zastavicom namjere ''Intent.FLAG_ACTIVITY_NEW_TASK'' zlonamjerna aktivnost bit će smještena unutar i na vrh zadatka cilja. Tako zlonamjerna aktivnost otima zadatak cilja. Sljedeći put kad se ciljna aplikacija pokrene iz launchera, "oteti" zadatak će biti naprijed i zlonamjerna aktivnost bit će vidljiva korisniku. Tada je dovoljno da zlonamjerna aplikacija izgleda kao ciljana aplikacija kako bi se uspješno pokrenuli napadi na korisnika. Moguće je oteti takav zadatak prije nego je ciljna aplikacija uopće instalirana. |
xmlns:android="http://schemas.android.com/apk/res/android" | xmlns:android="http://schemas.android.com/apk/res/android" |
xmlns:tools="http://schemas.android.com/tools" | xmlns:tools="http://schemas.android.com/tools" |
package="com.example.dummy1"> | package="hr.fer.racfor.strandhogg"> |
| |
<application | <application |
android:allowTaskReparenting="true" | android:allowTaskReparenting="true" |
android:taskAffinity="##VULNERABLE_APP##" | android:taskAffinity="##VULNERABLE_APP##" |
android:name=".Main2Activity"> | android:name=".MaliciousActivity"> |
</activity> | </activity> |
| |
<intent-filter> | <intent-filter> |
<action android:name="android.intent.action.MAIN" /> | <action android:name="android.intent.action.MAIN" /> |
| |
<category android:name="android.intent.category.LAUNCHER" /> | <category android:name="android.intent.category.LAUNCHER" /> |
</intent-filter> | </intent-filter> |
</code> | </code> |
| |
| Ono što posebno čini ovaj napad još učinkovitijim je da napadač može steći značajnu kontrolu nad žrtvinim zadatkom kombinirajući s ''Intent.FLAG_ACTIVITY_NEW_TASK'' i ''Intent.FLAG_ACTIVITY_CLEAR_TASK'', napadač prvo briše ciljani zadatak, a zatim se lansira u njega. Ta aktivnost tada može dovršiti ciljani zadatak pomoću funkcije ''android.app.Activity.finishAndRemoveTask'' i pokrenuti novi zadatak s istim afinitetom s ''Intent.FLAG_ACTIVITY_NEW_TASK'' i ''Intent.FLAG_ACTIVITY_MULTIPLE_TASK'' i tako stvoriti novi ciljni zadatak za koji je zajamčeno da će biti pod kontrolom napadača. Nakon toga napadač može pokrenuti stvarnu aktivnost ciljane aplikacije i pustiti aplikaciju da pokrene svoj put kao i obično. U međuvremenu, budući da napadač i dalje zadržava kontrolu nad zadaćom žrtve, sada ima puno više informacija o stanju mete. Tada može presresti i ubrizgati phishing aktivnosti duboko u tok ciljane aplikacije, na mjesto koje je prirodnije za korisnika i protok ciljane aplikacije. |
| |
===== Chapter 3 ===== | |
| |
===== Chapter ... ===== | |
| |
===== Zaključak ===== | ===== Zaključak ===== |
| |
zaključak. | Dizajn Androidovog mehanizma upravljanja zadacima ima velike pogreške u smislu sigurnosti. Trenutno on ostavlja napadaču obilje mogućnosti otmice zadataka za izvođenje različitih napada koji mogu prouzrokovati ozbiljne sigurnosne posljedice. Kako ove opasnosti po sigurnost mogu utjecati na sve nedavne verzije Androida, čini se da rješenje nije trivijalno i da bi vjerovatno trebalo doći do potpunog zaokreta u pristupanju mehanizma za upravljanje zadatcima. Tim s Pennsylvania State Sveučilišta je testirala više od 6,8 milijuna aplikacija i utvrdili da postoji rizik preuzimanja zadataka kod velike većine kao što je i ustvrdilo naknadno istraživanje tvrtke Promon. Za sada jedina mogućnost korisnicima je da pažljivo instaliraju apliakcije od provjerenih tvrtki i sa službene trgovine aplikacijama. |
| |
===== Sources ===== | ===== Izvori ===== |
| |
[1] [[http://books.google.hr/books?id=mFJe8ZnAb3EC&printsec=frontcover#v=onepage&q&f=false|Plass, Jan L., Roxana Moreno, and Roland Brünken. Cognitive Load Theory. Cambridge University Press, 2010.]] | [1] [[https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-ren-chuangang.pdf|Chuangang Ren, Yulong Zhang, Hui Xue, Tao Wei, Peng Liu. Towards Discovering and Understanding Task Hijacking in Android The Pennsylvania State University, 2015.]] |
| |
[2] [[http://www.google.com/books?id=duWx8fxkkk0C&printsec=frontcover#v=onepage&q&f=false|Mayer, Richard E. The Cambridge handbook of multimedia learning. Cambridge University Press, 2005.]] | [2] [[https://promon.co/security-news/strandhogg/|StrandHogg: Serious Android vulnerability leaves most apps vulnerable to attacks.]] |
| |
[3] [[http://www.cogtech.usc.edu/publications/kirschner_Sweller_Clark.pdf|Kirschner, P. A, Sweller, J. and Clark, R. E. Why minimal guidance during instruction does not work: An analysis of the failure of constructivist, discovery, problem-based, experiential, and inquiry-based teaching. Educational psychologist 41, no. 2, pp 75-86, 2006]] | [3] [[https://developer.android.com/guide/components/activities/tasks-and-back-stack|Understand Tasks and Back Stack | Android Developers]] |
| |
| |