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

Aplikacje mobilne a kradzież auta z dostępem do internetu

Tagi:

Popularność koncepcji aut połączonych, czyli wyposażonych w dostęp do internetu, rośnie od kilku lat. Nie chodzi tylko o systemy multimedialne (muzyka, mapy czy filmy są dostępne wewnątrz nowoczesnych luksusowych aut), lecz także o systemy kluczy samochodowych, zarówno w znaczeniu dosłownym, jak i przenośnym. Mając do dyspozycji własne aplikacje mobilne, można uzyskać współrzędne GPS danego auta, śledzić jego trasę, otwierać drzwi, uruchamiać silnik oraz włączać znajdujące się w nim urządzenia pomocnicze. Z jednej strony są to bardzo wygodne funkcje, z których korzystają miliony ludzi. Jednak z drugiej strony, jeśli złodziej uzyska dostęp do urządzenia przenośnego ofiary, na którym zainstalowana jest taka aplikacja, to czy kradzież nie stanie się banalna?

Szukając odpowiedzi na to pytanie, zdecydowaliśmy się sprawdzić, co może zrobić przestępca oraz jak właściciele aut mogą uniknąć wynikających z tego kłopotów.

Potencjalne zagrożenia

Warto zauważyć, że programy do sterowania autami są stosunkowo popularne – większość znanych marek udostępnia aplikacje, których liczba użytkowników waha się od kilkudziesięciu tysięcy do kilku milionów. Poniżej publikujemy przykładowe aplikacje wraz z łączną liczbą instalacji.
cars_research_en_1.png

Na potrzeby naszych eksperymentów przebadaliśmy kilka aplikacji, które sterują autami, od różnych producentów. Nie podamy ich nazw, choć poinformowaliśmy ich właścicieli o wynikach naszych badań.

W przypadku każdej aplikacji sprawdziliśmy:

  • dostępność potencjalnie niebezpiecznych funkcji, dzięki którym zwykle można ukraść auto lub przejąć jeden z jego systemów przy użyciu danej aplikacji;
  • czy twórcy aplikacji zastosowali metody komplikujące wykorzystanie inżynierii wstecznej aplikacji (zaciemnianie lub pakowanie). Jeśli nie, złoczyńca z łatwością będzie mógł odczytać kod aplikacji, znaleźć w nim luki i wykorzystać je, aby przedostać się do infrastruktury auta;
  • czy aplikacja sprawdza uprawnienia administratora na urządzeniu (w tym kolejne anulowane instalacje, gdy uprawnienia te zostały włączone). Jeśli szkodliwy program zainfekuje zrootowane urządzenie, będzie mógł zrobić z nim dosłownie wszystko. W tym przypadku ważne jest, aby dowiedzieć się, czy programiści włączyli opcję zapisywania danych uwierzytelniających użytkownika na urządzeniu w postaci pliku tekstowego;
  • czy wykonywane jest sprawdzanie, czy interfejs widoczny dla użytkownika należy do aplikacji (ochrona przed nakładaniem). Choć system Android umożliwia monitorowanie, która aplikacja jest wyświetlana użytkownikowi, szkodliwy program może wyświetlać swoje okno phishingowe posiadające identyczny interfejs i ukraść w ten sposób na przykład dane uwierzytelniające;
  • dostępność sprawdzania integralności przez aplikację, np. czy weryfikuje ona zmiany w swoim kodzie. Wiąże się to na przykład z tym, czy ktoś może wstrzyknąć do aplikacji swój kod, a następnie udostępnić ją w sklepie, z tą samą funkcjonalnością i funkcjami, jakie posiada oryginalna aplikacja.

Niestety okazało się, że wszystkie aplikacje są w jakimś stopniu podatne na ataki.

Testowanie aplikacji samochodowych

Na potrzeby tego badania wzięliśmy na warsztat siedem najbardziej popularnych aplikacji znanych firm i sprawdziliśmy je pod kątem luk, które mogłyby zostać użyte do uzyskania dostępu do infrastruktury auta.

Wyniki naszego testu zostały przedstawione w poniższej tabeli. Ponadto sprawdziliśmy funkcje bezpieczeństwa każdej z aplikacji.

art_connected_cars_feb_2017_auto.png

Aplikacja nr 1

Cały proces rejestracji auta sprowadza się do wprowadzenia w aplikacji loginu i hasła użytkownika oraz numeru VIN. Następnie aplikacja wyświetla kod PIN, który należy wprowadzić przy użyciu konwencjonalnych metod do wnętrza auta, aby zakończyć procedurę łączenia smartfona z pojazdem. Tym samym posiadanie numeru VIN nie wystarczy, aby odblokować drzwi samochodu.

