Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Badanie dot. aplikacji umożliwiających korzystanie ze wspólnych samochodów (car sharing)

Dodany 24 sierpnia 2018, 11:51 CEST

W związku z rosnącą popularnością serwisów umożliwiających korzystanie ze wspólnych samochodów (car sharing) niektórzy eksperci przewidują koniec prywatnej własności samochodów w dużych miastach. Statystyki zdają się to potwierdzać: np. w 2017 r. w Moskwie dwukrotnie wzrosła flota samochodów wykorzystywanych przez różnych kierowców, liczba aktywnych użytkowników oraz liczba odbytych przejazdów. To dobra wiadomość, jednak specjaliści od bezpieczeństwa informacyjnego zaczęli zadawać pytania: w jaki sposób zabezpieczeni są użytkownicy tych serwisów i na jakie potencjalne zagrożenia są narażeni w przypadku nieautoryzowanego dostępu do ich kont w takich serwisach?   

Dlaczego cyberprzestępcy interesują się serwisami „car sharing”?

Prosta odpowiedź na to pytanie brzmi - chcą przejechać się ładnym samochodem na cudzy koszt. Jednak, jeżeli zafundują sobie taką przejażdżkę więcej niż raz, mogą mieć problem: gdy właściciel konta odkryje, że został obciążony opłatą za samochód, którego nigdy nie wynajmował, najprawdopodobniej skontaktuje się z działem pomocy usługodawcy, usługodawca sprawdzi dane dotyczące przejazdu i - ostatecznie – może zgłosić całą sprawę na policję. To oznacza, że każdy, kto spróbuje „wykręcić ten numer” po raz drugi, zostanie wyśledzony i przyłapany na gorącym uczynku. To oczywiste, i dlatego ten pozornie najbardziej oczywisty powód „porywania” konta w serwisie „car sharing” wydaje się najmniej prawdopodobny.

Bardziej prawdopodobnym powodem jest chęć sprzedaży skradzionych kont. Zapewne istnieje na nie popyt ze strony osób, które nie posiadają prawa jazdy lub które nie mogły zarejestrować się w serwisie, ponieważ zostały odrzucone przez zespół odpowiedzialny za bezpieczeństwo. Owszem, tego typu oferty istnieją już na rynku.   

1_auto.png

Przestępcy oferują „porwane” konta pochodzące z wielu różnych serwisów umożliwiających korzystanie ze wspólnych samochodów

Ponadto, ktoś, kto zna dane konta użytkownika serwisu „car sharing”, może śledzić wszystkie jego przejazdy i ukraść pozostawione w samochodzie przedmioty. I oczywiście, samochód, który został wypożyczony na cudze nazwisko, zawsze może zostać wywieziony w odosobnione miejsce i rozebrany na części, które zostaną następnie wykorzystane jako zapasowe.

Bezpieczeństwo aplikacji

A zatem, skoro wiemy, że istnieje potencjalne zainteresowanie wśród elementu cyberprzestępczego, przekonajmy się, czy twórcy aplikacji umożliwiających korzystanie ze wspólnych samochodów zareagowali na to zagrożenie. Czy pomyśleli o bezpieczeństwie użytkownika i zabezpieczyli swoje oprogramowanie przed nieautoryzowanym dostępem? Przetestowaliśmy 13 aplikacji mobilnych i okazało się, że wyniki wcale nie są optymistyczne. 

Zaczęliśmy od sprawdzenia, czy aplikacje potrafią zapobiec uruchomieniu się na urządzeniach z systemem Android z przywilejami administratora, i oceniliśmy stopień zaciemnienia kodu aplikacji. Zrobiliśmy to z dwóch powodów:  

  • ogromna większość aplikacji z systemem Android może zostać zdekompilowana, ich kod może zostać zmodyfikowany (np. w taki sposób aby dane uwierzytelniające użytkowników zostały wysłane do centrum kontroli (C&C)), następnie ponownie złożony, podpisany przy użyciu nowego certyfikatu i ponownie umieszczony w sklepie z aplikacjami;    
  • na zrootowanym urządzeniu osoba atakująca może przeniknąć do procesu niezbędnej aplikacji i uzyskać dostęp do danych uwierzytelniających.

