Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
02791 013566 17245452 na godz. na dobę w sumie
Bezpieczeństwo urządzeń mobilnych. Receptury - książka
Bezpieczeństwo urządzeń mobilnych. Receptury - książka
Autor: , Liczba stron: 184
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3216-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> bezpieczeństwo systemów
Porównaj ceny (książka, ebook, audiobook).
Urządzenia przenośne, takie jak smartfony i tablety, już dawno przestały służyć tylko do prostej komunikacji. Dziś stają się coraz bardziej zaawansowane technicznie, mają też coraz więcej skomplikowanych aplikacji. Niestety, skutkiem ubocznym tego rozwoju jest pojawianie się luk w ich zabezpieczeniach. Tymczasem konsekwencje skutecznego ataku na urządzenie mobilne bywają bardzo poważne. Nic dziwnego, że ostatnimi czasy temat zabezpieczania aplikacji i urządzeń przed atakami stał się bardzo popularny zarówno wśród programistów, jak i samych użytkowników.

Niniejsza książka jest znakomitym kompendium wiedzy o bezpieczeństwie urządzeń przenośnych. Przedstawiono w niej różnorodne techniki ingerencji w popularne urządzenia i zasady wykonywania testów penetracyjnych. Dowiesz się stąd, jak wykryć luki w zabezpieczeniach i ochronić urządzenia przed atakami. Autorzy przedstawili także istotne informacje o analizie kodu aplikacji oraz metodach śledzenia ataków i przechwytywania danych przesyłanych przez urządzenia. Sporo miejsca poświęcono poszczególnym rodzajom ataków na urządzenia pracujące na takich platformach, jak Android, iOS, BlackBerry i Windows.

Najciekawsze zagadnienia:

Sprawdź, czy właśnie w tej chwili ktoś atakuje Twojego smartfona!


Prashant Verma — jest CISSP i od wielu lat zajmuje się tematyką bezpieczeństwa urządzeń przenośnych. Zabierał głos na prestiżowych konferencjach OWASP Asia Pacific w 2012 r. w Sydney oraz RSA Conference Asia Pacific w Japonii i Singapurze w 2014 r. Chętnie dzieli się swoją wiedzą i wynikami badań podczas szkoleń, warsztatów i wykładów.