Aplikacja nie sprawdza, czy urządzenie zostało pozbawione zabezpieczeń (zrootowane), a nazwę użytkownika urządzenia wraz z numerem VIN auta przechowuje w pliku accounts.xml w postaci tekstowej. Jeśli na połączonym smartfonie trojan uzyska dostęp na poziomie superużytkownika, kradzież danych nie będzie trudnym zadaniem.

Aplikację nr 1 można łatwo zdekompilować, z kolei jej kod można odczytać i przeanalizować. Ponadto nie zapobiega ona nakładaniu innego interfejsu na własny, przez co istnieje możliwość przechwycenia nazwy użytkownika i hasła przez aplikację phishingową, której kod może liczyć zaledwie 50 linijek. Wystarczy sprawdzić, która aplikacja obecnie działa, a następnie rozpocząć szkodliwe działanie z podobnym interfejsem GUI, jeśli aplikacja posiada nazwę pakietu docelowego.

Aby sprawdzić weryfikację integralności, zmodyfikowaliśmy metodę loginWithCredentials.
cars_research_en_2.png

W tym przypadku nazwa użytkownika i hasło będą zwyczajnie wyświetlane na ekranie smartfona, lecz zabrakło tu środków zabezpieczających przed osadzeniem kodu w celu wysłania danych logowania na serwer przestępców.

Brak weryfikacji integralności sprawia, że dowolna osoba może zmodyfikować aplikację wg własnego uznania i rozpocząć jej dystrybucję wśród potencjalnych ofiar. Brakuje także weryfikacji podpisu. Bez wątpienia taki atak wymagałby wysiłku od osoby atakującej, ponieważ użytkownik musi pobrać zmodyfikowaną wersję aplikacji. Pomimo tego atak ma naturę na tyle ukradkową, że użytkownik może nie zauważyć niczego podejrzanego, dopóki nie ukradną mu auta.

Jednak pocieszające jest to, że do nawiązania połączenia aplikacja wymaga certyfikatów SSL. Takie rozwiązanie zapobiega atakom man-in-the-middle.

Aplikacja nr 2

Aplikacja oferuje zapisanie danych uwierzytelniających użytkownika, lecz równocześnie zaleca zaszyfrowanie całego urządzenia jako środek zabezpieczający przed kradzieżą. To miłe, ale my nie mamy zamiar ukraść telefonu – chcemy go zainfekować. Pojawia się tu podobny problem, jaki zauważyliśmy w Aplikacji nr 1: nazwa użytkownika i hasło są przechowywane w postaci tekstowej w pliku file.{ ?????????}.xml (znaki zapytania zastępują losowe znaki generowane przez aplikację).
cars_research_en_3.png

Numer VIN jest przechowywany w innym pliku.
cars_research_4.png

Im dalej idziemy, tym więcej dostajemy. Twórcy nie znaleźli czasu nawet na to, aby zaimplementować weryfikację integralności kodu aplikacji, i z jakiegoś powodu zapomnieli również o zaciemnianiu. W konsekwencji nie mieliśmy problemu ze zmodyfikowaniem kodu LoginActivity.

 cars_research_en_5.png

A zatem, aplikacja zachowała własną funkcjonalność. Jednak nazwa użytkownika i hasło, wprowadzone podczas rejestracji, było wyświetlane na ekranie tuż po próbie zalogowania.

Aplikacja nr 3

Auta sparowane z tą aplikacją są opcjonalnie wyposażone w moduł sterowania, który może uruchomić silnik i odblokować drzwi. Każdy moduł zainstalowany przez dealera posiada naklejkę z kodem dostępu, która jest wręczana właścicielowi auta. W ten sposób nie połączysz auta z innymi danymi logowania, nawet jeśli znasz numer VIN.

Jednak w tym przypadku możliwe są inne wektory ataku. Po pierwsze, aplikacja jest bardzo mała: rozmiar jej APK wynosi 180 kilobajtów. Po drugie, aplikacja rejestruje swoje dane debugowania w pliku, który jest zapisany na karcie SD.

 cars_research_en_6.png

Logowanie podczas uruchamiania LoginActivity

 cars_research_en_7.png

Miejsce przechowywania pliku rejestracji

Niestety logowanie jest włączone tylko wtedy, gdy w aplikacji ustawiona jest następująca flaga: android:debuggable="true". Publicznie dostępna wersja aplikacji nie posiada flagi z powodów oczywistych, lecz przecież nie ma przeszkód, aby ją dodać – na przykład narzędziem Apktool. Po uruchomieniu zmodyfikowanej aplikacji i próbie zalogowania karta SD w urządzeniu utworzy folder marcsApp z plikiem TXT. W naszym przypadku nazwa użytkownika i hasło do konta zostały zapisane w pliku.

 cars_research_en_8.png

