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: