Bezpieczeństwo systemów mobilnych – Android/iOS – kilka ciekawych zasobów

30 grudnia 2013, 12:01 | Teksty | 0 komentarzy
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.
W nawiązaniu – w pewnym sensie – do rozpoczętej niedawno serii (Bezpieczeństwo sieci przemysłowych / SCADA – kilka ciekawych zasobów), dzisiaj parę słów o ciekawych miejscach w sieci dotyczących bezpieczeństwa urządzeń mobilnych.

Co mam na myśli pisząc ‚urządzenia mobilne’?

Telefony oraz tablety wykorzystujące dwie platformy: Android oraz applowski iOS – które sumarycznie mają prawie 95% rynku (z czego Android przeszło 80%). W dalszej kolejności należy wskazać wschodzący Windows Phone (około 3.5% rynku) oraz balansujący już chyba na krawędzi upadku Blackberry (niecałe 2% rynku).

Całą tematykę bezpieczeństwa platform mobilnych można podzielić na trzy obszary:

  1. bezpieczeństwo infrastruktury mobilnej,
  2. bezpieczeństwo urządzeń końcowych,
  3. bezpieczeństwo aplikacji mobilnych.

 

Bezpieczeństwo infrastruktury mobilnej

Osobom chcącym zorganizować własną infrastrukturę mobilną tak, aby umożliwiała sprawne działanie oraz bezpieczne zarządzenie flotą mobilną, polecam dwa dokumenty, których krótką charakterystykę przedstawiam poniżej.

1. Mobile Security Reference Architecture (cio.gov)

Dokument opisuje wzorcowe wdrożenie bezpiecznej architektury mobilnej – bez skupiania się na konkretnej platformie.

Zaczynając – mamy tutaj sporą sekcję dotyczącą częstych zagrożeń dla systemów mobilnych – od kwestii zagrożeń związanych z korzystaniem z webu, przechodzimy przez problemy z technologiami bezprzewodowymi (w tym NFC), socjotechnikę, aż do problemów z fizyczną utratą telefonu czy wrogą ingerencją w sam sprzęt.

Dalej w dokumencie przeczytamy o takich rozwiązaniach jak:

  • systemy klasy MDM (Mobile Devices Management), umożliwiające łatwe, scentralizowane zarządzenie naszą „flotą” urządzeń mobilnych,
  • systemy DLP (Data Loss Prevention) – kontrolujące przepływ wrażliwych danych z/na urządzenia mobilne,
  • systemy IDS / VPN (standardowe komponenty niejednej architektury bezpieczeństwa, nie tylko systemów mobilnych).

Całość charakterystyki dopełniają diagramy, na przykład takie jak ten:

mob1

2. Guidelines for Managing the Security of Mobile Devices in the Enterprise (NIST)

Jeśli ktoś potrzebuje lektury do pociągu, wcześniej wspomniane opracowanie (Mobile Security Reference Architecture) może okazać się zbyt „ciężkie”. Ale bez obaw, zamiennie proponuję przyjrzeć się dokumentowi z NIST-u: Guidelines for Managing the Security of Mobile Devices in the Enterprise.

Znajdziemy tutaj podstawowe informacje o mobilnych zagrożeniach takich jak:

  • używanie niezaufanych aplikacji,
  • brak odpowiednich zabezpieczeń fizycznych na urządzeniach,
  • wykorzystanie w firmie urządzeń, których na co dzień używamy prywatnie (BYOD),
  • problemy wynikające z łączenia się do niezaufanych sieci czy problemy z kodami QR,

Nie zabraknie też informacji o rozwiązaniach klasy MDM (Mobile Device Management) umożliwiających zarządzanie scentralizowane:

  • dostęp do komponentów urządzeń sprzętowych (kamera, GPS, port USB, Bluetooth, itd.),
  • polityka uruchamiania aplikacji (np. tylko aplikacji z whitelisty),
  • dostęp tylko do konkretnych app stores,
  • zdalny reset / zerowanie danych urządzenia,
  • zarządzanie szyfrowaniem storage,

Na koniec mamy również propozycję opracowania Mobile Development Life Cycle, czyli procedur całościowego zarządzania bezpieczeństwem mobilnym w czasie – od momentu zakupu urządzeń, przez konfigurację oraz zarządzanie zmianami aż do ich bezpiecznej utylizacji.

 

Bezpieczeństwo urządzeń końcowych

W poprzednim punkcie wskazałem kilka zaleceń dotyczących budowania bezpiecznej infrastruktury mobilnej, pora teraz wspomnieć o informacjach dotyczących samych urządzeń (telefonów i tabletów).

cbenchmarksTutaj na początek polecam dokumenty hardeningowe z organizacji CIS – Google Android Benchmarks oraz Apple iOS Benchmarks.

Znajdziemy tu omówienie:

  • ustawienia szyfrowania storage,
  • ustawienia przeglądarki,
  • zarządzania aktualizacjami,
  • ustawień dotyczących Wi-Fi / Bluetooth,
  • ustawień dotyczących blokowania telefonu,
  • ustawień dotyczących poczty elektronicznej,
  • bezpiecznego zerowania sprzętu przed sprzedażą / przekazaniem do serwisu,

Te przeszło 50-stronicowe dokumenty są dość często aktualizowane (już jest dostępna wersja dla iOS7), a często stanowią też bazę dla innych dokumentacji hardeningowych, np. takich jak ta.

1. Malware na urządzeniach mobilnych

W procentowej liczbie malware na urządzeniach mobilnych przoduje Android – między innymi z racji na otwartości samej platformy oraz dużego pokrycia rynku. Niektórzy szacują, że w „rynku malware” Android ma 79% udziału (vs iOS – mniej niż 1%), inni piszą, że jest to wartość przekraczająca 90% (patrz też zrzut ekranowy poniżej). Jedni straszą (zlokalizowano już przeszło 1 000 000 przypadków Malware na Androida), drudzy uspokajają (nie ma się co bać androidowego malware – rzecze szef androidowego teamu bezpieczeństwa w Google).

juni_android

Za: Juniper

Niemniej faktem jest, że malware na urządzenia mobilne istnieje, rozwija się i – podobnie jak w przypadku zwykłych PC – infekcji sprzyjają ryzykowne zachowania użytkowników. Jailbreaking / rooting / korzystanie z alternatywnych app stores (czasem, aby uzyskać dostęp do spiraconych appów) – to tylko kilka przykładów.

A propos spiraconych appów, czasem malware serwowany jest w „podrabianych” aplikacjach? Kto z Was słyszał o „Angry Zombie Birds”? Grafika wprawdzie nieco przaśna, ale fanów tego typu alternatywy było sporo. A że przy okazji telefon graczy mógł wysłać trochę SMS-ów premium, to już inna sprawa. ;-)

az1

Wracając z kolei do rootingu / jailbreakingu, warto przyznać, że istnieją pewne androidowe aplikacje zwiększające bezpieczeństwo systemu, które wymagają zrootowanego urządzenia. Jednak mimo wszystko, sumarycznie cały proces raczej zmniejsza niż zwiększa bezpieczeństwo – niektórzy, przy okazji ochoczo uczestnicząc w wojnie Apple vs Google, nieco złośliwie komentują to np. tak: „jailbreaking essentially reduces ios security to the level of android„. Zresztą ww. prezentacja to niezłe podsumowanie bezpieczeństwa Androida vs iOS.

Twórcy Androida zauważyli niedawno rosnący problem z malware, udostępniając choćby ostatnio (od wersji 4.2 systemu) funkcjonalność Verify apps. Umożliwia ona skanowanie pod względem bezpieczeństwa aplikacje, które instalujemy na swoim urządzeniu (obsługuje oficjalny Google Play oraz inne androidowe źródła aplikacji). W przypadku wykrycia problemu bezpieczeństwa – aplikacja nie jest instalowana. W wersji 4.3 OS funkcjonalność została udostępniona jako jeden z serwisów Google Play i jednocześnie usunięta z core systemu – przez co mogą z niej skorzystać i starsze wersje Androida (od 2.3 w górę).

2. Inne wybrane problemy bezpieczeństwa urządzeń końcowych (oraz metody ochrony)

Zarówno wspomniana wyżej funkcjonalność Verify apps, jak i kilka innych zwiększających bezpieczeństwo Androida została niedawno zaprezentowana przez team Google’a na konferencji Virus Bulletin. W dość kompaktowej formie pokazano z jednej strony zagrożenia, z drugiej – metody ochrony stosowane w Androidzie (sandboxing, SELinux, ASLR, Fortify Source, szyfrowanie danych urządzenia, ostrzeżenia przed wysyłką SMS-ów premium, itp.),  z trzeciej – zaprezentowano garść statystyk dotyczących malware wykrywanych na bieżąco przez mechanizmy Google Play.

a1

Za: Google

Warto przy okazji zaznaczyć, że część z tych funkcjonalności działa w pełni dopiero w wersji systemu 4.4 – przykładem niech będzie SELinux, który we wcześniejszych wersjach systemu działał w trybie ‚permissive’, a dopiero ostatnio w ‚enforcing’. Szkoda też, że autorzy ww. prezentacji nie wspominają o takich problemach jak fragmentacja platformy Android (dużo różnych modeli sprzętu z najróżniejszymi konfiguracjami softwareowymi) – przecież bardzo ciężko jest dobrze zapanować nad aktualizacjami bezpieczeństwa dla tak różnych środowisk. Całość problemu ilustruje choćby ta grafika podana za serwisem OpenSignal:

afrag

Za: OpenSignal