Oczywiście przekonywanie ofiary, aby usunęła oryginalną aplikację i zainstalowała taką samą z flagą informującą o usuwaniu błędów z programu lub systemu komputerowego, nie jest prostym zadaniem. Niemniej jednak nie jest to niemożliwe – można na przykład zwabić ofiarę na stronę, na której nasza aplikacja i instrukcja instalacji mogą wystąpić pod postacią aktualizacji krytycznej. Twórcy wirusów mają duże doświadczenie w stosowaniu takich metod socjotechnicznych. W późniejszym czasie można łatwo dodać do aplikacji funkcję wysyłania pliku rejestru na wyznaczony serwer czy numer telefonu w postaci wiadomości SMS.

Aplikacja nr 4

Aplikacja ta umożliwia łączenie istniejącego kodu VIN z dowolnymi danymi logowania, lecz usługa wysyła stosowne żądanie do komputera podkładowego auta. Dzięki temu, jeśli ktoś niepowołany wejdzie w posiadanie numeru VIN, nie zhakuje auta.

Jednak testowana aplikacja nie posiada zabezpieczeń przed nakładaniem okien. Jeśli ktoś uzyska nazwę użytkownika i hasło do systemu, będzie mógł odblokować drzwi auta.

Co gorsza, aplikacja przechowuje nazwę użytkownika systemu oraz wiele innych interesujących danych, np. markę samochodu, kod VIN, a także numery auta, w pliku tekstowym MyCachingStrategy.xml.

Aplikacja nr 5

Aby połączyć auto ze smartfonem, na którym zainstalowana jest ta aplikacja, konieczne jest posiadanie kodu PIN, który zostanie wyświetlony przez komputer pokładowy auta. Oznacza to, że podobnie jak w przypadku poprzedniej aplikacji, sama wiedza odnośnie numeru VIN nie wystarczy – auto musi być dostępne od wewnątrz.

Aplikacja nr 6

Aplikacja ta została utworzona przez Rosjan, a jej koncepcja różni się od konkurencji tym, że do autoryzacji jest wykorzystywany numer telefonu właściciela pojazdu. Podejście to stwarza poważne zagrożenie dla każdego właściciela auta: aby zainicjować atak, należy wykonać tylko jedną funkcję Android API, a następnie będzie można poznać nazwę użytkownika systemu.

Aplikacja nr 7

Przy ostatniej sprawdzonej przez nas aplikacji należy wspomnieć, że nazwa użytkownika i hasło są przechowywane w pliku tekstowym credentials.xml.

cars_research_en_9.png

Jeśli smartfon zostanie zainfekowany Trojanem z uprawnieniami superużytkownika, kradzież pliku stanie się tylko formalnością.

Szanse na kradzież auta

Teoretycznie po wykradzeniu danych logowania złodziej może przejąć kontrolę nad autem, ale nie oznacza to, że będzie mógł nim jeździć, ponieważ do jazdy wymagany jest klucz. Dlatego gdy ktoś zdoła dostać się do środka, musi napisać nowy klucz do systemu pokładowego auta przy użyciu programatora. Przypomnijmy, że niemal wszystkie z opisanych wyżej aplikacji umożliwiają odblokowanie drzwi, czyli dezaktywację alarmu. W ten sposób złoczyńca może potajemnie i szybko wykonać wszystkie działania, aby ukraść auto bez dokonywania fizycznych zniszczeń w aucie.

Ponadto różnorodność zagrożeń nie kończy się na samej kradzieży auta. Mając dostęp do auta i mogąc celowo manipulować jego komponentami, można przyczynić się do spowodowania wypadków drogowych, w których ktoś ucierpi zdrowotnie, lub nawet zginie.

Żadna z przebadanych przez nas aplikacji nie posiadała mechanizmów obronnych. Jednak twórców tych aplikacji należy wyraźnie pochwalić za to, że żaden z wyżej wspomnianych programów nie używa kanałów głosowych lub SMS-ów do sterowania autem. Metody te są używane przez producentów alarmów możliwych do dokupienie, w tym rosyjskich. Z jednej strony nie jest to zaskoczeniem, gdyż jakość internetu mobilnego nie zawsze pozwala na to, aby auto nieustannie było połączone z Siecią, tymczasem połączenia głosowe i SMS-y są na tyle podstawowymi funkcjami, że są dostępne zawsze. Z drugiej strony tworzy to wiele zagrożeń związanych z bezpieczeństwem aut, do których teraz przejdziemy.

