niedziela, 8 marca 2015

EuroAPT

Nie tak dawno opisywaliśmy atak na klientów polskich banków. Tym razem opiszemy atak na pracowników instytucji rządowych.

Złośliwe oprogramowanie zostało umieszczone na kilka godzin na stronie organizacji powiązanej z Unią Europejską (www.EuropeanIssuers.eu). Do odbiorców został rozesłany email z linkiem do dokumentu Invitation1541.pdf. Intruzi podszyli się pod adres w domenie @europarl.europa.eu.

Z w/w strony do pobrania było archiwum 1541.zip zawierające plik wykonywalny exe. Plik exe zawierał dwa kolejne pliki: 1541.pdf oraz reader_sl.exe. Plik pdf wyświetlany jest na ekranie a w tle instalowane jest docelowe złośliwe oprogramowanie.
  • amd_opencl32.dll
  • amdhwdecoder_32.dll
  • atiglpxx.dll
  • amdocl_as32.exe
  • racss.dat
Pliki wykonywalne podpisane są niezaufanym certyfikatem:


Gdy konto w systemie z którego uruchamiany jest reader_sl.exe ma uprawnienia administracyjne (weryfikacja za pomocą funkcji AllocateAndInitializeSid(), CheckTokenMembership(), FreeSid()) to dodawane są wpisy do:
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Gdy konto jest "zwykłym" użytkownikiem to wpis dodawany jest do:
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Do klucza rejestru Run dodawana jest jedna z nazw: ativvsvl_Addon/ativvaxy_cik_nd_Addon/atikmdag_Addon. Wartość dla Windows 7 to „C:\Users\<username>\AppData\Roaming\ATI\amdocl_as32.exe C:\Users\<username>\AppData\Roaming\ATI\amdhwdecoder_32.dll, ADL2_DFP_HDMISupport_Get”

Amdocl_as32.exe to plik systemowy rundll32.exe. ADL2_DFP_HDMISupport_Get to funkcja eksportowana przez bibliotekę amdhwdecoder_32.dll.

Do serwera C&C przesyłany jest raport dotyczący instalacji. Fragment odszyfrowanej zawartości poniżej:


Plik racss.dat jest zaszyfrowanym plikiem konfiguracyjnym (w formacie XML). Jest tam między innymi adres serwera C&C, hasła do szyfrowania danych, hasło dostępu do serwera czy informacje o statusie ostatnich zadań odebranych z serwera.


Plik szyfrowany i odszyfrowywany jest za pomocą API CryptDecrypt() i CryptEncrypt() z ADVAPI32.dll.

Większość wywoływanych API, nazw bibliotek, nazwy rejestrów czy nawet parametry przesyłane do serwera są przez malware odkodowywana przed użyciem. Fragment funkcji odkodowującej API i nazwy parametrów z pliku konfiguracyjnego:

seg000:0000A5E3 loc_A5E3:                               ; CODE XREF: sub_A5D0+33
seg000:0000A5E3                 mov     esi, [ecx]
seg000:0000A5E5                 movsx   esi, byte ptr [esi+eax]
seg000:0000A5E9                 movzx   edi, byte ptr [ecx+8]
seg000:0000A5ED                 xor     si, di
seg000:0000A5F0                 xor     si, ax
seg000:0000A5F3                 mov     edi, 0FFh
seg000:0000A5F8                 and     si, di
seg000:0000A5FB                 mov     [edx+eax*2], si
seg000:0000A5FF                 inc     eax
seg000:0000A600                 cmp     eax, [ecx+4]
seg000:0000A603                 jb      short loc_A5E3
seg000:0000A605                 pop     edi
seg000:0000A606                 pop     esi


Fragment funkcji wykorzystującej różne klucze dla operacji XOR:


Malware korzysta z WMI aby sprawdzić zainstalowane aplikacje na zainfekowanej stacji roboczej:
  • SELECT * FROM AntiVirusProduct
  • SELECT * FROM FireWallProduct
Lista sprawdzanych produktów:
  • Bitdefender
  • SOPHOS
  • Dr. Web
  • KASPERSKY CRYSTAL
  • AVG
Funkcja kodująca dane, które przesyłane są do serwera bazuje na przesunięciu poszczególnych znaków z tablicy A…Za…z0…9+/AB. arg_4 w zależności od przesyłanego parametru jest inny.


Poniżej wysyłane do serwera zapytanie (komunikacja jest dodatkowo szyfrowana za pomocą SSL):


Dla przykładu wartość parametru as_rq to zakodowana powyższym algorytmem ciąg znaków: version150212=ranoekjx1wyxy
Lista odszyfrowanych parametrów: aff_id, as_dt, as_epq, as_eq, as_ft, as_lq, as_occt, as_oq, as_q, as_qdr, as_rq, curid, direct, file, filter, from, mode, name, oldid, option, page, page_id, popup, print, safe, search, sess_id, site, thread, title, topic, type, uselang, user, userid, variant, window.

Przykład zwracanej odpowiedzi. Wartość z komentarza (rodzaj ID sesji) jest używana do przygotowania i zakodowana kolejnego zapytania do serwera C&C.


Malware ma możliwość pobierania i uruchamiana funkcji zaimplementowanych w zewnętrznych modułach. Jeden z modułów tworzy zrzut ekranu i wynik przesyła do serwera. Moduł po wykonaniu zadania jest kasowany z zainfekowanego komputera. Fragment kodu modułu Reg_ativvsvl_Subsystem_.max odpowiedzialnego za wykonanie zrzutu ekranu na zainfekowanym komputerze.

Status wykonanych zadań również zapisywany jest w pliku konfiguracyjnym:


Lista funkcji skrótu MD5:

File:     1541.exe
MD5:      5EABC9C54B73FFFB5F3FDDB37A653D7B

File:     1541.pdf
MD5:      93176DF76E351B3EA829E0E6C6832BDF

File:     reader_sl.exe
MD5:      43C012086C1AE0A67C38B0926D6CBA3F

File:     amd_opencl32.dll
MD5:      4DF44CE045D2F4572B3B68B1EF0F9151

File:     amdhwdecoder_32.dll
MD5:      029568AE421E50EC62C4FA24535E0455

File:     amdocl_as32.exe (rundll32.exe)
MD5:      51138BEEA3E2C21EC44D0932C71762A8

File:     atiglpxx.dll
MD5:      D2D6093F0BD1FFDBC01EA7F1390A84B3

File:     Reg_ativvsvl_Subsystem_.max
MD5:      E0B6F0D368C81A0FB197774D0072F759




Brak komentarzy:

Publikowanie komentarza