Kolejnym istotnym elementem bezpieczeństwa jest możliwość wybrania nazwy użytkownika i hasła podczas korzystania z serwisu. W wielu serwisach jako nazwę użytkownika wykorzystuje się numer telefonu osoby korzystającej. Cyberprzestępcy mogą go dość łatwo zdobyć, ponieważ użytkownicy często zapominają o ukryciu go na portalach społecznościowych, podczas gdy użytkowników usług korzystania ze wspólnych samochodów można zidentyfikować w mediach społecznościowych za pomocą ich hashtagów oraz zdjęć.     

2.png

Przykład tego, jak może Cię zdradzić post na portalu społecznościowym

Następnie przyjrzeliśmy się temu, jak aplikacje działają z certyfikatami i czy cyberprzestępcy mają jakąkolwiek szansę przeprowadzenia udanych ataków MITM. Sprawdziliśmy również, jak łatwo można nałożyć na interfejs aplikacji fałszywe okno uwierzytelnienia.   

Inżynieria wsteczna oraz przywileje super-użytkownika

Spośród wszystkich przeanalizowanych aplikacji tylko jedna była zdolna do przeciwdziałania inżynierii wstecznej. Była ona chroniona przy użyciu DexGuard - rozwiązania, którego twórcy obiecują również, że chronione oprogramowanie nie uruchomi się na urządzeniu, na którym właściciel uzyskał przywileje administratora systemu lub które zostało zmodyfikowane (załatane).   

3.png

Nazwy plików w pakiecie instalacyjnym wskazują na wykorzystywanie DexGuard

Jednak, mimo że aplikacja ta jest dobrze chroniona przed inżynierią wsteczną, nic nie powstrzyma jej uruchomienia na urządzeniu z systemem Android z przywilejami super-użytkownika. Poddana takiemu testowi, aplikacja uruchamia się i przechodzi proces autoryzacji serwera. Osoba atakująca mogłaby uzyskać dane znajdujące się w chronionym obszarze przechowywania. Jednak w tej konkretnej aplikacji dane zostały dość skutecznie zaszyfrowane.  

4_auto.png

Przykład zaszyfrowanych danych uwierzytelniających użytkowników

Siła hasła

Połowa przetestowanych przez nas aplikacji nie pozwala użytkownikowi ustanowić swoich własnych danych uwierzytelniających; zamiast tego użytkownicy są zmuszeni do stosowania swojego numeru telefonu oraz kodu PIN, który został wysłany w wiadomości tekstowej. Z jednej strony to oznacza, że użytkownik nie może ustawić prostego hasła takiego jak „1234”; jednak z drugiej strony zwiększa szanse osoby atakującej na zdobycie hasła (poprzez przechwycenie go przy użyciu luki SS7 lub wymianę karty SIM telefonu). Postanowiliśmy użyć naszych własnych kont, aby sprawdzić, jak łatwo można zdobyć „hasło”.

Jeżeli osoba atakująca znajdzie numer telefonu na portalu społecznościowym i spróbuje wykorzystać go do zalogowania się do aplikacji, właściciel otrzyma wiadomość SMS z kodem weryfikacji:

5_auto.png

Jak widać, kod weryfikacji ma zaledwie cztery cyfry, co oznacza, że można go odgadnąć, podejmując maksymalnie 10 000 prób – wcale nie tak dużo. Idealnie byłoby, gdyby takie kody miały co najmniej sześć cyfr i zawierały zarówno wielkie jak i małe litery oraz liczby.  

Inny serwis umożliwiający korzystanie ze wspólnych samochodów wysyła użytkownikom silniejsze hasła. Ma to jednak pewną wadę. Jego kody są tworzone według jednego schematu: na pierwszym i ostatnim miejscu zawsze znajduje się cyfra, w środku natomiast mieszczą się cztery znaki alfabetu łacińskiego pisane małą literą:

