czwartek, 18 września 2014

Bankowość internetowa: skuteczna podmiana numerów rachunków



Tym razem krótka analiza ciekawego przepadku malware nakierowanego na bankowość internetową. Malware jest w prosty sposób napisany, jednak niezwykle skuteczny zarówno z punktu widzenia ochrony przed systemami AV jak i jako narzędzie do kradzieży środków z kont internetowych.
Pod koniec sierpnia odnotowano pierwsze ataki. Obecnie znaczna część serwerów jest zablokowania.

Na komputerze ofiary znajdują się dwa pliki związane ze złośliwym oprogramowaniem:

C:\ProgramData\wmc.exe
C:\ProgramData\.windows.sys

File: wmc.exe
Size: 30776
MD5:  39A1FCB7C53F5A43CB09685492B84E6A

Plik exe uruchamiany jest jako zadanie o nazwie SYSTEM:


Program wmc.exe wczytuje plik .windows.sys i go odkodowuje.
Kod wczytujący plik:

.text:004013DF call    SHGetFolderPathW
.text:004013E4 sub     esp, 14h
.text:004013E7 mov     [esp+458h+var_454], offset a_windows_sys ; ".windows.sys"
.text:004013EF mov     [esp+458h+var_458], esi
.text:004013F2 call    ds:PathAppendW
.text:004013F8 push    eax                             ; lpFilename
.text:004013F9 push    eax                             ; hModule
.text:004013FA mov     [esp+458h+var_454], offset aR   ; "r"
.text:00401402 mov     [esp+458h+var_458], esi
.text:00401405 call    _wfopen
.text:0040140A test    eax, eax
.text:0040140C mov     edi, eax
.text:0040140E jz      loc_40171E
.text:00401414 mov     [esp+458h+var_450], 2
.text:0040141C mov     [esp+458h+var_454], 0
.text:00401424 mov     [esp+458h+var_458], eax
.text:00401427 call    fseek
.text:0040142C mov     [esp+458h+var_458], edi
.text:0040142F call    ftell


Pełna ścieżka do pliku .windows.sys:


W programie wmc.exe jest krótka pętla i jeśli pliku sys nie ma to exe ponowna próbę otwarcia pliku sys:

.text:00402BAF mov     [esp+14h+var_14], 2710h
.text:00402BB6 call    Sleep
.text:00402BBB push    edx
.text:00402BBC call    sub_4013AA
.text:00402BC1 jmp     short loc_402BAF

Przez to że plik jest zaszyfrowany a klucz jest za każdym razem inny, identyfikacja po zawartości czy wartości hash nie ma sensu.

Szyfrowanie/odszyfrowywanie zrealizowane za pomocą xor:

.text:004014C4 cmp     eax, [ebp+var_440]
.text:004014CA lea     edx, [eax+ecx]
.text:004014CD jz      short loc_4014D5
.text:004014CF xor     [ebx+eax*4], edx
.text:004014D2 inc     eax
.text:004014D3 jmp     short loc_4014C4

Kluczem dla XOR są pierwsze 4 bajty w pliku .windows.sys:



Fragment odszyfrowanego pliku:



Można zauważyć, że właściwy plik jest jeszcze spakowany UPX:




Plik spakowany UPX to biblioteka. Główna funkcja wywoływana przez malware to init. Możemy tak odpakowany plik uruchamiać ręcznie: rundll32.exe naszadll.dll,init

Program działa w pętli i co minutę się aktywuje:

.text:66501265 mov     [esp+0C08h+var_C08], 0EA60h
.text:6650126C call    Sleep
.text:66501271 lea     eax, [ebx+1]
.text:66501274 mov     [ebp+var_BE0], eax
.text:6650127A push    esi                             ; af
.text:6650127B mov     [esp+0C08h+var_C08], ebx
.text:6650127E call    sub_66508D00

Najpierw malware próbuję się połączyć do jednej z 10 domen:

.text:66508D08 mov     eax, [ebp+arg_0]
.text:66508D0B cdq
.text:66508D0C idiv    ecx
.text:66508D0E cmp     edx, 9                          ; switch 10 cases
.text:66508D11 ja      short loc_66508D6B              ; jumptable 66508D13 default case
.text:66508D13 jmp     ds:off_6650A0B0[edx*4]          ; switch jump


Lista hostów wkompilowana w bibliotekę:

.rdata:6650A024 00000010 C block***.in
.rdata:6650A034 0000000E C monkey***.com 
.rdata:6650A042 0000000D C monkey***.in  
.rdata:6650A04F 0000000E C monkey***.cc 
.rdata:6650A05D 0000000F C monkey***.biz
.rdata:6650A06C 0000000E C monkey***.tk 
.rdata:6650A07A 0000000B C titanic***.*z    
.rdata:6650A085 0000000D C titanic***.nl  
.rdata:6650A092 0000000E C titanic***.eu 
.rdata:6650A0A0 0000000E C akanar***.co.nz 

Malware komunikacje szyfruje. Najpierw wysyła nazwę komputera oraz nazwę zalogowanego użytkownika.

Połączenia realizowane są na port 80 poprzez wywołanie funkcji socket(). Nie jest wykorzystywane proxy. Numery rachunków pobierane są z w/w serwerów

Następnie w przestrzeni adresowej jednej z 4 przeglądarek internetowych:
  • chrome.exe
  • iexplorer.exe
  • firefox.exe
  • opera.exe

przeszukiwania jest pamięć i podmieniane numery rachunków.

Efekt jaki widzi użytkownik, to np. podmienione wszystkie numery rachunków na stronie w przeglądarce internetowej. Malware zamienia numery gdy jest ich 26.

Źródła: