Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
WhatsApp na celowniku cyberprzestępców: złośliwy pakiet npm lotusbail umożliwia atakującemu trwały dostęp do konta użytkownika
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:
- Zagrożeni są głównie programiści, wykorzystujący narzędzie do prac deweloperskich oraz użytkownicy używający ich produktów.
- Badacze z Koi Security wykryli złośliwy pakiet lotusbail, stanowiący fork popularnej biblioteki whiskeysockets/baileys.
- Pakiet umożliwia integrację z WhatsApp Web API i jest używany w systemach automatyzujących korzystanie z WhatsApp.
- Malware umożliwia atakującemu przejęcie pełnej kontroli nad kontem użytkownika (czytanie wiadomości, przechwytywanie danych uwierzytelniających, itp.).
- W celu zapewnienia persystencji korzysta z funkcjonalności WhatsApp obejmującej parowanie urządzeń.
- Biblioteka nie jest domyślnie instalowana na urządzeniu końcowym użytkownika.
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.

Schemat działania malware
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.
Persystencja
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