Sterowanie głosem odbywa się przy pomocy tzw. poleceń DTMF. Właściciel musi dosłownie zadzwonić do auta, a alarm odpowie na przychodzące połączenie przyjemnym kobiecym głosem, zgłaszając stan auta, a następnie przejdzie w stan czuwania, oczekując na kolejne polecenia właściciela. Następnie wystarczy wybrać zaprogramowane numery na klawiaturze telefonu, aby w samochodzie odblokowały się drzwi i uruchomił się silnik. Inaczej mówiąc, system alarmowy rozpoznaje te kody i wykonuje odpowiednie polecenia.

Twórcy takich systemów zadbali o bezpieczeństwo, udostępniając białą listę numerów telefonów, które mogą sterować autem. Jednak nikt nie przewidział sytuacji, w której telefon właściciela zostanie zhakowany. Ktoś mógłby przecież zainfekować smartfona ofiary prostą aplikacją, która dzwoni do alarmu w imieniu ofiary. Jeśli głośniki i ekran są w tym samym czasie wyłączone, możliwe jest przejęcie pełnej kontroli nad autem, bez wiedzy ofiary.

Z pewnością jednak nie wszystko jest tak łatwe, jak to się może wydawać. Na przykład wielu entuzjastów aut zapisuje numer systemu alarmowego pod wymyśloną nazwą, czyli podczas przygotowywania ataku należy przeanalizować częstotliwość interakcji ofiary z autem przy użyciu połączeń. Osoba, która uzyska historię połączeń wychodzących, będzie mogła wyszukać numer auta w kontaktach ofiary.

Twórcy innej metody sterowania alarmem z pewnością nie przeczytali żadnego z naszych artykułów na temat bezpieczeństwa urządzeń z systemem Android. Polega ona na tym, że auto jest sterowane poprzez polecenia SMS-owe. A przecież pierwsze i najbardziej powszechne trojany mobilne wykryte przez Kaspersky Lab były trojanami SMS-owymi. Były to szkodliwe programy, które miały za zadanie ukradkowe wysyłanie SMS-ów, czasami na polecenie zdalne wysyłane przez złodziei. W efekcie drzwi auta ofiary mogły zostać otworzone, jeśli twórcy szkodliwego programu wykonali trzy poniższe kroki:

1)      przejrzenie wszystkich wiadomości SMS na smartfonie w celu wyszukania komend wydawanych pojazdowi,

2)      po odnalezieniu żądanych SMS-ów należy skopiować był z nich numer telefonu i hasło na potrzeby uzyskania dostępu,

3)      wysłanie wiadomości SMS na numer, który odblokuje drzwi auta.

Do wykonania wszystkich trzech powyższych kroków można wykorzystać trojana, gdy tymczasem ofiara nic nie podejrzewa. Jedyne, co należy zrobić, a co złoczyńcy z pewnością potrafią, jest zainfekowanie smartfona.

Wniosek

Auta nie należą do tanich przedmiotów, dlatego wymagają podejścia do bezpieczeństwa nie mniej skrupulatnego niż w przypadku konta bankowego. Jak wiadomo, producenci aut i twórcy aplikacji starają się szybko wypełnić rynek aplikacjami, które mają nowe funkcje, aby zaspokoić potrzeby właścicieli aut. Jednak gdy myślimy o bezpieczeństwie aut posiadających dostęp do internetu, nie chodzi tylko o bezpieczeństwo jego infrastruktury (serwery sterowania), interakcję czy kanały infrastruktur. Warto także zwrócić uwagę na to, co znajduje się po stronie klienta, a zwłaszcza na aplikacje zainstalowane na urządzeniach użytkowników. Zbyt łatwo można odwrócić aplikację przeciwko właścicielowi auta, a obecnie to strona klienta jest najbardziej podatna na ataki złoczyńców.

W tym miejscu należy dodać, że do chwili obecnej nie odnotowaliśmy ani jednego ataku na aplikacje przeznaczone do sterowania autami, a żaden z tysięcy wykrytych przez nas szkodliwych programów nie zawierał kodu, który nakazywałby pobieranie plików konfiguracyjnych takich aplikacji. Jednak współczesne trojany są dosyć elastyczne: dziś mogą wyświetlać uporczywe reklamy (a użytkownik nie może ich usunąć sam), lecz jutro mogą przesłać plik konfiguracyjny z aplikacji auta na serwer kontroli na żądanie przestępców. Trojany mogą również usunąć plik konfiguracyjny i nadpisać go nowym, zmodyfikowanym. Dopóki będzie to dla kogoś opłacalne, będą pojawiać się coraz to nowe możliwości dla trojanów mobilnych, nawet dla tych najbardziej powszechnych.