O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Łamanie i zabezpieczanie aplikacji w systemie iOS

Book Description

Twoja lektura obowiązkowa! iOS to obecnie jeden z najpopularniejszych systemów operacyjnych, wykorzystywany w urządzeniach firmy Apple. Jednak dzięki tej popularności jest on też łakomym kąskiem dla hakerów. Uzyskanie dostępu do danych przechowywanych w telefonie może mieć katastrofalne skutki. Dlatego jeżeli tworzysz aplikacje na platformę iOS, ta książka jest dla Ciebie pozycją obowiązkową. Jak obronić się przed atakiem? Wszystkie niezbędne informacje znajdziesz w tym wyjątkowym podręczniku. W trakcie lektury dowiesz się, jak działają hakerzy, jak wyszukują słabe punkty aplikacji oraz jak modyfikują jej kod. Ponadto nauczysz się utrudniać śledzenie kodu Twojej aplikacji oraz bezpiecznie usuwać pliki (tak, aby nie było możliwe ich odtworzenie). Wśród poruszanych tematów znajdziesz również te związane z transmisją danych: wykorzystanie protokołu SSL to nie wszystko, musisz zadbać także o to, żeby nie było możliwe przejęcie sesji SSL. Weź książkę do ręki i obroń się przed atakiem! Dzięki tej książce: zrozumiesz, jak działają hakerzy zabezpieczysz swoją aplikację przez nieuprawnionymi zmianami ochronisz swoje bezpieczne połączenia bezpowrotnie usuniesz niepotrzebne pliki zagwarantujesz bezpieczeństwo danych użytkownikom Twojej aplikacji Zadbaj o bezpieczeństwo danych użytkowników Twojej aplikacji!

