Stworzenie złośliwego oprogramowania, działającego na wszystkich platformach smartfonów, wydaje się niemożliwe – zbyt wiele jest różnic pomiędzy systemami. Prawie wszystkie telefony mają jednak wspólny element interfejsu użytkownika – port minijack.
Kilka dni temu w New Delhi odbyła się konferencja MalCon 2012. Jednym z ciekawszych wykładów była prezentacja pt. Pied Piper (Flecista Szczurołap), na której Atul Alex pokazał ciekawą koncepcję złośliwego urządzenia, komunikującego się ze smartfonem przez port minijack. Dzięki uprzejmości autora możemy jako pierwsi zaprezentować Wam nagrania, pokazujące działający prototyp urządzenia Atula.
Wspólny element smartfonów
Atul wyszedł z założenia, że jeśli chce skonstruować uniwersalne urządzenie, zdolne do interakcji z wieloma modelami sprzętowymi smartfonów, działającymi pod kontrolą różnych systemów operacyjnych, musi ono korzystać ze sposobu komunikacji wspólnego dla prawie wszystkich urządzeń. Tym sposobem okazała się komunikacja głosowa przez port słuchawkowy. Atul skonstruował więc prototyp, który odtwarzając odpowiednie komunikaty i nasłuchując sygnałów zwrotnych potrafi pozyskiwać ze smartfonów informacje, mogące mieć znaczenia dla atakującego.
Funkcjonalny minijack
Zacznijmy od tego, że złącze minijack, obsługujące nie tylko słuchawki, ale także mikrofon, zwane jest TRRS. Posiada ono cztery styki, odpowiedzialne kolejno za kanał lewy, kanał prawy, mikrofon i masę. Złącze to z reguły umożliwia nie tylko prowadzenie rozmowy, ale także wybieranie głosowe, kontrolowanie odtwarzania muzyki czy wysyłanie prostych poleceń do telefonu (poprzez zwarcie styku mikrofonu z masą, np. sygnał odebrania połączenia). Podłączenie wtyczki do portu powoduje, ze większość komunikacji dźwiękowej zostaje przekierowana na port minijack, odcinając standardowy mikrofon oraz głośnik. Warto także zauważyć, że domyślnie skonfigurowany telefon często przesyła użytkownikowi różne komunikaty w postaci głosowej (np. dzwonek smsa, alarm, zablokowanie klawiatury itp.).
Arduino dobre na wszystko
Do skonstruowania swojego urządzenia Atul wykorzystał platformę Arduino UNO. Prototyp jest dość sporych rozmiarów, lecz nic nie stoi na przeszkodzie, by znacznie go zminiaturyzować. Co już potrafi zrobić to urządzenie? Nawiązać połączenie, wyliczyć i zapisać kontakty z listy adresowej i nagrać naciskane klawisze. Na początek demonstracja obsługiwanych modeli telefonów.
Wykonywanie połączeń
Długie przyciśnięcie klawisza mikrofonu powoduje zainicjowanie wybierania głosowego na iPhonie, Blackberry oraz Windows Phonie, a na Androidzie uruchamia odtwarzacz muzyki (prawdopodobnie ten model telefonu nie miał domyślnej aplikacji do wybierania głosowego). Skoro można zatem zainicjować wybieranie głosowe, to może gdzieś zadzwonimy.
Rejestrowanie czasu rozmowy
Jak widać, urządzenie bez problemu nawiązuje połączenie z konkretnym numerem – wszystko to bez interwencji użytkownika. Takiej funkcjonalności jednak każdy się spodziewał – co zatem jeszcze da się zrobić przez port minijacka? Możemy na przykład rozpoznać początek i koniec każdej rozmowy.
Wyliczanie kontaktów
A co powiecie na wyliczanie kontaktów, zapisanych w pamięci telefonu? Co prawda tylko ich nazw, ale już sama taka informacja może być cenna dla atakującego. Urządzenie korzysta z funkcjonalności podpowiedzi w przypadku problemu z rozpoznaniem nazwy kontaktu wypowiadanej przez użytkownika. Urządzenie celowo podaje nieprawidłową nazwę kontaktu, a wtedy telefon reaguje, pytając „Czy miałeś na myśli Adam?”. Urządzenie zaprzecza, więc telefon kontynuuje „Czy miałeś na myśli Adrian?”. W ten sposób można wyliczyć (i w konsekwencji nagrać) całą listę kontaktową danego aparatu – to tylko kwestia ilości prób.
Rejestrowanie naciśniętych klawiszy
Możliwe jest także wykrywanie naciśniętych klawiszy, dzięki nasłuchowi tonów DTMF, włączonych domyślnie w części aparatów. W ten sposób urządzenie może nagrać wystukiwane na klawiaturze numery telefonów, kody dostępu do serwisu bankowości telefonicznej itp. Oczywiście urządzenie może również nagrywać całość rozmowy, realizowanej za jego pośrednictwem.
Na nas pomysłowość konstruktora urządzenia zrobiła spore wrażenie. Skoro udało mu się tyle osiągnąć korzystając ze standardowych funkcjonalności telefonu, pomyślcie, co mógłby zrobić, gdyby po drugiej stronie poleceń słuchało Siri?
Ale zaraz, jak to ma działać?
Pewnie zapytacie, jak autor wyobraża sobie podłożenie w niezauważalny wtyczki minijack do portu telefonu atakowanego użytkownika. Problem ten jednak wydaje się do rozwiązania – wystarczy odpowiednio zminiaturyzować urządzenie i zamontować je wewnątrz zestawu słuchawkowego, który można podmienić ofierze – jeśli już z takiego korzysta, lub sprezentować – jeśli jeszcze takiego nie ma. Możliwe jest także zdalne odsłuchiwanie przechwyconych informacji. Skoro urządzenie potrafi rozpoznać fakt przychodzącego połączenia telefonicznego, wystarczy skonfigurować je tak, by np. w odpowiedzi na dwa kolejne nieudane połączenia przychodzące w odstępie dokładnie 30 sekund reagowało zadzwonieniem pod wskazany numer i przesłaniem zebranych danych.
Przedstawiony prototyp urządzenia to tylko pewna koncepcja, pokazująca, jak niewiele trzeba, by zaatakować smartfon świadomego użytkownika, zabezpieczony oprogramowaniem antywirusowym i odpowiednią konfiguracją uprawnień. W końcu niewielu z nas zagląda do środka otrzymanego w prezencie zestawu słuchawkowego…
Komentarze
Ktoś tutaj używa OS X ; -)
Tak, np. ja ;-)
Na szczęście najnowszy IPhone jest na to odporny :)