1 Bezpečnost a mobilní aplikace Jakub Jeřábek jakub.jerabek@ahead-itec.com10. 4. 2019 2 1. Důvěřujete SMS zprávám od své banky? Realita 2FA 2. Jak zabezpečit kód aplikace před okopírováním 3. Jak zabezpečit aplikaci před zneužitím 4. Hackování mobilní aplikace - praktická ukázka 5. Antiviry a útoky na mobilní telefony Co nás dnes čeká Vícefaktorová autentizace - co to je a co to není ● Faktor znalosti (něco co znám jen já - PIN, heslo) ● Faktor vlastnictví (něco co vlastním jen já - karta, security token) ● Faktor inherence (něco co jsem - hlas, duhovka, otisk prstu, obličej) ● Faktor polohy (kde jsem - restrikce přístupu z určitých IP adres) ● 2FA - libovolná podmnožina prvních tří faktorů ○ příklady: ■ výběr z bankomatu (vlastnictví - platební karta, znalosti - PIN) ■ přihlášení do IB s využitím mobilní aplikace (George/Smart/KB klíč, My Air, aj.) ● 2-kroková (2-step) autentizace 3 4 Důvěřujete SMS zprávám od své banky? Backend banky Internetové bankovnictví (prohlížeč) 1. vytvoření platby SMS brána Váš operátor 2. vytvoření ověřovacího kódu 3. požadavek na odeslání SMS 4. zaslání SMS 5. přečtení SMS 6. přepis kódu Útok na SMS v Německu 2017 Hackerům se podařilo zneužít chyby v technologii SS7, kterou používají mobilní sítě ke komunikaci a získali přístup k SMS napadených uživatelů. Ve spojení s e-mailovým phishingem tak byli schopni za posledních několik měsíců v rámci německé mobilní sítě O2 Telefónica získat ověřovací SMS pro přihlášení i provedení platby a doslova vysát peníze z bankovních účtů napadených uživatelů. Kvůli přesměrování neměl daný majitel účtu celou dobu o ničem ani ponětí. Zdroj: https://connect.zive.cz/clanky/hackeri-vyuzili-chyby-vmobilni-siti-o2-telefonica-vybrali-lidem-bankovni-uct y/sc-320-a-187540/default.aspx 5 6 Jak Android zpracovává příchozí SMS 1. OS Android přijímá SMS zprávu 2. OS Android posílá zprávu všem aplikacím* 3. Aplikace, se samy rozhodují, jak s SMS zprávou naloží *Všem, které mají zaregistrovaný receiver android.provider.telephony.SMS_RECEIVED a oprávnění android.permission.RECEIVE_SMS. 7 Krádež SMS - praktická ukázka Potřebujeme: ● zdánlivě neškodnou aplikaci ● sběrné místo SMS ● oběti Máme: ● SMS jízdenka Zlín ○ http://bit.ly/GPlaySMSJizdenka* ● http://bit.ly/StolenSMS** ● Počet stažení: 1-5 tisíc *verze publikovaná neobsahuje škodlivý kód a nemá přístup k SMS **server pro sběr SMS byl vypnut 8 Potřebujeme oběť +420 *** *** *** Jak se bránit? ● používat 2. faktor 9 10 Oprávnění na Androidu 6 a vyšších ● krok vpřed ● targetSdkVersion 23 (GPlay vyžaduje minimálně 26 (8.0)) ● rozdělení na normal a dangerous ○ https://developer.android.com/guide/topics/permissions/overview#normal_permissions ○ https://developer.android.com/guide/topics/permissions/overview#permission-groups ● ale... 11 … lze získat oprávnění bez povšimnutí 12 Jak je to možné? Jak zabezpečit kód aplikace před okopírováním 13 14 Ochrana kódu - proč? ● Softwarové patenty? Nefungují ○ https://ddd.uab.cat/pub/vivataca/vivataca_a2001m9n28/index.html ● Flappy Birds ○ 300 klonů, 238 infikovaných ○ posílání SMS, hovory, GPS, adresáře [1] 15 Praktická ukázka Potřebujeme: ● vytáhnout APK z telefonu ● dekompilovat APK ● umět číst v cizím kódu Máme: ● TCMD, APK extractor, ... ● APK Tool [1] ● ??? Pro zájemce: https://www.fi.muni.cz/research/laboratories/crocs.xhtml.cs Pozor na řetězce! 16 Ochrana kódu - jak? ● Obfuskace při buildu [1] ○ SDK/tools/proguard/proguard-android.txt ● Obfuskace při psaní Jak zabezpečit aplikaci před zneužitím 17 18 19 Ochrana aplikace - proč? ● Reputace ● Ochrana klientů / komunity 20 Hacknutí aplikace - praktická ukázka ● obejití ochrany (Authentication Bypassing) ● modifikace logických podmínek Použité příkazy Dekompilace APK (-r nedekompiluje resources) apktool d -r fimuni-release.apk Re-kompilace apktool b -o fimuni-hacked.apk fimuni-release PATH: C:\Program Files\Android\Android Studio\jre\bin\ Vytvořeni keystoru pro podpis APK keytool -genkey -v -keystore fimuni.keystore -alias fi -keyalg RSA -keysize 2048 -validity 10000 Podepsani APK (klíč v keystoru je “fi”, heslo “fimuni” jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore fimuni.keystore fimuni-hacked.apk fi -storepass fimuni 21 Použité příkazy Vypsání podpisu APK jarsigner -verbose -verify -certs fimuni-hacked.apk ADB - instalace APK do připojeného telefonu či emulátoru: adb install fimuni-hacked.apk - otevření aktivity, která má parametr exported=true: adb shell am start -n com.aheaditec.fimuni/.DegreeActivity 22 23 Ochrana aplikace - jak? ● Kontrola certifikátu APK ● Kontrola původu APK ○ Google Play ○ odjinud ● Knihovna: https://github.com/SandroMachado/AndroidTampering Antiviry a útoky na mobilní telefony 24 25 Typické znaky malwaru ● snaha být nenápadný ● přístup na internet + monitoring nabíjení + citlivá data ● používání broadcast receivers ● opožděné spuštění škodlivého kódu Manifest nikdy nelže! 26 Mobilní vs. desktopový svět ● Možnosti virů ● Možnosti antivirů ● Virus vs. malware Sandboxing 27 Sandboxing 28 Ukázka reálných útoků 29 Zdroje: https://blog.avast.com/new-version-of-mobile-malware-catelites-possibly-linked-to-cron-cyber-gang https://blog.avast.com/mobile-banking-trojan-sneaks-into-google-play-targeting-wells-fargo-chase-and -citibank-customers 30 31 BankBot 32 BankBot - ukázka 33 QRecorder 34 QRecorder ● 10 000+ instalací ● plnila svůj účel ● škodlivý kód vložen s aktualizací ● krádež přihlašovacích údajů, by-passing SMS oveření Zdroj: https://lukasstefanko.com/2018/09/banking-trojan-found-on-google-play-stole-10000-euros-from-victi ms.html QRecorder 35 Děkuji za pozornost Prostor pro vaše dotazy 36