Zainteresowanym listą potencjalnych problemów z bezpieczeństwem platform Android oraz iOS to polecam wspomnianą już wyżej prezentację: Android vs. Apple iOS Security Showdown.

Wspominałem wyżej prezentację załogi Googla wychwalającą bezpieczeństwo Androida, ale oczywiście ekipa Apple również wyciąga z rękawa swoje asy. Wystarczy zobaczyć dość rozbudowaną listę funkcjonalności bezpieczeństwa dostępnych w iOS (ARM Execute Never, ASLR, App sandboxing, Hardware Encryption, Per App VPN czy jakże istotny w kontekście bezpieczeństwa App Store Review Process – to tylko kilka przykładów). Oczywiście jak to bywa w przypadku materiałów producenta – trzeba być czujnym.

Jak się np. okazało, Full Disk Encryption – przynajmniej w iOS < 7 – nie jest takie Full… (w wersji 7. jest o wiele lepiej). Czasem też zawodzą niektóre nowinki, jak np. ostatni hit – czytnik linii papilarnych. Idealna nie jest też recenzja aplikacji przed udostępnieniem w App Store.

Niemniej jednak platforma Apple przynajmniej pod względem bezpieczeństwa wydaje się być bardziej dojrzała niż Android (fani iUrządzeń mają do dyspozycji choćby wsparcie sprzętowe do FDE, w zasadzie nie ma tu problemu fragmentacji, a ograniczone do jednego miejsca źródło aplikacji i idący za tym proces analizy aplikacji przed udostępnieniem stanowi jednak  niezłe sito dla malware). Zazwyczaj też pewne funkcjonalności pojawiają się wcześniej niż ich odpowiedniki w Androidzie (przykładem nich będzie choćby szyfrowanie zawartości telefonu). Odporniejszy na ataki wydaje się również system operacyjny Apple (wraz ze standardowymi komponentami typu przeglądarka internetowa) – może o tym świadczyć porównanie cen exploitów Android vs iOS. Dla tego pierwszego błąd 0-day na czarnym rynku kosztuje w granicach $30 000 – $60 000, tymczasem dla Appla są to kwoty dochodzące do $250 000, choć chodzą słuchy i o okrągłej kwocie pół miliona dolarów.

 

Bezpieczeństwo aplikacji mobilnych

To temat zasługujący na co najmniej osobny tekst…

Jeśli sami przygotowujemy aplikację mobilną, to warto pamiętać choćby o takich elementach jak:

  • sposób komunikacji z backendem serwerowym oraz ewentualne podatności w części aplikacyjnej pracującej po stronie serwerowej (jeśli aplikacja działa w modelu klient-serwer),
  • sposób przechowywania istotnych danych na urządzeniu końcowym (np. hasła dostępowe przechowywane w plaintext, w lokalnej bazie danych…),
  • rozmaite wstrzyknięcia po stronie klienckiej (np. do często wykorzystywanej bazy SQLite),
  • wyciek wrażliwych informacji z telefonów.

Pełniejszą klasyfikację można znaleźć na przykład na stronach OWASP (Mobile Security Project, The Mobile App Top 10 Risks, czy choćby IOS Application Security Testing Cheat Sheet). Bardzo dużo konkretnych informacji można też znaleźć w literaturze papierowej (patrz niżej).

Jednym z lepszych źródeł wiedzy jest też tutaj … praca na żywych aplikacjach. Kilka ciekawych zasobów praktycznych (aplikacje .apk do legalnego atakowania – w formie ctf/hackme) można znaleźć tutaj.

Co jeszcze?

asbookNa pewno warto polecić kilka książek, dostępnych – jak to często bywa – tylko w wersji anglojęzycznej:

Przed zakupem warto jednak wcześniej zapoznać się przynajmniej ze spisem treści, tak aby nie mieć niemiłych niespodzianek (na przykład iOS Hacker’s Handbook bardziej przeznaczona jest dla osób chcących poszukiwać podatności w samym systemie operacyjnym, niż dla developerów czy pentesterów aplikacji mobilnych).

Z innych ciekawych źródeł na pewno mogę też polecić serwis (blog) http://www.enterpriseios.com/. Znajdziemy tam zarówno bieżące ciekawostki związane z wdrożeniem platformy iOS w firmie, jak i np. porównania systemów MDM. Godnym rekomendacji jest też blog Jonathana Zdziarskiego, który zajmuje się głównie platformą iOS.

Jak zwykle warto też przeszukać archiwum konferencji blackhat – w tym roku nasz temat porusza np. prezentacja Android: One Root to Own Them All czy kwestie dotyczące praktycznych ataków na systemy MDM.

Zobacz też: audyt bezpieczeństwa aplikacji mobilnych.

 

michal.sajdak<at>securitum.pl

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz

Time limit is exhausted. Please reload CAPTCHA.