Akshay Dixit — jest specjalistą w dziedzinie bezpieczeństwa informatycznego, wykładowcą i badaczem. Świadczy usługi doradztwa w tym zakresie dla wielu instytucji publicznych oraz firm. Obecnie pracuje nad sztuczną inteligencją i podatnością urządzeń przenośnych na ataki. Prowadzi szkolenia, prezentacje i warsztaty.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Mobile Device Exploitation Cookbook Tłumaczenie: Andrzej Watrak ISBN: 978-83-283-3216-4 Copyright © Packt Publishing 2016 First published in the English language under the title ‘Mobile Device Exploitation Cookbook (9781783558728)’ Polish edition copyright © 2017 by Helion SA All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/bezumo.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/bezumo Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści O autorach O korektorze merytorycznym Przedmowa Rozdział 1. Wprowadzenie do bezpieczeństwa urządzeń przenośnych Wprowadzenie Instalacja i konfiguracja pakietu SDK oraz programu ADB w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Utworzenie prostej aplikacji dla systemu Android i uruchomienie jej w emulatorze Przygotuj się Jak to zrobić? Zobacz też Analiza modelu uprawnień w systemie Android za pomocą programu ADB Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Omijanie blokady ekranu w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Przygotowanie środowiska programistycznego Xcode i symulatora w systemie iOS Przygotuj się Jak to zrobić? 13 15 17 21 21 22 22 23 24 25 25 25 25 26 28 29 29 30 30 31 31 32 32 32 33 33 33 34 34 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to działa? Co dalej? Zobacz też Utworzenie prostej aplikacji w systemie iOS i uruchomienie jej w symulatorze Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Przygotowanie środowiska do testów penetracyjnych systemu Android Przygotuj się Jak to zrobić? Jak to działa? Przygotowanie środowiska do testów penetracyjnych systemu iOS Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Uzyskiwanie dostępu administracyjnego do urządzenia przenośnego Przygotuj się Jak to zrobić? Jak to działa? Rozdział 2. Ataki infekcyjne na urządzenia przenośne Wprowadzenie Analiza przykładowego wirusa w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Analiza wirusa za pomocą programu Androguard Przygotuj się Jak to zrobić? Co dalej? Tworzenie od podstaw własnego wirusa w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Omijanie ograniczeń uprawnień w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też 4 34 37 37 38 38 38 42 42 42 43 43 43 45 46 46 46 48 48 49 49 49 52 55 55 56 57 57 59 60 60 61 61 64 64 65 65 69 70 70 70 71 71 74 74 74 Poleć książkęKup książkę Spis treści Dekompilacja kodu aplikacji w systemie iOS Przygotuj się Jak to zrobić? Analiza wirusa w systemie iOS Przygotuj się Jak to zrobić? Jak to działa? Rozdział 3. Audyt aplikacji przenośnych Wprowadzenie Statyczna analiza aplikacji Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Dynamiczna analiza aplikacji Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wyszukiwanie luk w bezpieczeństwie aplikacji Android za pomocą platformy Drozer Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Statyczna analiza aplikacji iOS Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Dynamiczna analiza aplikacji iOS Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wyszukiwanie luk w bezpieczeństwie pamięci i łańcucha kluczy w systemie iOS Przygotuj się Jak to zrobić? Jak to działa? Co dalej? 75 75 75 77 77 77 80 81 81 82 82 82 86 87 87 87 88 88 88 90 91 91 91 91 93 93 94 94 94 94 97 97 98 98 98 98 102 103 103 103 103 104 106 106 5 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Wyszukiwanie luk w bezpieczeństwie aplikacji bezprzewodowych Przygotuj się Jak to zrobić? Co dalej? Zobacz też Wykrywanie wstrzykiwania kodu po stronie klienta Przygotuj się Jak to zrobić? Co dalej? Zobacz też Nieskuteczne szyfrowanie danych w aplikacjach Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wykrywanie wycieków danych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Inne ataki na aplikacje przenośne Przygotuj się Jak to zrobić? Jak to działa? Zobacz też Wstrzykiwanie intencji w systemie Android Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Rozdział 4. Przechwytywanie przesyłanych danych Wprowadzenie Przygotowanie laboratorium do testów penetracyjnych bezprzewodowej transmisji danych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Konfiguracja środowiska do przechwytywania danych w systemie Android Przygotuj się Jak to zrobić? Jak to działa? 6 106 106 107 109 109 110 110 110 111 111 112 112 112 113 113 114 114 114 114 115 117 117 117 118 118 118 119 119 120 120 122 122 123 125 125 126 126 126 127 128 128 129 129 129 131 Poleć książkęKup książkę Co dalej? Zobacz też Przechwytywanie ruchu za pomocą oprogramowania Burp Suite i Wireshark Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wykorzystanie serwera proxy do modyfikacji danych i przeprowadzania ataku Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Konfiguracja środowiska do przechwytywania danych w systemie iOS Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Analizowanie danych przesyłanych przez aplikacje iOS i wyodrębnianie informacji poufnych Przygotuj się Jak to zrobić? Co dalej? Zobacz też Przeprowadzanie ataków na silnik WebKit w aplikacjach przenośnych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Modyfikowanie certyfikatu SSL w celu przechwycenia zaszyfrowanych danych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wykorzystanie profilu konfiguracyjnego urządzenia iOS w celu nawiązania połączenia VPN i przechwycenia przesyłanych danych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Omijanie weryfikacji certyfikatu SSL w systemach Android i iOS Przygotuj się Jak to zrobić? Spis treści 131 131 131 132 132 134 134 134 134 135 135 136 136 136 137 137 137 138 138 139 139 139 139 141 141 141 142 142 142 143 143 144 144 144 146 146 146 146 147 147 148 149 149 149 149 149 7 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to działa? Co dalej? Zobacz też Rozdział 5. Inne platformy Wprowadzenie Konfiguracja środowiska programistycznego i symulatora urządzenia Blackberry Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Konfiguracja środowiska do testów penetracyjnych urządzenia Blackberry Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Konfiguracja środowiska programistycznego i emulatora urządzenia Windows Phone Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Konfiguracja środowiska do testów penetracyjnych urządzenia Windows Phone Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Przygotowanie urządzenia Blackberry do przechwytywania danych Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Wykradanie danych z aplikacji Windows Phone Przygotuj się Jak to działa? Co dalej? Zobacz też Wykradanie danych z aplikacji Blackberry Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też 8 150 150 151 153 153 154 154 154 156 156 156 156 156 157 158 158 159 159 159 159 160 161 161 161 161 162 163 163 163 164 164 164 166 167 167 168 168 170 170 171 171 171 171 172 173 173 Poleć książkęKup książkę Spis treści Odczytywanie lokalnych danych z Windows Phone Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Ataki na komunikację NFC Przygotuj się Jak to zrobić? Jak to działa? Co dalej? Zobacz też Skorowidz 173 174 174 176 177 177 177 177 177 179 180 180 181 9 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury 10 Poleć książkęKup książkę 1 Wprowadzenie do bezpieczeństwa urządzeń przenośnych W tym rozdziale opiszemy następujące receptury:  Instalacja i konfiguracja pakietu SDK oraz programu ADB dla systemu Android  Utworzenie prostej aplikacji dla systemu Android i uruchomienie jej w emulatorze  Analiza modelu uprawnień w systemie Android za pomocą programu ADB  Omijanie blokady ekranu w systemie Android  Przygotowanie środowiska programistycznego Xcode i symulatora w systemie iOS  Utworzenie prostej aplikacji w systemie iOS i uruchomienie jej w symulatorze  Przygotowanie środowiska do testów penetracyjnych systemu Android  Przygotowanie środowiska do testów penetracyjnych systemu iOS  Uzyskiwanie dostępu administracyjnego do urządzeń przenośnych Wprowadzenie Użytkowanie smartfonów jest w dzisiejszym świecie gorącym tematem. Przybywa użytkowni- ków smartfonów, a nie tradycyjnych telefonów komórkowych. Według różnych analiz i badań w przyszłości będziemy coraz więcej korzystać ze smartfonów i tabletów, ponieważ za pomo- cą tych urządzeń można robić wiele różnych ciekawych rzeczy. Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Wraz z rosnącą popularnością urządzeń przenośnych coraz większe jest ryzyko ich użytkowania. Hakerzy i przestępcy informatyczni szukają wszelkich sposobów na zaatakowanie urządzeń użytkowników, pozyskanie ich danych osobistych, numerów kart kredytowych, haseł i innych poufnych informacji. Producenci systemów bezpieczeństwa publikują raporty o rosnącej liczbie ataków towarzyszących coraz większemu wykorzystaniu urządzeń przenośnych. Dziś wiele firm obawia się ujawnienia swoich wewnętrznych danych, a co za tym idzie strat finansowych i utraty reputacji. W tej książce zapoznamy Cię z kilkoma metodami włamywania się do urządzeń przenośnych, abyś miał wyobrażenie o możliwych atakach. Ich znajomość pozwoli Ci być lepiej przygoto- wanym do przeciwdziałania im i do chronienia swoich danych. Ten rozdział opisuje podstawowe modele bezpieczeństwa dwóch najbardziej popularnych sys- temów operacyjnych stosowanych w urządzeniach przenośnych: Android oraz iOS. Wprowadzi- my Cię również w wykorzystywane w tych systemach środowiska programistyczne. Opiszemy środowiska do przeprowadzania testów penetracyjnych oraz uzyskiwania dostępu administra- cyjnego do systemów operacyjnych. Rozdział ten stanowi podstawę dla tematów opisanych w na- stępnych rozdziałach i zawiera informacje niezbędne do poznania metod wykorzystywania luk w bezpieczeństwie urządzeń. Instalacja i konfiguracja pakietu SDK oraz programu ADB w systemie Android Pierwszym krokiem do tworzenia i testowania bezpieczeństwa aplikacji w systemie Android jest instalacja i konfiguracja pakietu SDK oraz programu ADB. Pakiet SDK jest dostępny w dwóch wersjach: jako składnik środowiska Android Studio i jako samodzielny produkt. Po- niższy opis dotyczy przygotowania środowiska Android Studio wraz z pakietem SDK. Program ADB (ang. Android Debug Bridge) jest bardzo przydatnym narzędziem umożliwiającym komunikację komputera z urządzeniem Android lub jego symulatorem. Jest wykorzystywany do diagnozowania problemów i testowania bezpieczeństwa aplikacji dla urządzeń przenośnych. Używane w książce określenie „urządzenia Android” oznacza smartfony i tablety. Przygotuj się Otwórz w przeglądarce stronę https://developer.android.com i pobierz oprogramowanie Android Studio lub sam pakiet SDK. Będziesz potrzebował również oprogramowania JDK w wersji 7 lub nowszej. 22 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Jak to zrobić? Zainstaluj środowisko Android Studio: 1. Otwórz stronę http://developer.android.com/studio/index.html i pobierz najnowszą wersję środowiska. 2. Po pobraniu pliku instalacyjnego uruchom go i postępuj według pojawiających się wskazówek. W chwili powstawania tej książki plik instalacyjny miał nazwę android-studio-bundle-145.3360264- windows.exe. Wraz z Android Studio instalowane jest domyślnie oprogramowanie SDK i ADB, o ile nie wykluczysz go z instalacji. Skrót AVD oznacza wirtualne urządzenie Android (ang. Android Virtual Device), czyli emulator prawdzi- wego urządzenia. Emulator służy do uruchamiania, testowania i diagnozowania aplikacji. Szczególnie przydaje się w sytuacjach, gdy odpowiednie rzeczywiste urządzenia nie są dostępne. Większość testów aplikacji wykonuje się za pomocą emulatora. Również Ty wykorzystasz go w następnej recepturze. Zwróć uwagę na ścieżki instalacyjne środowiska Android Studio i pakietu SDK. Będziesz je wielokrotnie wykorzystywał podczas konfigurowania środowiska: Po zainstalowaniu środowiska Android Studio uruchom je. Pojawi się kilka kolejnych wska- zówek. Będziesz musiał pobrać pakiet SDK, co w zależności od szybkości połączenia z inter- netem może zająć do czterech godzin. 23 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to działa? Środowisko programistyczne jest gotowe. Poświęć chwilę na zapoznanie się z zawartością fol- deru z pakietem SDK (którego adres widoczny jest na poprzednim rysunku). Musisz znać kil- ka plików i folderów:  SDK Manager.exe: oprogramowanie do zarządzania pakietami SDK, usuwania ich starych wersji oraz instalowania nowych.  AVD Manager.exe: oprogramowanie do zarządzania urządzeniami AVD. W odpowiednim czasie użyjesz go do utworzenia kilku emulatorów. 24 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Uruchom teraz jeden z emulatorów, aby sprawdzić, czy działa poprawnie. Uruchomienie zajmuje 2 – 3 minuty, bądź więc cierpliwy. Jeżeli instalacja środowiska przebiegnie pomyślnie, emulator uruchomi się bez problemów. Przykładowy wygląd emulatora jest pokazany w opisie następnej receptury.  platform-tools: folder zawierający kilka przydatnych narzędzi, m.in. program ADB i bazę danych SQLite3. Będziesz z nich korzystał podczas wykonywania receptur opisanych w tej książce.  tools: folder zawierający pliki wsadowe i aplikacje. Najczęściej będziesz korzystał z pliku emulator.exe, czasami również z innych plików z rozszerzeniem .exe. Co dalej? Ponieważ wielu programistów woli korzystać z innych środowisk niż Android Studio, dlatego możliwe są inne metody tworzenia aplikacji dla tego systemu. W takich sytuacjach należy po- brać osobny pakiet SDK. Zawiera on niezbędne narzędzia programistyczne, które są urucha- miane za pomocą wiersza poleceń. Narzędzia te przydają się również do wykonywania testów penetracyjnych, przeprowadzania ataków oraz szybkiej analizy kodu i danych aplikacji. Bardzo często kodowanie nie jest wtedy konieczne, za to niezbędna jest diagnostyka kodu. W takich przypadkach można korzystać z samodzielnych narzędzi pakietu SDK. Zobacz też  Receptura „Analiza modelu uprawnień w systemie Android za pomocą programu ADB” Utworzenie prostej aplikacji dla systemu Android i uruchomienie jej w emulatorze Teraz, gdy pakiet SDK jest już gotowy, napisz swoją pierwszą aplikację dla systemu Android. Aby zacząć, potrzebne będą pewne umiejętności programowania. Niech Cię jednak nie prze- razi kod źródłowy. W internecie dostępnych jest mnóstwo przykładów umożliwiających wy- konanie pierwszego kroku. Przygotuj się Aby móc rozpocząć tworzenie aplikacji dla systemu Android, niezbędny jest poprawnie zainstalo- wany pakiet SDK. Jeżeli wykonałeś poprzednią recepturę i wiesz co nieco na temat programowa- nia w języku Java, to cała reszta okaże się prosta i będziesz w stanie napisać swoją pierwszą aplikację. 25 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to zrobić? Napisz prosty program dodający dwie liczby. My nadaliśmy programowi nazwę Dodawanie. 1. Utwórz graficzny interfejs aplikacji. W tym celu przeciągnij do okna projektowego trzy pola tekstowe EditText (dwa do wprowadzenia liczb i trzecie do wyświetlenia ich sumy), dwie kontrolki TextView na teksty informujące użytkownika, że musi wpisać dwie liczby, oraz przycisk do wywoływania metody wykonującej obliczenia.  Plik activity_main.xml jest tworzony automatycznie. Otwórz go w edytorze i sprawdź, czy wygląda podobnie jak kod przedstawiony poniżej: ?xml version= 1.0 encoding= utf-8 ? RelativeLayout xmlns:android= http://schemas.android.com/apk/res/android xmlns:tools= http://schemas.android.com/tools android:id= @+id/activity_main android:layout_width= match_parent android:layout_height= match_parent android:paddingBottom= @dimen/activity_vertical_margin android:paddingLeft= @dimen/activity_horizontal_margin android:paddingRight= @dimen/activity_horizontal_margin android:paddingTop= @dimen/activity_vertical_margin tools:context= com.example.administrator.dodawanie.MainActivity  Tekst z opisem pola do wpisania pierwszej liczby: TextView android:text= Pierwsza liczba: android:layout_width= wrap_content android:layout_height= wrap_content android:id= @+id/textView android:layout_alignParentTop= true android:layout_alignParentStart= true /  Pole tekstowe z identyfikatorem liczba1, do którego odwołuje się kod Java: EditText android:layout_width= wrap_content android:layout_height= wrap_content android:inputType= number android:ems= 10 android:id= @+id/liczba1 android:layout_alignBaseline= @+id/textView android:layout_alignBottom= @+id/textView android:layout_toEndOf= @+id/textView android:layout_alignStart= @+id/liczba2 /  Tekst z opisem pola do wpisania drugiej liczby: TextView android:text= Druga liczba: android:layout_width= wrap_content android:layout_height= wrap_content 26 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych android:layout_below= @+id/liczba1 android:layout_alignParentStart= true android:layout_marginTop= 60dp android:id= @+id/textView2 /  Pole tekstowe z identyfikatorem liczba2, do którego odwołuje się kod Java: EditText android:layout_width= wrap_content android:layout_height= wrap_content android:inputType= number android:ems= 10 android:id= @+id/liczba2 android:layout_alignBaseline= @+id/textView2 android:layout_alignBottom= @+id/textView2 android:layout_alignStart= @+id/dodaj /  Przycisk dodawania: Button android:text= Dodaj android:layout_width= wrap_content android:layout_height= wrap_content android:layout_below= @+id/liczba2 android:layout_centerHorizontal= true android:layout_marginTop= 32dp android:id= @+id/dodaj /  Pole tekstowe z wynikiem dodawania: TextView android:layout_width= wrap_content android:layout_height= wrap_content android:layout_below= @+id/dodaj android:layout_centerHorizontal= true android:layout_marginTop= 39dp android:id= @+id/wynik / /RelativeLayout 2. Teraz napisz kod odczytujący i dodający do siebie liczby wprowadzone przez użytkownika oraz wyświetlający ich sumę. Na razie nie przejmuj się terminami takimi jak Activity, Intent itp. Skup się jedynie na napisaniu poprawnego kodu. Środowisko Android Studio będzie pilnowało każdego Twojego kroku. Zacznij od zakodowania klasy MainActivity, jak poniżej: package com.example.administrator.dodawanie; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; import android.widget.TextView; import android.widget.Button; 27 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury import android.view.View; public class MainActivity extends AppCompatActivity { EditText liczba1; EditText liczba2; TextView wynik; Button dodaj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); liczba1 = (EditText)findViewById(R.id.liczba1); liczba2 = (EditText)findViewById(R.id.liczba2); dodaj = (Button)findViewById(R.id.dodaj); wynik = (TextView)findViewById(R.id.wynik); liczba1 = (EditText)findViewById(R.id.liczba1); dodaj.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Suma(); } }); } private void Suma(){ int l1 = Integer.parseInt(liczba1.getText().toString()); int l2 = Integer.parseInt(liczba2.getText().toString()); int l3 = l1 + l2; wynik.setText(Integer.toString(l3)); } } Zwróć uwagę, jak prosty jest ten kod. Odczytuje jedynie dwie liczby, dodaje je do siebie i wyświetla wynik. 3. Uruchom kod. Pojawi się emulator, a w nim uruchomiony program (patrz rysunek na następnej stronie). Zobacz też  Frank Ableson, Robi Sen, Chris King, Android w akcji. Wydanie II, Helion 2011. 28 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Analiza modelu uprawnień w systemie Android za pomocą programu ADB Po przygotowaniu środowiska programistycznego i utworzeniu pierwszej aplikacji czas zapo- znać się z modelem uprawnień w systemie Android. System ten wywodzi się z systemu Linux, w którym aplikacje są uruchamiane na określonych kontach użytkowników, należących do okre- ślonych grup. W systemie Android stosowany jest ten sam model uprawnień dla aplikacji jak w systemie Linux. Dzięki temu modelowi aplikacje są chronione przed wzajemną ingerencją. Przygotuj się Sprawdź, czy zainstalowałeś program ADB. Potrzebny Ci będzie również emulator lub urządze- nie z systemem Android, na którym będziesz wykonywał operacje za pomocą programu ADB. 29 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Do opisanych zastosowań najlepiej nadaje się rzeczywiste urządzenie lub emulator używane od jakiegoś czasu (świeżo utworzony emulator lub nowe urządzenie nie zawierają wystarcza- jącej ilości danych, które można by było przeglądać za pomocą programu ADB), dlatego do celów poznawczych lepiej użyć urządzenia z otwartym dostępem administracyjnym. Jak to zrobić? Aby przeanalizować model uprawnień w systemie Android, wykonaj poniższe kroki: 1. Włącz w urządzeniu Android tryb debugowania USB i połącz je z komputerem, na którym uruchomiony jest program ADB. Program ADB jest bardzo przydatnym narzędziem umożliwiającym wykonywanie wielu użytecznych poleceń realizujących m.in. następujące operacje:  wysyłanie danych do urządzenia/emulatora,  pobieranie danych z urządzenia/emulatora,  dostęp do wiersza poleceń urządzenia/emulatora, instalowanie i usuwanie aplikacji,   poruszanie się po systemie plików,  wykradanie najważniejszych plików systemowych,  wykradanie plików aplikacyjnych (na przykład z ustawieniami lub danymi bazy SQLite),  przeglądanie dzienników urządzenia. 2. Teraz wykorzystasz program ADB do analizy uprawnień aplikacji. W tym celu musisz najpierw otworzyć wiersz poleceń urządzenia, wpisując polecenie adb shell. Następnie wpisz polecenie ps, tak aby wyświetlić szczegółowe informacje o procesach działających na urządzeniu. Rysunek na następnej stronie przedstawia listę procesów działających na telefonie dołączonym do komputera z systemem Windows, na którym został uruchomiony program ADB. Jak to działa? Poświęć chwilę na przyjrzenie się powyższemu rysunkowi. Zwróć uwagę na pierwszą, dru- gą i ostatnią kolumnę z nagłówkami USER, PID i NAME. Każda aplikacja ma unikatowy identy- fikator PID i jest uruchamiana na określonym koncie użytkownika. Tylko kilka najważniej- szych procesów działa na koncie użytkownika root, inne aplikacje są uruchamiane na innych kontach. Na przykład aplikacja com.android.systemui o identyfikatorze PID 1680 działa na koncie użytkownika u0_a8, natomiast aplikacja com.android.settings na koncie użytkownika system. 30 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych W systemie Android każda aplikacja działa we własnym izolowanym obszarze (ang. sandbox). Izolowany obszar jest to wirtualne środowisko, w którym aplikacja działa z ograniczonymi upraw- nieniami dostępu do innych aplikacji, jak również inne aplikacje mają do niej ograniczony do- stęp. Model uprawnień w systemie Android (czyli zasada uruchamiania aplikacji na określonych kontach) ułatwia tworzenie izolowanych obszarów, dzięki czemu można ograniczać zakres działa- nia (kontekst) aplikacji i udzielać jej pełnego lub ograniczonego dostępu do innych aplikacji. W ten sposób zabezpiecza się również dane aplikacji przed kradzieżą i atakami złośliwego oprogramowania. Co dalej? Model uprawnień w systemie Android oraz izolowane obszary są elementami standardowego systemu bezpieczeństwa, będącego celem ataków hakerów. Ataki omijające izolowane obszary lub wykonywane za pomocą niebezpiecznego kodu to przykłady łamania zabezpieczeń sys- temu Android. Standardowe zabezpieczenia są w systemie zaimplementowane w formie mo- delu uprawnień. Zobacz też  Więcej informacji na temat programu ADB znajdziesz na stronie http://developer.android.com/tools/help/adb.html. 31 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Omijanie blokady ekranu w systemie Android Użytkownikom urządzeń przenośnych zaleca się ich zabezpieczanie za pomocą hasła, kodu pin i blokady ekranu (graficznego wzoru). Termin „omijanie blokady” kojarzy się użytkownikom raczej z odzyskiwaniem zapomnianego wzoru blokującego telefon, a nie z ominięciem zabez- pieczeń i dostaniem się do urządzenia. Dla nas to określenie opisuje tę drugą, bardziej agre- sywną operację, ponieważ książka poświęcona jest lukom w bezpieczeństwie urządzeń. Jak możesz jako haker ominąć blokadę ekranu w urządzeniu ofiary? Ten temat jest szeroko dys- kutowany i obecnie znanych jest kilka sztuczek umożliwiających osiągnięcie tego celu. Po- wstało wiele wirusów, które w niektórych wersjach systemu Android skutecznie realizują to zadanie, a w innych nie działają wcale. Przygotuj się Przeanalizujmy przykład omijania blokady ekranu telefonu za pomocą programu ADB. W tym celu będzie Ci potrzebny program ADB, który poznałeś w opisie poprzedniej receptury. Teraz wykorzystaj nabytą wiedzę do włamania się do telefonu. Ponadto będzie Ci potrzebne urzą- dzenie z włączoną opcją debugowania USB i zdefiniowaną blokadą, którą usuniesz. Jak to zrobić? Aby ominąć blokadę ekranu, wykonaj poniższe kroki: 1. Podłącz urządzenie do komputera za pomocą przewodu USB. Jeżeli w urządzeniu jest włączona opcja debugowania USB i otwarty jest dostęp administracyjny, wtedy zadanie jest o wiele łatwiejsze. Jeżeli dostęp administracyjny jest zamknięty, i tak będziesz mógł się włamać. Jednak na razie w tej recepturze zajmijmy się pierwszym przypadkiem. 2. Po podłączeniu urządzenia wpisz w terminalu poniższe polecenie: adb shell 3. Pojawi się wiersz poleceń podłączonego urządzenia Android. 4. Teraz przejdź do katalogu /data/system, w którym znajdują się pliki kluczy. Wpisz następujące polecenie: cd /data/system 5. Na koniec musisz usunąć określony klucz wykorzystywany do blokowania ekranu. W tym celu możesz po prostu użyć następującego polecenia: rm *.key 32 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych 6. Jeżeli pojawi się komunikat Permission denied informujący, że do wykonania powyższego polecenia potrzebne są uprawnienia superużytkownika, wpisz polecenie su i powtórz operację. Zostaną w ten sposób usunięte pliki kluczy zawierające informacje wykorzystywane do blokowania ekranu. 7. Uruchom ponownie urządzenie. Blokada ekranu powinna zostać teraz wyłączona. Jak to działa? Pliki kluczy zapisane w katalogu /data/system zawierają różne informacje systemowe, między innymi wzór blokady ekranu. Jeżeli pliki te zostaną usunięte, system po restarcie nie odnajdzie informacji potrzebnych do zablokowania ekranu, więc po prostu otworzy dostęp do urządzenia. Wykonanie tej receptury na urządzeniu z włączoną opcją debugowania USB i otwartym dostępem ad- ministracyjnym jest bardzo proste. Co dalej? Należy przede wszystkim pamiętać, że powyższa receptura nie jest jedynym sposobem omi- nięcia blokady ekranu, nie zawsze też jest skuteczna. Hakerzy stosują wiele różnych metod omijania blokady ekranu w urządzeniu Android. Zadanie jest tym bardziej skomplikowane, że nie wszystkie metody działają na wszystkich wersjach systemu. Dlatego czasami będziesz musiał poświęcić więcej czasu na znalezienie sposobu ominięcia blokady ekranu. Przygotowanie środowiska programistycznego Xcode i symulatora w systemie iOS Wiesz już, jak wygląda środowisko programistyczne dla systemu Android, czas więc poznać środowisko dla systemu iOS. Ten system jest stosowany w telefonach iPhone i tabletach iPad. Aplikacje dla tego systemu tworzy się w środowisku Xcode, które działa tylko w systemie iOS. Środowisko to (wraz z symulatorem urządzeń) jest wykorzystywane do tworzenia aplikacji dla systemu iOS. Zwróć uwagę, że piszemy o emulatorze urządzenia Android i symulatorze urządzenia iOS. Terminy te są do siebie podobne, jednak jest między nimi jedna istotna różnica. W emulatorze można wykorzystywać pewne funkcjonalności systemu operacyjnego do testowania określonych aplikacji. 33 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Na przykład emulator może korzystać z kamery laptopa, jeżeli wymaga tego jej aplikacja. W przypadku symulatora urządzenia iOS testy takiej aplikacji będą ograniczone. Ponadto emulator może wysyłać wia- domości SMS do innego emulatora. Niektórzy programiści uważają, że emulator jest lepszy od symula- tora, jednak takie uogólnienia nie zawsze są słuszne, ponieważ oba rodzaje programów wykonują te zadania, do których są przeznaczone. Przygotuj się Xcode jest środowiskiem przeznaczonym do tworzenia aplikacji dla systemu iOS. Środowisko to działa tylko w tym systemie, więc będzie Ci potrzebny komputer MacBook. Zainstaluj na nim środowisko Xcode oraz pakiet SDK i zacznij kodować. Informacje o tym, jak zacząć pracę ze środowiskiem Xcode, znajdziesz na stronie https://developer.apple. com/programs/how-it-works. Jak to zrobić? Aby skonfigurować środowisko Xcode i symulator urządzenia iOS, wykonaj poniższe kroki: 1. Otwórz aplikację App Store i pobierz oprogramowanie Xcode (w taki sam sposób, jak pobiera się każdą inną aplikację). Będzie Ci do tego potrzebny identyfikator Apple ID. Środowisko Xcode można pobrać bezpłatnie ze sklepu App Store. 2. Po zainstalowaniu środowiska możesz zacząć z niego korzystać. Środowisko to jest powszechnie stosowane do tworzenia aplikacji dla różnych systemów operacyjnych firmy Apple. Aby tworzyć aplikacje, będziesz potrzebował również pakietu SDK. Najnowsza wersja środowiska Xcode zawiera już ten pakiet oraz symulator i dodatkowe narzędzia (ang. Instruments). Na szczęście instalacja wszystkich powyższych komponentów nie jest skomplikowana, ponieważ wszystko jest zawarte w pliku instalacyjnym środowiska Xcode. 3. Po zakończonej instalacji będziesz mógł utworzyć nowy projekt. Po uruchomieniu środowiska powinno pojawić się okno, tak jak na poniższym rysunku, umożliwiające wybranie systemu operacyjnego, dla którego będziesz tworzył aplikację (patrz rysunek na następnej stronie). Jak to działa? Zapoznaj się teraz ze środowiskiem Xcode. 34 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych W oknie pokazanym na powyższym rysunku utwórz nowy projekt. Na początek wybierz pro- sty szablon Single View Application (aplikacja z jednym widokiem) i kliknij przycisk Next (da- lej). Otworzy się okno Choose options for your new project (wybierz opcje nowego projektu). W polu Product Name (nazwa produktu) wpisz nazwę projektu. Nazwa ta zostanie dołączona do nazwy firmy (pole Organization Identifier) i w ten sposób zostanie utworzona nazwa pa- kietu aplikacji. 35 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Zwróć uwagę, że w powyższym przypadku w polu Language (język) wybraliśmy opcję Swift. Jest to nowy język programowania, wprowadzony w systemie iOS 8. Można również wybrać opcję Objective-C oznaczającą tradycyjny język C. Swift jest nowym językiem programowania aplikacji dla systemu iOS. Jest to interaktywny język, w któ- rym kodowanie jest przyjemnością. Tworzenie aplikacji jest dzięki niemu łatwiejsze, a ponadto można stosować w nim składnię tradycyjnego języka C. Ważne jest również wybranie z listy Devices odpowiedniego urządzenia: Universal, iPhone lub iPad. W tym przykładzie wybierz opcję iPhone. Po wybraniu opcji kliknij przycisk Next, a następnie Create (utwórz). Pojawi się okno projektu. Po lewej stronie okna znajduje się panel nawigacyjny zawierający wszystkie pliki wchodzące w skład projektu. W środkowej części widoczny jest edytor kodu. Jego wygląd może być róż- ny w zależności od rodzaju edytowanego pliku. Po prawej stronie znajduje się panel pomocniczy, zawierający właściwości projektu oraz umoż- liwiający otwarcie systemu pomocy. 36 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Co dalej? Chociaż nie napisałeś jeszcze ani jednego wiersza kodu, możesz już uruchomić symulator. Służy do tego celu przycisk znajdujący się po lewej stronie paska narzędzi i przypominający przycisk do odtwarzania muzyki: Gdy klikniesz ten przycisk, środowisko Xcode automatycznie skompiluje projekt aplikacji i uru- chomi ją w domyślnym symulatorze telefonu iPhone 7. Ponieważ nie wpisałeś jeszcze żadne- go kodu, w symulatorze zobaczysz jedynie biały, pusty ekran: Do zatrzymywania aplikacji służy przycisk znajdujący się obok przycisku uruchamiającego. Zobacz też  Receptura „Przygotowanie środowiska do testów penetracyjnych systemu iOS” 37 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Utworzenie prostej aplikacji w systemie iOS i uruchomienie jej w symulatorze Po zapoznaniu się ze środowiskiem Xcode oraz symulatorem możesz zacząć kodować swoją pierwszą aplikację. Przygotuj się Do utworzenia aplikacji będzie Ci potrzebny MacBook z zainstalowanym i uruchomionym środowiskiem Xcode i symulatorem. Jeżeli wykonałeś poprzednią recepturę i znasz trochę język Swift, jesteś w pełni gotów do napisania swojej pierwszej aplikacji dla systemu iOS. Jak to zrobić? Po ogólnym zapoznaniu się ze środowiskiem Xcode zacznij tworzyć interfejs graficzny aplikacji: 1. W panelu nawigacyjnym kliknij pozycję Main.storyboard. Pojawi się edytor interfejsu aplikacji: 38 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Edytor interfejsu służy do tworzenia widoków aplikacji i definiowania przejść pomiędzy nimi. Ponieważ Twoja aplikacja składa się tylko z jednego widoku, w interfejsie został umieszczony już jego kontroler (View Controller). 2. Teraz dodaj przycisk do widoku. W dolnej części panelu po prawej stronie okna znajduje się biblioteka obiektów (Object Library), pokazana na poniższym rysunku: 3. Przeciągnij z biblioteki do widoku element Button (przycisk): 4. Po przeciągnięciu przycisku umieść go w dowolnym miejscu widoku, a następnie dwukrotnie kliknij i zmień jego nazwę na Kliknij mnie. 5. Teraz wpisz kilka wierszy kodu wyświetlającego komunikat. W panelu nawigacyjnym znajduje się plik o nazwie ViewController.swift. Kliknij go i do zdefiniowanej w nim klasy ViewController dodaj nową metodę, która będzie wyświetlała komunikat. 39 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury 6. Teraz wpisz poniższy kod metody: @IBAction func showMessage(){ let alertController = UIAlertController(title: Moja pierwsza aplikacja , message: Witaj, świecie! , preferredStyle: UIAlertControllerStyle.Alert) alertController.addAction(UIAlertAction(title: OK , style: UIAlertActionStyle.Default, handler:nil)) self.present (alertController, animated: true, completion: nil) } 7. Gotowy kod powinien wyglądać następująco: 40 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych 8. Teraz musisz połączyć przycisk Kliknij mnie w interfejsie z metodą showMessage. Jest to prosta operacja. Najpierw w panelu nawigacyjnym kliknij pozycję Main.storyboard, która zawiera definicję zawartości ekranu. 9. Naciśnij klawisz Ctrl, a następnie kliknij przycisk Kliknij mnie i przeciągnij go do ikony View Controller. 10. Zwolnij oba klawisze. Pojawi się menu z opcją showMessage. Kliknij ją, aby połączyć przycisk z metodą: 11. Gotowe! Jeżeli wszystkie operacje wykonałeś poprawnie, możesz uruchomić aplikację. Gdy klikniesz przycisk Kliknij mnie, powinien pojawić się następujący widok: 41 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to działa? Atrybut @IBAction, wprowadzony w języku Swift, służy do łączenia elementów interfejsu użytkownika z kodem aplikacji. W tym przypadku został on użyty do połączenia przycisku z me- todą wyświetlającą komunikat. Aby można było wykonać takie połączenie, określiłeś typ func metody showMessage. Gdy przycisk Kliknij mnie przeciągnąłeś do ikony View Controller i wybrałeś w menu opcję showMessage, utworzyłeś połączenie pomiędzy przyciskiem a metodą. Począwszy od wersji systemu iOS 8 klasy UIActionSheet i UIAlertView zostały zastąpione nową klasą UIAlertController. W kodzie metody wywoływana jest funkcja UIAlertController wyświetlająca komunikat z ty- tułem Moja pierwsza aplikacja oraz treścią Witaj, świecie! Zdefiniowana jest również nastę- pująca akcja: alertController.addAction(UIAlertAction(title: OK , style: UIAlertActionStyle.Default, handler:nil)) Jest to kod, który po kliknięciu przycisku OK zamyka okno komunikatu. Co dalej? Możesz poeksperymentować z różnymi stylami przycisku, umieścić w interfejsie tabele, odnośniki itp. Zastosuj inne funkcjonalności, aby nauczyć się kodować aplikacje dla systemu iOS. Dobrym punktem wyjścia będzie zapoznanie się z dokumentacją napisaną przez twórców systemu iOS i dostępną pod adresem https://developer.apple.com/library/ios/documentation/ Swift/Conceptual/BuildingCocoaApps/index.html. Zobacz też  Mnóstwo materiału ułatwiającego naukę kodowania aplikacji dla systemu iOS, w tym filmów, podręczników i przykładowych kodów, znajdziesz na stronie https://developer.apple.com/swift/resources. 42 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Przygotowanie środowiska do testów penetracyjnych systemu Android Poznałeś już środowisko programistyczne Android Studio, program ADB i emulator. Utworzy- łeś również swoją pierwszą aplikację. Teraz zajmijmy się testami penetracyjnymi. Testy pe- netracyjne urządzeń przenośnych można ogólnie podzielić na cztery kategorie:  ataki na dane przesyłane przez aplikacje,  ataki na pamięć urządzenia,  ataki na kod źródłowy aplikacji,  ataki na funkcjonalności systemu operacyjnego urządzenia. Ostatnia kategoria obejmuje ataki najbardziej skomplikowane. Aplikacje wykorzystują bardzie wiele funkcjonalności, np. komunikację Bluetooth, NFC lub radio, które należy sprawdzić za pomocą wszechstronnych testów penetracyjnych. Przygotuj się Musisz przygotować odpowiednio wyposażone środowisko, które umożliwi przeprowadzanie testów penetracyjnych systemu Android z czterech wymienionych wyżej kategorii. Będą Ci potrzebne następujące komponenty:  pakiet SDK, emulator, program ADB;  emulator ze skonfigurowanymi różnymi wersjami systemu Android;  jeden lub dwa telefony lub tablety (z otwartym dostępem administracyjnym);  oprogramowanie pośredniczące (proxy), np. Charles, Burp Suite lub Fiddler;  sieć Wi-Fi;  przeglądarka bazy SQLite, edytor tekstu, przeglądarka kodu XML;  przewód USB;  konwerter plików DEX na JAR, dekompilator kodu Java;  oprogramowanie DroidProxy lub Autoproxy. Jak to zrobić? Przyjrzyjmy się teraz poszczególnym narzędziom:  Pakiet SDK, emulator, program ADB. Narzędzia te poznałeś w recepturach opisanych wcześniej w tym rozdziale. 43 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury  Emulator ze skonfigurowanymi różnymi wersjami systemu Android. Przyjrzyj się rysunkowi z pierwszej receptury, przedstawiającemu program AVD Manager. Został on użyty do utworzenia wirtualnych urządzeń z wersją systemu Android 7.0 i interfejsem API 24. Klikając przycisk Create Virtual Device (utwórz urządzenie wirtualne), możesz utworzyć więcej urządzeń z różnymi wersjami systemu oraz interfejsami API. Różne wersje urządzeń wirtualnych przydają się w sytuacjach, gdy trzeba przeprowadzić testy penetracyjne aplikacji utworzonej dla określonego systemu operacyjnego i wykorzystującej jego specyficzne funkcjonalności.  Jeden lub dwa telefony lub tablety (z otwartym dostępem administracyjnym). Posiadanie rzeczywistych urządzeń nie jest konieczne, ale bardzo wskazane. Czasami zdarza się, że aplikacje uruchomione w emulatorze ulegają awarii lub działają bardzo wolno. Ponadto oprogramowanie pośredniczące uruchomione razem z emulatorem również może działać powoli lub ulegać awarii, przez co testy są utrudnione. W takich przypadkach przydają się rzeczywiste urządzenia.  Oprogramowanie pośredniczące (proxy), np. Charles, Burp Suite lub Fiddler. Oprogramowanie pośredniczące można pobrać z odpowiednich stron internetowych. Programy te są dość proste w obsłudze, a ponadto istnieją poświęcone im podręczniki oraz fora użytkowników. Instalacja tego typu narzędzi wykracza poza zakres tej książki. Opiszemy jednak, jak przygotować je do współpracy z aplikacjami dla urządzeń przenośnych. Poniżej wymienione są strony z najczęściej stosowanymi narzędziami:  http://portswigger.net/burp/download.html  http://www.charlesproxy.com/download  http://www.telerik.com/download/fiddler  Sieć Wi-Fi. Sieć Wi-Fi będzie potrzebna do ingerowania w przesyłane dane. W dalszej części książki skonfigurujesz oprogramowanie pośredniczące, zainstalowane na komputerze podłączonym do tej samej sieci Wi-Fi co urządzenie Android. Możesz wykorzystać istniejącą sieć i router albo utworzyć nową za pomocą laptopa i jednego z bezpłatnych narzędzi. Z naszego doświadczenia wynika, że w drugim przypadku czasami pojawiają się problemy, dlatego preferujemy pierwszy sposób.  Przeglądarka bazy SQLite, edytor tekstu, przeglądarka kodu XML. Powyższe narzędzia będą potrzebne do odczytywania danych pozyskanych z urządzenia. Być może już je posiadasz, a jeżeli nie, możesz je bezpłatnie pobrać z internetu.  Przewód USB. Bardzo ważny jest przewód, którym później połączysz urządzenie z komputerem w celu odczytania danych i przeprowadzenia kontrolowanych ataków. 44 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych  Konwerter plików DEX na JAR, dekompilator kodu Java. Powyższe niewielkie narzędzia będą bardzo potrzebne w Twoim laboratorium. Za ich pomocą będziesz dekompilował kod aplikacji.  Oprogramowanie DroidProxy lub Autoproxy. Ponieważ starsze wersje systemu Android nie pozwalają na współpracę z oprogramowaniem pośredniczącym, dlatego musisz pobrać ze sklepu Play powyższe narzędzia. Jak to działa? Po wyposażeniu laboratorium w wymienione wyżej komponenty sprawdźmy, jak można je wykorzystać do wykonywania testów penetracyjnych z poszczególnych kategorii.  Ataki na dane przesyłane przez aplikacje W tych testach przyda się sieć Wi-Fi i oprogramowanie pośredniczące. Laptopa z zainstalowanym oprogramowaniem Charles lub Burp należy podłączyć do sieci Wi-Fi, a urządzenie przenośne skonfigurować tak, aby przesyłało dane do tego oprogramowania. W razie potrzeby można do tego celu wykorzystać specjalne narzędzia, np. DroidProxy lub Autoproxy. Ponieważ laptop i urządzenie przenośne będą podłączone do tej samej sieci, więc wszystkie dane będą przepływały przez oprogramowanie pośredniczące. Za pomocą powyższych narzędzi i oprogramowania pośredniczącego będziesz mógł przechwytywać i modyfikować wszystkie dane przesyłane przez aplikację, o czym będzie mowa w rozdziale 4.  Ataki na pamięć urządzenia Masz przewód USB do połączenia urządzenia z komputerem, masz również emulator. Zarówno na urządzeniu, jak i na emulatorze możesz uruchamiać aplikacje. Masz również potężne narzędzie ADB, za pomocą którego możesz zalogować się do urządzenia lub emulatora, wykraść z niego dane, a także przeprowadzić wiele różnych ataków.  Ataki na kod źródłowy aplikacji Dekompilację kodu można podzielić na dwa etapy: konwersję pliku APK do DEX oraz konwersję DEX na JAR. APK jest formatem pakietów aplikacyjnych. Po utworzeniu i skompilowaniu aplikacji tworzony jest plik z rozszerzeniem .apk. Konwersja pliku APK na DEX jest dość prosta, polega jedynie na zmianie jego nazwy i rozpakowaniu archiwum. Natomiast konwersję pliku DEX na JAR wykonuje się za pomocą odpowiednich narzędzi. 45 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Przygotowanie środowiska do testów penetracyjnych systemu iOS Poznałeś już środowisko programistyczne Xcode i symulator urządzenia z systemem iOS. Utwo- rzyłeś również swoją pierwszą aplikację. Teraz zajmijmy się testami penetracyjnymi. Podob- nie jak w poprzedniej recepturze, testy penetracyjne urządzeń przenośnych można ogólnie podzielić na cztery kategorie:  ataki na dane przesyłane przez aplikacje przenośne,  ataki na pamięć urządzenia,  ataki na kod źródłowy aplikacji,  ataki na funkcjonalności systemu operacyjnego urządzenia. Przygotuj się Musisz przygotować odpowiednio wyposażone środowisko, które umożliwi przeprowadzanie testów penetracyjnych systemu iOS z czterech wymienionych wyżej kategorii. Będą Ci potrzebne przynajmniej podane niżej komponenty. Ich lista nie różni się zbytnio od wyposażenia laboratorium do testów systemu Android, zawiera jednak kilka specjalistycznych narzędzi.  symulator;  środowisko Xcode;  program iExplorer;  jeden lub dwa telefony iPhone lub tablety iPad (z otwartym dostępem administracyjnym);  oprogramowanie pośredniczące (proxy), np. Charles, Burp Suite lub Fiddler;  sieć Wi-Fi;  przeglądarka bazy SQLite, edytor tekstu, przeglądarka kodu XML, edytor plików .plist;  przewód USB;  narzędzia otool i classdump. Jak to zrobić? Przyjrzyjmy się teraz poszczególnym narzędziom:  Symulator Symulatora będziesz używał do uruchamiania aplikacji. Testy będziesz mógł przeprowadzić, używając jedynie MacBooka z zainstalowanymi odpowiednimi narzędziami (nie będzie potrzebna sieć Wi-Fi ani rzeczywiste urządzenie przenośne). 46 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych  Środowisko Xcode Środowisko Xcode służy do tworzenia aplikacji dla systemu iOS. Bardzo przydaje się do przeglądania nie tylko kodu źródłowego, ale również innych plików.  Program iExplorer Program iExplorer jest odpowiednikiem eksploratora plików w systemie Windows i służy do poruszania się w systemie plików urządzeń iPhone i iPad po podłączeniu ich do komputera za pomocą przewodu USB. Za jego pomocą można również odczytywać pliki i wykradać dane. Program można pobrać ze sklepu App Store. Jest również dostępna jego wersja dla systemu Windows.  Jeden lub dwa telefony iPhone lub tablety iPad (z otwartym dostępem administracyjnym) Do testów przydadzą się urządzenia z otwartym dostępem administracyjnym. Będziesz mógł na nich instalować aplikacje do przetestowania, dzięki czemu nie będziesz musiał korzystać z symulatora.  Oprogramowanie pośredniczące (proxy), np. Charles, Burp Suite lub Fiddler Oprogramowanie pośredniczące można pobrać z odpowiednich stron internetowych. Programy te są dość proste w obsłudze, a ponadto istnieją poświęcone im podręczniki i fora użytkowników. Instalacja tego typu narzędzi wykracza poza zakres tej książki. Opiszemy jednak, jak przygotować je do współpracy z aplikacjami dla urządzeń przenośnych. Poniżej wymienione są strony z najczęściej stosowanymi narzędziami:  http://portswigger.net/burp/download.html  http://www.charlesproxy.com/download  http://www.telerik.com/download/fiddler  Sieć Wi-Fi Sieć Wi-Fi będzie potrzebna do ingerowania w przesyłane dane. W dalszej części książki skonfigurujesz oprogramowanie pośredniczące, zainstalowane na komputerze podłączonym do tej samej sieci Wi-Fi co urządzenie przenośne. Możesz wykorzystać istniejącą sieć i router albo utworzyć nową za pomocą laptopa i jednego z bezpłatnych narzędzi. Z naszego doświadczenia wynika, że w drugim przypadku czasami pojawiają się problemy, dlatego preferujemy pierwszy sposób.  Przeglądarka bazy SQLite, edytor tekstu, przeglądarka kodu XML, edytor plików .plist Powyższe narzędzia będą potrzebne do odczytywania danych pozyskanych z urządzenia. Być może już je posiadasz, a jeżeli nie, możesz je bezpłatnie pobrać z internetu. W plikach .plist aplikacje zapisują swoje dane, dlatego do ich odczytywania będzie potrzebny odpowiedni edytor. 47 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury  Przewód USB Bardzo ważny jest przewód, którym później połączysz urządzenie z komputerem w celu odczytania danych i przeprowadzenia kontrolowanych ataków.  Narzędzia otool i classdump-z Powyższe narzędzia służą do dekompilowania kodu aplikacji dla systemu iOS. Jak to działa? Po wyposażeniu laboratorium w wymienione wyżej komponenty sprawdźmy, jak można je wykorzystać do wykonywania testów penetracyjnych z poszczególnych kategorii.  Ataki na dane przesyłane przez aplikacje W tych testach przyda się sieć Wi-Fi oraz oprogramowanie pośredniczące. Laptop z zainstalowanym oprogramowaniem Charles lub Burp należy podłączyć do sieci Wi-Fi, a urządzenie przenośne skonfigurować tak, aby przesyłało dane do tego oprogramowania. Ponieważ laptop i urządzenie będą podłączone do tej samej sieci, więc wszystkie dane będą przepływały przez oprogramowanie pośredniczące. Do testów nie będzie potrzebny MacBook (można użyć dowolnego komputera), natomiast będzie potrzebne urządzenie z systemem iOS. Możesz również użyć samego MacBooka, bez urządzenia przenośnego. Będzie wtedy potrzebne środowisko Xcode i symulator. Na laptopie trzeba również zainstalować oprogramowanie pośredniczące Burp lub Charles. Za pomocą powyższych narzędzi i oprogramowania pośredniczącego będziesz mógł przechwytywać i modyfikować wszystkie dane przesyłane przez aplikację, o czym będzie mowa w rozdziale 4.  Ataki na pamięć urządzenia Masz przewód USB do połączenia urządzenia z komputerem, masz również program iExplorer, za pomocą którego będziesz mógł odczytywać pliki i wykradać dane.  Ataki na kod źródłowy aplikacji W tej książce opisane są narzędzia otool i classdump-z. Dekompilację kodu aplikacji dla systemu iOS można przeprowadzić w ograniczonym zakresie, więc powyższe narzędzia przydadzą się tylko częściowo. Szczegółowo opiszemy je w dalszej części książki. Co dalej?  Ataki na funkcjonalności systemu operacyjnego urządzenia Powyższa kategoria ataków obejmuje szczególne przypadki, które w systemie iOS są wyjąt- kowo skomplikowane. Aplikacje wykorzystują bardzo dużo funkcjonalności, np. komunikację Bluetooth, NFC lub radio, które należy sprawdzić za pomocą wszechstronnych testów pene- tracyjnych. Typowym przykładem jest wykonywanie zrzutów zawartości ekranu w tle aplikacji. 48 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Uzyskiwanie dostępu administracyjnego do urządzenia przenośnego Rooting polega na uzyskaniu do urządzenia dostępu administracyjnego, dającego możliwość wykonywania wszelkich operacji w systemie Android, np. montowania/demontowania syste- mów plików, uruchamiania usług SSH, HTTP, DHCP, DNS lub proxy, przerywania działania procesów itp. Dzięki możliwości uruchamiania poleceń z uprawnieniami administratora można w systemie Android wykonywać dowolne operacje. Jailbreaking (dosł. ucieczka z więzienia) to proces rozszerzania uprawnień i usuwania ograni- czeń dostępu do podzespołów urządzenia z systemem iOS. Uzyskuje się wtedy dostęp admini- stracyjny do plików systemowych, można pobierać aplikacje, rozszerzenia i motywy, które stan- dardowo nie są dostępne w sklepie Apple Store. Przygotuj się Do uzyskania dostępu administracyjnego do urządzenia Android potrzebny będzie jedynie prze- wód USB oraz odpowiedni kod, który trzeba uruchomić za pomocą programu ADB lub zapi- sać w pamięci ROM urządzenia. W przypadku urządzenia z systemem iOS potrzebny będzie przewód USB i odpowiednie oprogramowanie. Jak to zrobić? Poniżej opisane są operacje uzyskiwania dostępu administracyjnego do obu typów urządzeń. Dostęp do urządzenia Android Właściwy dostęp uzyskuje się jednym kliknięciem. Wcześniej jednak trzeba wykonać kilka prostych operacji: 1. Pobrać i zainstalować na komputerze oprogramowanie Java JDK, a następnie Android SDK. 2. Włączyć na urządzeniu opcję debugowania USB. W tym celu kliknij ikonę Ustawienia, następnie Opcje programistyczne i Debugowanie USB: 49 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Od tej chwili dalsza część procesu uzyskiwania dostępu administracyjnego polega na znale- zieniu w internecie i wykonaniu sprawdzonej, odpowiedniej dla danego urządzenia metody. Dla większości urządzeń jest to jedna z następujących możliwości:  Użycie odpowiedniej aplikacji na komputerze Wykonaj następujące operacje: 1. Zainstaluj na komputerze aplikację do uzyskiwania dostępu administracyjnego. 2. Podłącz do komputera urządzenie za pomocą przewodu USB. 3. Wykonaj instrukcje podawane przez aplikację.  Użycie aplikacji na urządzeniu Wykonaj następujące operacje: 1. Pobierz plik APK do uzyskiwania dostępu administracyjnego. 2. Włącz w urządzeniu opcję debugowania USB i w ustawieniach bezpieczeństwa zezwól na instalację aplikacji z nieznanego źródła. 3. Zainstaluj plik APK za pomocą polecenia adb install /ścieżka/do/pliku/apk. 4. Postępuj według wskazówek pojawiających się na ekranie.  Zapisanie kodu w pamięci ROM Wykonaj następujące operacje: 1. Zapisz na karcie SD zmodyfikowaną zawartość pamięci ROM (w postaci pliku .zip). 2. Uruchom ponownie urządzenie w trybie odzyskiwania. 50 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych 3. W menu odzyskiwania wybierz opcję instalacji pliku zapisanego na karcie SD. 4. Wskaż plik .zip do zapisania w pamięci ROM. Dostęp do urządzenia iOS Zanim otworzysz dostęp administracyjny, musisz utworzyć kopię zapasową urządzenia. Dzięki temu będziesz mógł odtworzyć system, jeżeli z jakiegoś powodu operacja się nie powiedzie. Proces uzyskiwania dostępu administracyjnego polega na pobraniu na komputer odpowiedniego programu dla systemu iOS lub Windows, podłączeniu urządzenia do komputera za pomocą przewodu USB i uruchomieniu programu. Jednym z takich programów jest evasi0n, przed- stawiony na poniższym rysunku: Program wyświetla wskazówki, według których należy postępować. Instaluje również na urządze- niu program Cydia. Służy on do pobierania programów z alternatywnego sklepu zawierające- go aplikacje inne niż oficjalnie zatwierdzone przez Apple. Większość dostępnych w tym sklepie aplikacji, np. do stosowania własnych motywów, widżetów, programów itp., została opracowana przez programistów korzystających z dostępu administracyjnego. 51 Poleć książkęKup książkę Bezpieczeństwo urządzeń mobilnych. Receptury Jak to działa? Przyjrzyjmy się dokładniej procesowi uzyskiwania dostępu administracyjnego. Dostęp do urządzenia Android Dzięki możliwości uruchamiania aplikacji z uprawnieniami administratora można w systemie Android wykonywać dowolne operacje. Proces uzyskiwania dostępu administracyjnego w systemie Android polega zazwyczaj na wy- konaniu dwóch kroków: 1. Wyszukanie luki w zabezpieczeniach urządzenia, umożliwiającej uruchomienie specjalnego kodu z uprawnieniami administratora. 2. Wykorzystanie luki do zainstalowania programu su. Jeżeli urządzenie ma niezablokowany program rozruchowy (bootloader), wtedy cały proces jest bardzo prosty. Niezablokowany program rozruchowy pozwala na zapisywanie w pamięci ROM dowolnego kodu, między innymi programu su. Wystarczy jedynie, trzymając przyciśnięte odpowiednie klawisze, uruchomić ponownie urządzenie w trybie umożliwiającym zapisywanie pamięci ROM, a następnie za pomocą odpowiedniego oprogramowania zapisać nową zawar- tość pamięci ROM. Ale co robić, gdy urządzenie ma zablokowany program rozruchowy? Wtedy nie ma możliwo- ści uruchomienia żadnego kodu z rozszerzonymi uprawnieniami. Wiele programów, np. usług systemowych, działa z uprawnieniami administracyjnymi, aby mogły mieć dostęp do podzespołów urządzenia. Wszystkie metody uzyskiwania dostępu administracyjnego polegają na wykorzystaniu luki w bez- pieczeństwie któregoś z takich programów, uruchomieniu kodu montującego system plików w trybie odczytu i zapisu, a następnie zainstalowaniu programu su. Dostęp do urządzenia iOS Proces uzyskiwania dostępu administracyjnego do urządzenia z systemem iOS przebiega róż- nie w zależności od użytego narzędzia i wersji systemu. Teraz przeanalizujemy działanie jed- nego z takich narzędzi, wykorzystywanego do uzyskania dostępu do telefonu iPhone 5. Najpierw należy użyć biblioteki libimobiledevice, która wykorzystuje błąd w kodzie tworzą- cym kopię zapasową systemu iOS, i uzyskać w ten sposób dostęp do niedostępnego standar- dowo pliku z ustawieniami strefy czasowej. Następnie należy w odpowiednim miejscu systemu plików umieścić odnośnik pozwalający innym programom na komunikowanie się z procesem launchd ładowanym do pamięci podczas urucha- miania urządzenia, który umożliwia uruchamianie aplikacji z uprawnieniami administracyjnymi. 52 Poleć książkęKup książkę Rozdział 1. • Wprowadzenie do bezpieczeństwa urządzeń przenośnych Biblioteka libimobiledevice obsługuje protokół komunikacyjny stosowany w urządzeniach iOS i jest do- stępna dla różnych systemów operacyjnych. Otwiera ona innym programom dostęp do systemu plików urządzenia, umożliwia odczytywanie informacji o urządzeniu i jego wewnętrznych ustawieniach, two- rzenie i odtwarzanie kopii zapasowych, zarządzanie zainstalowanymi aplikacjami, odczytywanie książki telefonicznej, kalendarza, notatek, zakładek oraz synchronizowanie muzyki i filmów. Więcej informacji na temat tej biblioteki znajdziesz na stronie http://www.libimobiledevice.org. Od tej chwili po każdorazowym utworzeniu kopii zapasowej systemu iOS wszystkie programy będą miały dostęp do pliku z ustawieniami strefy czasowej oraz procesu launchd. Pomysłowe, prawda? W systemie iOS stosowane jest podpisywanie kodu, uniemożliwiające niezaufanym aplika- cjom dostęp do procesu launchd. Aby więc uniknąć konieczności podpisywania kodu, narzę- dzie do uzyskiwania dostępu administracyjnego uruchamia nową, na pozór niegroźną aplika- cję. W momencie gdy użytkownik zostanie poproszony o kliknięcie ikony tej aplikacji, stosowana jest technika wykorzystująca ciąg znaków shebang, umożliwiających uruchomienie kodu za pomocą innej, podpisanej aplikacji, którą w tym przypadku jest proces launchd. Shebang jest to ciąg znaków umieszczanych na początku skryptu, składający się z kratki i wykrzyknika (#!). W systemie Unix wiersz skryptu zawierający ciąg shebang jest traktowany jako dyrektywa interpretera. Po wywołaniu skryptu uruchamiany jest odpowiedni interpreter z parametrem zawierającym ścieżkę do pliku z programem do uruchomienia. Jeżeli na przykład jest to ścieżka/do/pliku, a skrypt zaczyna się od wiersza #!/bin/sh, wtedy uruchamiany jest program /bin/sh z argumentem ścieżka/do/pliku. Program launchd (po uzyskaniu do niego dostępu) jest wykorzystywany do zmieniania usta- wień umożliwiających wprowadzanie zmian w plikach systemowych. Aby dostęp administracyjny był stale otwarty, modyfikowany jest plik launchd.conf zawierają- cy ustawienia konfiguracyjne programu launchd. Dzięki temu po każdym restarcie urządze- nia nie trzeba uruchamiać programu otwierającego dostęp administracyjny. Teraz następuje ostatnia faza operacji polegająca na usunięciu zabezpieczeń jądra systemu. W systemie iOS stosuje się program AMFID (ang. Apple Mobile File Integrity Daemon), który uniemożliwia korzystanie z niezatwierdzonych aplikacji. Wywoływany jest ponownie pro- gram launchd, który do programu AMFID ładuje bibliotekę funkcji umożliwiających uru- chamianie wszystkich aplikacji. Innym zabezpieczeniem stosowanym w jądrze systemu jest technika ASLR (ang. Address Space Layout Randomization), która uniemożliwia modyfikację zawartości pamięci poprzez „ukry- wanie” kodu aplikacji po każdorazowym uruch
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Bezpieczeństwo urządzeń mobilnych. Receptury
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: