Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Badacze bezpieczeństwa z Koi po raz kolejny wykryli złośliwy pakiet w npm. Tym razem atakujący obrali za cel popularny komunikator WhatsApp. Malware ukryty jest w pakiecie lotusbail, stanowiącym fork biblioteki whiskeysockets/baileys, oferującym integrację z WhatsApp Web API.
TLDR:
Od razu uspokajamy, nie każdy jest zagrożony. Pakiet nie jest instalowany domyślnie na telefonie użytkownika. Jest stosowany głównie przez programistów podczas implementacji rozwiązań automatyzujących korzystanie z WhatsApp, a co za tym idzie jego środowiskiem docelowym są stacje deweloperskie oraz serwery.
Zgodnie ze statystykami dostępnymi na portalu npm-stat.com, pakiet w ciągu ostatniego pół roku został pobrany ponad 57 tys. razy.

Po integracji z WhatsApp, malware umożliwia atakującemu uzyskanie dostępu do kontaktów, rozmów, plików multimedialnych, danych uwierzytelniających oraz pełnej aktywności konta użytkownika. Do momentu usunięcia pakietu (o ile atakujący nie zapewnili sobie mechanizmu persystencji), wszystkie treści wymieniane z użytkownikiem mogą być przechwytywane i wysyłane na zewnętrzny serwer.

Podczas analizy kodów źródłowych pakietu, uwagę badaczy przykuł niestandardowy wrapper zaimplementowany wokół klienta WebSocket WhatsApp. To właśnie przez niego przechodzi cały ruch wymieniany między użytkownikiem a serwerami WhatsApp. W ten sposób atakujący uczestniczyli w komunikacji, a co za tym idzie uzyskiwali dostęp do danych uwierzytelniających użytkownika oraz treści przesyłanych w ramach sesji.

Jak łatwo zauważyć, wszelkie informacje wymieniane z użytkownikiem zostają skopiowane i wysłane na serwer kontrolowany przez atakującego. Dane nie są jednak przesyłane w postaci jawnej. Atakujący zaimplementowali szereg mechanizmów utrudniających detekcję oraz analizę złośliwego ruchu.

Pierwszym mechanizmem jest algorytm asymetryczny RSA. To właśnie dzięki niemu dane zostają zaszyfrowane za pomocą klucza publicznego atakującego. W niektórych wariantach implementacji można było się również spotkać z dodatkową warstwą szyfrowania symetrycznego, wykorzystującego algorytm AES. Tak zabezpieczone dane są następnie przekazywane do funkcji odpowiedzialnej za ich wysłanie na serwer kontrolowany przez atakującego.
Dane konfiguracyjne serwera C2 zostały ukryte za pomocą technik obfuskacji oraz szyfrowania. Następnie tak zabezpieczony ciąg został zapisany na stałe w kodzie pakietu. Atakujący wykorzystali przekształcenia Unicode, kompresję LZString, kodowanie Base91 oraz szyfrowanie algorytmem AES, zgodnie z poniższym schematem:
AES(Base91(LZString(Unicode(URL)))).
Takie podejście utrudnia statyczną analizę kodu, a co za tym idzie identyfikacja infrastruktury atakującego stanowi wyzwanie.
Klucz deszyfrujący został najprawdopodobniej ukryty wewnątrz pakietu, chociaż nie zostało to dokładnie sprecyzowane przez badaczy. Co więcej, po odszyfrowaniu adresu serwera, malware nie zapisuje żadnych danych lokalnie na dysku. Wszystkie operacje są wykonywane w pamięci RAM.
W celu zapewnienia stałej obecności w infrastrukturze użytkownika, malware korzysta z funkcjonalności WhatsApp, obejmujące parowanie oraz obsługę wielu urządzeń, powiązanych z jednym kontem. W ten sposób, nawet po usunięciu złośliwego pakietu, atakujący zachowuje możliwość przechwytywania treści wymienianych przez użytkownika.

Mechanizm jest stosunkowo prosty. Malware zawiera zahardkodowany kod odpowiedzialny za parowanie urządzenia, który jest aktywowany w momencie usuwania pakietu i działa tylko podczas aktywnej sesji. W efekcie, atakujący posiada dostęp do konta użytkownika, nawet po deinstalacji pakietu.
Ponadto, zmiana ta nie jest wprowadzona na urządzeniu końcowym użytkownika, tylko bezpośrednio na serwerze WhatsApp. W celu trwałego wyeliminowania atakującego, użytkownik musi usunąć urządzenie cyberprzestępcy z listy podłączonych urządzeń w ustawieniach aplikacji.
Wykorzystanie złośliwych pakietów npm do infekcji infrastruktury użytkownika staje się coraz bardziej popularnym wektorem ataku. Z uwagi na zastosowanie szeregu mechanizmów obfuskacji oraz szyfrowania, analiza statyczna kodu okazuje się niewystarczająca. Dopiero analiza dynamiczna, pozwala na wykrycie potencjalnie złośliwego zachowania.
Przykład ataku na użytkowników WhatsApp jasno pokazuje, że nawet publicznie dostępne biblioteki open-source, charakteryzujące się wysokim wskaźnikiem pobrań, mogą stać się wektorem poważnych ataków. Nie istnieje uniwersalna strategia obrony, całkowicie eliminująca zagrożenie. Należy zatem każdorazowo monitorować zachowanie aplikacji, zwłaszcza po instalacji dodatkowego pakietu, a w przypadku wykrycia podejrzanych zachowań, dogłębnie zweryfikować źródło anomalii.
Źródło: koi.ai
~_secmike