Table of Contents

  1. Łamanie i zabezpieczanie aplikacji w systemie iOS
  2. Dedykacja
  3. Wstęp
    1. Adresaci książki
    2. Jak podzielona jest książki
    3. Konwencje typograficzne
    4. Przykłady kodu
    5. Zastrzeżenia prawne
  4. 1. Wszystko, co wiesz, jest błędne
    1. Mit monokultury
    2. Model zabezpieczeń systemu iOS
      1. Składniki modelu zabezpieczeń systemu iOS
        1. Zabezpieczenia urządzeń
        2. Zabezpieczenia danych
        3. Zabezpieczenia sieciowe
        4. Zabezpieczenia aplikacji
    3. Przechowywanie klucza i zamka w jednym miejscu
    4. Hasła jako słabe zabezpieczenie
    5. Ślady pozostawiane przez system niweczą szyfrowanie
    6. Dane zewnętrzne również są zagrożone
    7. Przechwytywanie ruchu
      1. Kradzież danych jest... błyskawiczna
    8. Nie ufaj nikomu, nawet własnym aplikacjom
    9. Fizyczny dostęp nie jest niezbędny
    10. Podsumowanie
  5. I. Hakowanie
    1. 2. Podstawowe techniki łamania zabezpieczeń systemu iOS
      1. Dlaczego należy wiedzieć, jak łamie się zabezpieczenia
      2. Zdejmowanie blokady
        1. Narzędzia programistyczne
      3. Zdejmowanie blokady dla użytkownika
        1. Zdejmowanie blokady w iPhonie
        2. Tryb DFU
        3. Tethered jailbreak a untethered jailbreak
      4. Usuwanie blokady z urządzeń i wstawianie kodu
        1. Budowa własnego kodu
        2. Analizowanie pliku binarnego
          1. Podstawy dezasemblacji
          2. Wyświetlanie listy dynamicznych zależności
          3. Zrzuty tablicy symboli
          4. Poszukiwanie łańcuchów
        3. Testowanie pliku binarnego
        4. Demonizowanie kodu
        5. Wdrażanie złośliwego kodu przy użyciu archiwum tar
          1. Pobieranie podpisanych plików binarnych
          2. Przygotowywanie archiwum
          3. Wdrażanie archiwum
        6. Wdrażanie złośliwego kodu przy użyciu dysku RAM
          1. Tworzenie własnej aplikacji launchd
          2. Analiza kodu źródłowego programu launchd
          3. Tworzenie dysku RAM
          4. Uruchamianie dysku RAM
          5. Rozwiązywanie problemów
      5. Ćwiczenia
      6. Podsumowanie
    2. 3. Wykradanie systemu plików
      1. Pełne szyfrowanie dysku
        1. Pamięć NAND
        2. Szyfrowanie dysków
          1. Szyfrowanie systemu plików
          2. Klasy ochrony
      2. Kiedy szyfrowanie dysku systemu iOS zawodzi
      3. Kopiowanie systemu plików w czasie jego działania
        1. Program DataTheft
          1. Wyłączanie zegara mechanizmu bezpieczeństwa
          2. Tworzenie połączenia USB
          3. Kod właściwy programu
        2. Dostosowywanie narzędzia launchd
        3. Przygotowywanie dysku RAM
        4. Tworzenie obrazu systemu plików
      4. Kopiowanie surowego systemu plików
        1. Program do kopiowania surowego systemu plików
          1. Kod programu
        2. Dostosowywanie narzędzia launchd
        3. Przygotowywanie dysku RAM
        4. Tworzenie obrazu systemu plików
      5. Ćwiczenia
      6. Rola inżynierii społecznej
        1. Wyłączenie podmienionego urządzenia
        2. Dezaktywacja podmienionego urządzenia
        3. Podrzucenie urządzenia ze złośliwym oprogramowaniem
        4. Aplikacja do przechwytywania hasła
      7. Podsumowanie
    3. 4. Ślady pozostawiane przez aplikacje i wycieki danych
      1. Wydobywanie geotagów zdjęć
        1. Skonsolidowana pamięć podręczna GPS
      2. Bazy danych SQLite
        1. Łączenie się z bazą danych
        2. Polecenia bazy danych SQLite
        3. Wydawanie poleceń SQL
        4. Ważne pliki bazy danych
        5. Kontakty książki adresowej
          1. Podsumowanie
        6. Obrazy graficzne z książki adresowej
        7. Dane Map Google
        8. Wydarzenia kalendarzowe
        9. Historia rozmów
        10. Baza danych wiadomości e-mail
          1. Załączniki i pliki wiadomości
        11. Notatki
        12. Metadane zdjęć
        13. Wiadomości SMS
        14. Zakładki przeglądarki Safari
        15. Pamięć podręczna SMS-ów funkcji Spotlight
        16. Pamięci podręczne przeglądarki Safari
        17. Pamięć podręczna aplikacji sieciowych
        18. Pamięć WebKit
        19. Poczta głosowa
      3. Inżynieria wsteczna niepełnych pól bazy danych
      4. Wersje robocze SMS-ów
      5. Listy właściwości
        1. Ważne pliki list właściwości
      6. Inne ważne pliki
      7. Podsumowanie
    4. 5. Łamanie szyfrów
      1. Narzędzia ochrony danych firmy Sogeti
        1. Instalowanie narzędzi ochrony danych
        2. Kompilowanie narzędzia do wykonywania ataków metodą brute force
        3. Kompilowanie potrzebnych bibliotek Pythona
      2. Wydobywanie kluczy szyfrowania
        1. Program KeyTheft
        2. Dostosowywanie programu launchd
        3. Przygotowywanie dysku RAM
        4. Przygotowywanie jądra
        5. Przeprowadzanie ataku metodą brute force
      3. Rozszyfrowywanie pęku kluczy
      4. Rozszyfrowywanie surowego dysku
      5. Rozszyfrowywanie kopii zapasowych z iTunes
      6. Łamanie zabezpieczeń przy użyciu programów szpiegujących
        1. Program SpyTheft
        2. Demonizowanie programu spyd
        3. Dostosowywanie launchd
        4. Przygotowywanie dysku RAM
        5. Uruchamianie programu szpiegującego
      7. Ćwiczenia
      8. Podsumowanie
    5. 6. Odzyskiwanie skasowanych plików
      1. Wydobywanie danych z kroniki HFS
      2. Wydobywanie danych z pustej przestrzeni
      3. Najczęściej odzyskiwane dane
        1. Zrzuty ekranu aplikacji
        2. Usunięte listy właściwości
        3. Usunięte nagrania i poczta głosowa
        4. Usunięta pamięć klawiatury
        5. Zdjęcia i inne dane osobiste
      4. Podsumowanie
    6. 7. Szperanie w systemie wykonawczym
      1. Analizowanie plików binarnych
        1. Format Mach-O
        2. Podstawy używania narzędzia class-dump-z
        3. Tablice symboli
      2. Zaszyfrowane pliki binarne
        1. Obliczanie pozycji
        2. Wykonywanie zrzutu pamięci
        3. Kopiowanie rozszyfrowanego kodu z powrotem do pliku
        4. Zerowanie wartości cryptid
      3. Atakowanie systemu wykonawczego przy użyciu Cycript
        1. Instalowanie Cycript
        2. Używanie Cycript
        3. Łamanie prostych blokad
        4. Podmienianie metod
        5. Poszukiwanie danych
          1. Zmienne egzemplarzowe
          2. Metody
          3. Klasy
        6. Rejestrowanie danych
        7. Poważniejsze konsekwencje
          1. Sejfy na dane osobiste
          2. Aplikacje do przetwarzania płatności
          3. Bankowość elektroniczna
      4. Ćwiczenia
        1. Animacje SpringBoard
        2. Odbieranie rozmów... z przymusu
        3. Robienie zrzutów ekranu
      5. Podsumowanie
    7. 8. Hakowanie biblioteki systemu wykonawczego
      1. Rozkładanie Objective-C
        1. Zmienne egzemplarzowe
        2. Metody
        3. Pamięć podręczna metod
      2. Dezasemblacja i debugowanie
        1. Podsłuchiwanie
        2. Środowisko języka Objective-C
        3. Łączenie z Objective-C
      3. Wstawianie złośliwego kodu
        1. Program CodeTheft
        2. Wstawianie kodu za pomocą debugera
      4. Wstawianie kodu za pomocą dynamicznego konsolidatora
        1. Pełna infekcja urządzenia
      5. Podsumowanie
    8. 9. Przechwytywanie ruchu
      1. Przechwytywanie APN
        1. Dostarczanie złośliwego kodu
        2. Usuwanie
      2. Prosta konfiguracja serwera proxy
      3. Atakowanie protokołu SSL
        1. SSLStrip
        2. Paros Proxy
        3. Ostrzeżenia przeglądarek internetowych
      4. Atakowanie mechanizmu weryfikacji SSL na poziomie aplikacji
        1. Program SSLTheft
      5. Przechwytywanie klas HTTP z biblioteki Foundation
        1. Program POSTTheft
      6. Analizowanie danych
      7. Driftnet
        1. Kompilacja
        2. Uruchamianie narzędzia
      8. Ćwiczenia
      9. Podsumowanie
  6. II. Zabezpieczanie aplikacji
    1. 10. Implementowanie algorytmów szyfrowania
      1. Siła hasła
        1. Uwaga na generatory losowych haseł
      2. Wprowadzenie do Common Crypto
        1. Operacje bezstanowe
        2. Szyfrowanie stanowe
      3. Szyfrowanie z kluczem głównym
      4. Geoszyfrowanie
        1. Geoszyfrowanie z hasłem
      5. Dzielenie kluczy na serwerze
      6. Zabezpieczanie pamięci
        1. Czyszczenie pamięci
      7. Kryptografia klucza publicznego
      8. Ćwiczenia
    2. 11. Zacieranie śladów
      1. Bezpieczne kasowanie plików
        1. Kasowanie przy użyciu algorytmu DOD 5220.22-M
        2. Objective-C
      2. Kasowanie rekordów SQLite
      3. Pamięć klawiatury
      4. Randomizowanie cyfr kodu PIN
      5. Zrzuty widoku okien aplikacji
    3. 12. Zabezpieczanie systemu wykonawczego
      1. Reagowanie na próby modyfikacji
        1. Kasowanie danych użytkownika
        2. Wyłączanie dostępu do sieci
        3. Raportowanie do centrali
        4. Rejestrowanie zdarzeń
        5. Fałszywe kontakty i wyłączniki awaryjne
      2. Sprawdzanie danych procesu
      3. Blokowanie debugerów
      4. Sprawdzanie integralności klas systemu wykonawczego
        1. Sprawdzanie poprawności przestrzeni adresowej
      5. Funkcje śródliniowe
      6. Utrudnianie dezasemblacji
        1. Flagi optymalizacyjne
        2. Usuwanie symboli
        3. Flaga -funroll-loops
      7. Ćwiczenia
    4. 13. Wykrywanie zdjęcia blokady
      1. Test integralności piaskownicy
        1. Testy systemu plików
        2. Obecność plików związanych ze zdejmowaniem blokady
        3. Rozmiar pliku /etc/fstab
        4. Ślady dowiązań symbolicznych
      2. Test wykonywania strony
    5. 14. Dalszy rozwój
      1. Myśl jak haker
      2. Inne narzędzia do inżynierii wstecznej
      3. Bezpieczeństwo a zarządzanie kodem
      4. Elastyczne podejście do kwestii bezpieczeństwa
      5. Inne wartościowe książki
  7. A. O autorze
  8. Indeks
  9. Copyright