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

Kto oglądał twoje konto na Instagramie? I kto ukradł twoje hasło?

Dodany 25 marca 2016, 11:33 CET
Tagi:

Wprowadzenie

Aplikacje mobilne stały się jednym z najwydajniejszych wektorów ataków, a jedną z ulubionych metod cyberprzestępców jest wykorzystywanie popularnych aplikacji. Może powinieneś zastanowić się, zanim zainstalujesz jakąkolwiek aplikację, która prosi o dane uwierzytelniające wykorzystywane do łączenia się portalami społecznościowymi, kontami e-mail czy usługami przechowywania w chmurze?

Niedawno szkodliwa aplikacja o nazwie “InstaCare – Who cares with me” została opublikowana za pośrednictwem sklepów Google Play Store oraz App Store. David Layer-Reiss z Peppersoft, niemieckiej firmy zajmującej się rozwojem aplikacji mobilnych, który odkrył to zagrożenie, przeprowadził ciekawą analizę na swoim blogu.   

Aplikacja ta służy jako przynęta, mająca zwabić użytkowników Instagramu rzekomymi powiadomieniami o tym, kto oglądał ich profil; w rzeczywistości jednak wykorzystuje proces uwierzytelnienia w celu połączenia się z Instagramem.    

W rzeczywistości, wiele aplikacji wykorzystuje API lub protokoły uwierzytelniania, takie jak OAuth w celu uwierzytelnienia aplikacji osób trzecich. Jest to bardzo wygodne dla użytkowników, ponieważ mogą wykorzystywać te same dane uwierzytelniające w celu uwierzytelnienia korzystania z różnych aplikacji i usług.  

Problem polega tutaj na tym, że funkcja ta może zostać wykorzystana do szkodliwych celów, umożliwiając niektórym aplikacjom uzyskanie dostępu do informacji użytkownika, takich jak profil czy kontakty, lub kradzież ich danych uwierzytelniających.

Nie jest to pierwszy raz, gdy odnotowaliśmy taki przypadek. W zeszłym roku opublikowaliśmy posty na blogu opisujące, w jakim celu osoby atakujące wykorzystywały szkodliwe aplikacje lub kampanie za pośrednictwem poczty e-mail. W celu kradzieży danych uwierzytelniających użytkowników -  Stealing to the sound of music; lub uzyskania dostępu do informacji użytkownika Fraudsters can have rights, too; niekiedy wykorzystując popularne aplikacje jako przykrywkę Del phishing al acceso persistente (w języku hiszpańskim).    

Ten rodzaj strategii jest niezwykle skuteczny. W tym konkretnym przypadku sama tylko wersja aplikacji dla Androida została zainstalowana na ponad 100 000 urządzeń z ponad 20 000 recenzji, przy czym z większości z nich wynikało, że aby aplikacja działała poprawnie, należy zapłacić.  

instagram_pass_en_1_auto.jpg

instagram_pass_en_2.png
Podobnie jak w przypadku Google Play, również w sklepie App Store można znaleźć użytkowników, którzy narzekają na problemy po zainstalowaniu tej aplikacji.  

instagram_pass_en_3_auto.png

Ciekawe jest to, że aplikacja ta zdołała obejść kontrole bezpieczeństwa firmy Apple i została bez problemu opublikowana, chociaż kontrole stosowane w tym sklepie są bardziej restrykcyjne, nie wspominając już o tym, że twórca ten już wcześniej opublikował szkodliwą aplikację.

Wektor ataków

W ataku tym kod JavaScript zostaje zainstalowany w przycisku Wyślij na stronie logowania Instagramu, jak tylko zakończy się ładowanie tej strony.  

instagram_pass_en_4_auto.png

Kod ten pobiera zawartość pól wejściowych o nazwie “nazwa użytkownika” oraz „hasło” i przechowuje ją w lokalnej zmiennej o nazwie “str” o wzorze “<username>,-UPPA-,<password>”. Następnie, wywołuje funkcję “processHTML”, która przechowuje zebrane dane w zmiennej klasy.  

instagram_pass_en_5.png

Z urządzenia użytkownika pobierane są również inne informacje, które są wysyłane do centrum kontroli za pośrednictwem żądania POST.

instagram_pass_en_6_auto.png

Wartość parametru “hash” stanowią dane zamieszczone na obrazku powyżej jak również nazwa użytkownika i hasło na Instagramie. Wartość ta jest zaszyfrowana przy użyciu AES 128, a następnie zakodowana przy użyciu base64. Klucz szyfrowania jest generowany z ID generowanego przez serwer.   

instagram_pass_en_7.png

Wersja iOS wykorzystuje również AES 128, jednak trybem szyfru blokowego nie jest ECB, a CBC.  

instagram_pass_en_8_auto.png

W efekcie, jako wektor inicjowania (IV) wykorzystuje ciąg “IOS123SECRETKEYS”.

instagram_pass_en_9_auto.png

Po otwarciu zmusza użytkownika, aby zalogował się do Instagramu.

instagram_pass_en_10.png

Następnie nazwa użytkownika i hasło zostają przesłane do serwera wraz z niektórymi metadanymi.

instagram_pass_en_11_auto.png

Ponieważ posiadamy ID, możemy odszyfrować zawartość wykorzystując zmodyfikowaną wersję kodu Java opublikowaną przez Davida. Musimy jedynie zmodyfikować kod inicjowania klasy Crypto.    

instagram_pass_en_12_auto.png

Poprzez wprowadzenie zawartości parametru “hash” możemy odszyfrować wysłane dane i stwierdzić, które informacje zostały wysłane do serwera. Tak jak spodziewaliśmy się, na liście znajduje się również nazwa użytkownika i hasło do Instagramu.  

instagram_pass_en_13_auto.png

Nazwa użytkownika i hasło będą później wykorzystywane w celu opublikowania wiadomości spamowych na koncie użytkownika na Instagramie.  

Zagrożenia, o których mowa w tym poście, są wykrywane przez produkty firmy Kaspersky Lab jako HEUR:Trojan-Spy.AndroidOS.Instealy.a oraz HEUR:Trojan-Spy.IphoneOS.Instealy.a.

Zakończenie

Środowiska mobilne stanowią jedne z najatrakcyjniejszych celów dla cyberprzestępców; zwykle posiadają dostęp do kont e-mail, portali społecznościowych, kontaktów, a nawet odwiedzonych miejsc.

Wykorzystywanie portali społecznościowych to jeden z najlepszych sposobów dystrybucji szkodliwej zawartości. Użytkownicy muszą być świadomi nieznanych aplikacji, które obiecują coś, czego nie oferuje serwis, z którego korzystają. Zwykle, jeśli dana funkcja nie jest dostępna na stronie internetowej, trudno będzie zapewnić ją przez oprogramowanie osób trzecich.