6_auto.png

To oznacza 45 milionów możliwych kombinacji do wypróbowania; gdyby nie ograniczenia co do miejsca liczb, liczba kombinacji zwiększyłaby się do dwóch miliardów. Naturalnie, 45 000 000 to również duża liczba, jednak aplikacja nie posiada limitu czasu dla wprowadzania kolejnej kombinacji, dlatego nic nie stoi na przeszkodzie przeprowadzenia ataku siłowego (brute force).  

Wróćmy jednak do kodów PIN pierwszej aplikacji. Aplikacja daje użytkownikowi minutę na wprowadzenie PIN-u; jeżeli to nie wystarczy, użytkownicy muszą poprosić o nowy kod. Okazało się, że „okres ważności” kombinacji wynosi nieco ponad dwie minuty. Stworzyliśmy niewielkie narzędzie do przeprowadzania ataków siłowych, odtworzyliśmy część protokołu komunikacji aplikacja/serwer i rozpoczęliśmy atak siłowy. Trzeba przyznać, że nie byliśmy w stanie odgadnąć kodu tą metodą. Przyczyny tego niepowodzenia są dwie. Po pierwsze, nasze połączenie internetowe mogło być niewystarczające; po drugie, operator serwisu umożliwiającego korzystanie ze wspólnych samochodów ustawił odpowiedni, dwuminutowy limit czasu dla wprowadzenia kodu PIN, tak aby nie można było go złamać metodą siłową w ciągu dwóch minut nawet przy doskonałym połączeniu internetowym. Postanowiliśmy nie kontynuować prób, potwierdzając jedynie, że serwis nadal reagował i atak mógł być kontynuowany po kilku próbach wysłania 10 000 żądań jednocześnie.         

Celowo rozpoczęliśmy atak siłowy w jednym wątku z jednego adresu IP, dając tym samym serwisowi możliwość wykrycia i zablokowania ataku, skontaktowania się z potencjalną ofiarą i – jako ostateczność – dezaktywacji konta. Jednak żadna z tych rzeczy nie miała miejsca. Postanowiliśmy poprzestać na tym i przetestować kolejną aplikację.  

Wszystkie opisane wyżej procedury zastosowaliśmy dla drugiej aplikacji z jednym wyjątkiem: nie odnotowaliśmy skutecznego ataku siłowego na hasło. Stwierdziliśmy, że skoro serwer pozwala na sprawdzenie 1000 kombinacji, prawdopodobnie pozwoliłby również na sprawdzenie 45 milionów, to tylko kwestia czasu. 

7_auto.png

Serwer nadal odpowiada po 1000 próbach odgadnięcia hasła za pomocą metody siłowej

Jest to długi proces z możliwym do przewidzenia wynikiem. Aplikacja ta przechowuje również nazwę użytkownika i hasło lokalnie, w formie zaszyfrowanej, jednak jeżeli osoba atakująca zna ich format, atak siłowy potrwa zaledwie kilka minut – większość tego czasu zostanie przeznaczona na generowanie pary hasło / MD5 hash (hasło jest mieszane przy pomocy algorytmu MD5 i zapisywane w pliku na urządzeniu).      

Atak MITM

Warto zauważyć, że aplikacje wykorzystują protokół HTTPS w celu przesyłania danych do lub z centrum kontroli, dlatego ustalenie protokołu komunikacji może zająć trochę czasu. Aby przyspieszyć nasz „atak”, zastosowaliśmy atak MITM, wspomagany inną globalną luką w bezpieczeństwie: żadna z testowanych aplikacji nie sprawdza certyfikatu serwera. Udało nam się zdobyć zrzut ekranu całej sesji.   

8-a_auto.png

8-b_auto.png
Ochrona przed nakładaniem fałszywego okna

Naturalnie, będzie o wiele szybciej i skuteczniej (z punktu widzenia osoby atakującej), jeśli można zainfekować urządzenie z Androidem, tj. można przechwycić SMS autoryzacyjny, tak aby osoba atakująca mogła od razu zalogować się na innym urządzeniu. Jeśli zostało ustawione złożone hasło, osoba atakująca może „porwać” uruchomienie aplikacji poprzez wyświetlenie fałszywego okna z polami wejściowymi dla danych logowania, które zasłania rzeczywisty interfejs aplikacji. Żadna z analizowanych przez nas aplikacji nie potrafiła przeciwdziałać tego rodzaju aktywności. Jeżeli wersja systemu operacyjnego jest wystarczająco stara, można eskalować przywileje, a w niektórych przypadkach wydobyć wymagane dane.   

Wynik

Sytuacja jest bardzo podobna do tej dotyczącej aplikacji dla samochodów połączonych z Internetem. Wygląda na to, że twórcy aplikacji nie w pełni rozumieją obecne zagrożenia dla platform mobilnych – dotyczy to zarówno etapu projektowania jak i tworzenia infrastruktury. Dobrym pierwszym krokiem byłoby rozszerzenie funkcjonalności powiadamiania użytkowników o podejrzanych aktywnościach – obecnie tylko jeden serwis wysyła powiadomienia do użytkowników o próbach zalogowania się do ich kont z innego urządzenia. Większość aplikacji, które analizowaliśmy, jest źle zaprojektowana z punktu widzenia bezpieczeństwa i powinna zostać poprawiona. Co więcej, wiele programów jest nie tylko podobnych do siebie, ale opiera się na tym samym kodzie.   

Rosyjscy operatorzy serwisów umożliwiających korzystanie ze wspólnych samochodów mogliby się czegoś nauczyć od swoich kolegów z innych państw. Na przykład, główny podmiot na rynku usług krótkoterminowego wypożyczania samochodów umożliwia klientom uzyskiwanie dostępu do pojazdu za pomocą specjalnej karty – być może obniża to komfort korzystania z usługi, ale znacząco zwiększa bezpieczeństwo.

Porady dla użytkowników

  • Nie upubliczniaj swojego numeru telefonu (to samo dotyczy Twojego adresu e-mail)
  • Postaraj się o osobną kartę bankową zarezerwowaną dla płatności online, w tym do wykorzystywania w serwisie umożliwiającym korzystanie ze wspólnych samochodów, i nie trzymaj na niej większej kwoty niż potrzebujesz.    
  • Jeżeli serwis umożliwiający korzystanie ze wspólnych samochodów, z którego korzystasz, wyśle Ci SMS z kodem PIN dla Twojego konta, skontaktuj się z pomocą techniczną i odłącz kartę bankową od konta.  
  • Nie korzystaj ze zrootowanych urządzeń.
  • Korzystaj z rozwiązania bezpieczeństwa, które zabezpieczy Cię przed cyberprzestępcami kradnącymi SMSy. W ten sposób utrudnisz życie nie tylko osobom, które chcą przejechać się na Twój koszt, ale również tym, które chcą przechwytywać SMSy, które wysyła Ci bank.

Zalecenia dla serwisów umożliwiających korzystanie ze wspólnych samochodów

  • Stosuj komercyjnie dostępne narzędzia do pakowania i zaciemniania kodu w celu utrudnienia inżynierii wstecznej. Zwracaj szczególną uwagę na kontrolę integralności, tak aby aplikacja nie mogła zostać zmodyfikowana.
  • Korzystaj z mechanizmów służących do wykrywania operacji na zrootowanych urządzeniach.
  • Pozwól użytkownikowi ustawić własne poświadczenia; dopilnuj, aby wszystkie hasła były silne.
  • Powiadamiaj użytkowników o przypadkach zalogowania się z innych urządzeń.
  • Stosuj powiadomienia PUSH: monitorowanie paska powiadomień w systemie Android przez szkodliwe oprogramowanie nadal jest rzadkością.
  • Chroń swój interfejs aplikacji przed nałożeniem na niego innej aplikacji.
  • Dodaj sprawdzanie certyfikatu serwera.