Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Niedawno z Group-IB skontaktował się europejski producent sprzętu elektroinstalacyjnego – jego pracownik otrzymał pocztą podejrzany list ze złośliwym załącznikiem. Ilja Pomerancew, specjalista ds. analizy złośliwego oprogramowania w CERT Group-IB, przeprowadził szczegółową analizę tego pliku, odkrył znajdujące się w nim oprogramowanie szpiegowskie AgentTesla i powiedział, czego się spodziewać po takim złośliwym oprogramowaniu i jakie jest ono niebezpieczne.

Tym postem otwieramy serię artykułów o tym, jak analizować takie potencjalnie niebezpieczne pliki, a na najciekawszych czekamy 5 grudnia na bezpłatne interaktywne webinarium na ten temat „Analiza złośliwego oprogramowania: analiza rzeczywistych przypadków”. Wszystkie szczegóły znajdują się pod wycięciem.

Mechanizm dystrybucji

Wiemy, że złośliwe oprogramowanie dotarło do komputera ofiary za pośrednictwem wiadomości e-mail phishingowych. Adresatem listu był prawdopodobnie BCCed.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Analiza nagłówków wskazuje, że nadawca listu został oszukany. W rzeczywistości list pozostawiony vps56[.]oneworldhosting[.]com.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Załącznik do wiadomości e-mail zawiera archiwum WinRar qoute_jpeg56a.r15 ze złośliwym plikiem wykonywalnym QOUTE_JPEG56A.exe wewnątrz.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Ekosystem HPE

Zobaczmy teraz, jak wygląda ekosystem badanego szkodliwego oprogramowania. Poniższy schemat przedstawia jego budowę oraz kierunki współdziałania elementów.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Przyjrzyjmy się teraz bardziej szczegółowo każdemu komponentowi szkodliwego oprogramowania.

Ładowarka

Oryginalny plik QOUTE_JPEG56A.exe jest skompilowanym AutoIt v3 scenariusz.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Aby zaciemnić oryginalny skrypt, użyj zaciemniacza z podobnym PELock AutoIT-Obfuscator cechy.
Odciemnianie odbywa się w trzech etapach:

  1. Usuwanie zaciemnień Bo jeśli

    Pierwszym krokiem jest przywrócenie przepływu kontroli skryptu. Spłaszczanie przepływu sterowania to jeden z najpopularniejszych sposobów ochrony kodu binarnego aplikacji przed analizą. Mylące transformacje radykalnie zwiększają złożoność wyodrębniania i rozpoznawania algorytmów i struktur danych.

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  2. Odzyskiwanie wiersza

    Do szyfrowania ciągów używane są dwie funkcje:

    • gdorizabegkvfca – Wykonuje dekodowanie w stylu Base64

      Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

    • xgacyukcyzxz - prosty bajt-bajt XOR pierwszego ciągu z długością drugiego

      Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  3. Usuwanie zaciemnień BinaryToString и Wykonać

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Główny ładunek jest przechowywany w podzielonej formie w katalogu Czcionki sekcje zasobów pliku.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Kolejność klejenia jest następująca: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

Do odszyfrowania wyodrębnionych danych służy funkcja WinAPI KryptaOdszyfruj, a klucz sesji wygenerowany na podstawie wartości jest używany jako klucz fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Odszyfrowany plik wykonywalny jest wysyłany na wejście funkcji UruchomPE, który wykonuje Wstrzykiwanie procesu в RegAsm.exe za pomocą wbudowanego Kod powłoki (znany również jako Uruchom kod powłoki PE). Autorstwo należy do użytkownika hiszpańskiego forum niewykrywalne[.]net pod pseudonimem Wardow.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Warto również zauważyć, że w jednym z wątków tego forum zaciemniacz ds AutoIt o podobnych właściwościach zidentyfikowanych podczas analizy próbki.

Strona Kod powłoki dość prosty i przyciąga uwagę jedynie zapożyczony od grupy hakerów AnunakCarbanak. Funkcja mieszania wywołań API.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Znamy również przypadki użycia Francuski kod powłoki różne wersje.
Oprócz opisanej funkcjonalności zidentyfikowaliśmy także funkcje nieaktywne:

  • Blokowanie ręcznego zakończenia procesu w menedżerze zadań

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Ponowne uruchamianie procesu potomnego po jego zakończeniu

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Omiń UAC

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Zapisywanie ładunku do pliku

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Demonstracja okien modalnych

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Oczekiwanie na zmianę pozycji kursora myszy

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • AntiVM i AntiSandbox

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Samozniszczenie

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  • Pompowanie ładunku z sieci

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Wiemy, że taka funkcjonalność jest typowa dla ochraniacza CypherIT, który najwyraźniej jest omawianym programem ładującym.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Główny moduł oprogramowania

Następnie pokrótce opiszemy główny moduł szkodliwego oprogramowania i omówimy go bardziej szczegółowo w drugim artykule. W tym przypadku jest to aplikacja na .NET.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Podczas analizy odkryliśmy, że zastosowano zaciemniacz ConfuserEX.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

IELibrary.dll

Biblioteka jest przechowywana jako główny zasób modułu i jest dobrze znaną wtyczką do Agent Tesla, który zapewnia funkcjonalność wydobywania różnych informacji z przeglądarek Internet Explorer i Edge.

Agent Tesla to modułowe oprogramowanie szpiegowskie dystrybuowane w modelu złośliwego oprogramowania jako usługi pod przykrywką legalnego produktu rejestrującego naciśnięcia klawiszy. Agent Tesla potrafi wyodrębniać i przesyłać dane uwierzytelniające użytkowników z przeglądarek, klientów poczty e-mail i klientów FTP na serwer do atakujących, rejestrując dane w schowku i przechwytując ekran urządzenia. W momencie analizy oficjalna strona deweloperów była niedostępna.

Punktem wejścia jest funkcja Uzyskaj zapisane hasła klasa Internet Explorer.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1
Ogólnie rzecz biorąc, wykonanie kodu jest liniowe i nie zawiera żadnej ochrony przed analizą. Na uwagę zasługuje jedynie niezrealizowana funkcja Pobierz zapisane pliki cookie. Podobno funkcjonalność wtyczki miała zostać rozszerzona, jednak nigdy tego nie zrobiono.

Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

Dołączenie bootloadera do systemu

Przyjrzyjmy się, jak program ładujący jest podłączony do systemu. Badany okaz nie zakotwicza się, lecz w podobnych przypadkach zachodzi według następującego schematu:

  1. W folderze C:UżytkownicyPubliczni tworzony jest skrypt Visual Basic

    Przykład skryptu:

    Frekwencja nie powiodła się: wystawmy AgentaTeslę na działanie czystej wody. Część 1

  2. Zawartość pliku modułu ładującego jest uzupełniana znakiem null i zapisywana w folderze %Temp%<Nazwa folderu niestandardowego><Nazwa pliku>
  3. W rejestrze dla pliku skryptu tworzony jest klucz autorun HKCUSoftwareMicrosoftWindowsCurrentVersionRun<nazwa skryptu>

Zatem na podstawie wyników pierwszej części analizy udało nam się ustalić nazwy rodzin wszystkich składników badanego szkodliwego oprogramowania, przeanalizować schemat infekcji, a także uzyskać obiekty do pisania podpisów. Analizę tego obiektu będziemy kontynuować w kolejnym artykule, gdzie bardziej szczegółowo przyjrzymy się głównemu modułowi Agent Tesla. Nie przegap!

Przy okazji, 5 grudnia zapraszamy wszystkich czytelników na bezpłatny interaktywny webinar na temat „Analiza złośliwego oprogramowania: analiza rzeczywistych przypadków”, gdzie autor artykułu, specjalista CERT-GIB, pokaże online pierwszy etap analiza złośliwego oprogramowania - półautomatyczne rozpakowywanie próbek na przykładzie trzech prawdziwych mini-przypadków z praktyki, i możesz wziąć udział w analizie. Webinarium jest przeznaczone dla specjalistów, którzy mają już doświadczenie w analizie złośliwych plików. Rejestracja odbywa się wyłącznie z firmowego adresu e-mail: Zarejestruj się. Czekając na ciebie!

Yara

rule AgentTesla_clean{
meta:
    author = "Group-IB"
    file = "78566E3FC49C291CB117C3D955FA34B9A9F3EEFEFAE3DE3D0212432EB18D2EAD"
    scoring = 5
    family = "AgentTesla"
strings:
    $string_format_AT = {74 00 79 00 70 00 65 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 68 00 77 00 69 00 64 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 74 00 69 00 6D 00 65 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 63 00 6E 00 61 00 6D 00 65 00 3D 00 7B 00 33 00 7D 00 0D 00 0A 00 6C 00 6F 00 67 00 64 00 61 00 74 00 61 00 3D 00 7B 00 34 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 3D 00 7B 00 35 00 7D 00 0D 00 0A 00 69 00 70 00 61 00 64 00 64 00 3D 00 7B 00 36 00 7D 00 0D 00 0A 00 77 00 65 00 62 00 63 00 61 00 6D 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 37 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 38 00 7D 00 0D 00 0A 00 5B 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 73 00 5D 00}
    $web_panel_format_string = {63 00 6C 00 69 00 65 00 6E 00 74 00 5B 00 5D 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 6C 00 69 00 6E 00 6B 00 5B 00 5D 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 75 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 5B 00 5D 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 5B 00 5D 00 3D 00 7B 00 33 00 7D 00 00 15 55 00 52 00 4C 00 3A 00 20 00 20 00 20 00 20 00 20 00 20 00 00 15 55 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 3A 00 20 00 00 15 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 3A 00}
condition:
     all of them
}

rule  AgentTesla_obfuscated {
meta:
    author = "Group-IB"
    file = "41DC0D5459F25E2FDCF8797948A7B315D3CB075398D808D1772CACCC726AF6E9"
    scoring = 5
    family = "AgentTesla"
strings:
    $first_names = {61 66 6B 00 61 66 6D 00 61 66 6F 00 61 66 76 00 61 66 79 00 61 66 78 00 61 66 77 00 61 67 6A 00 61 67 6B 00 61 67 6C 00 61 67 70 00 61 67 72 00 61 67 73 00 61 67 75 00}
    $second_names = "IELibrary.resources"
condition:
     all of them
}

rule AgentTesla_module_for_IE{
meta:
    author = "Group-IB"
    file = "D55800A825792F55999ABDAD199DFA54F3184417215A298910F2C12CD9CC31EE"
    scoring = 5
    family = "AgentTesla_module_for_IE"
strings:
    $s0 = "ByteArrayToStructure" 
    $s1 = "CryptAcquireContext" 
    $s2 = "CryptCreateHash" 
    $s3 = "CryptDestroyHash" 
    $s4 = "CryptGetHashParam" 
    $s5 = "CryptHashData"
    $s6 = "CryptReleaseContext" 
    $s7 = "DecryptIePassword" 
    $s8 = "DoesURLMatchWithHash" 
    $s9 = "GetSavedCookies" 
    $s10 = "GetSavedPasswords" 
    $s11 = "GetURLHashString"  
condition:
     all of them
}

rule RunPE_shellcode {
meta:
    author = "Group-IB"
    file = "37A1961361073BEA6C6EACE6A8601F646C5B6ECD9D625E049AD02075BA996918"
    scoring = 5
    family = "RunPE_shellcode"
strings:
    $malcode = {
      C7 [2-5] EE 38 83 0C // mov     dword ptr [ebp-0A0h], 0C8338EEh
      C7 [2-5] 57 64 E1 01 // mov     dword ptr [ebp-9Ch], 1E16457h
      C7 [2-5] 18 E4 CA 08 // mov     dword ptr [ebp-98h], 8CAE418h
      C7 [2-5] E3 CA D8 03 // mov     dword ptr [ebp-94h], 3D8CAE3h
      C7 [2-5] 99 B0 48 06 // mov     dword ptr [ebp-90h], 648B099h
      C7 [2-5] 93 BA 94 03 // mov     dword ptr [ebp-8Ch], 394BA93h
      C7 [2-5] E4 C7 B9 04 // mov     dword ptr [ebp-88h], 4B9C7E4h
      C7 [2-5] E4 87 B8 04 // mov     dword ptr [ebp-84h], 4B887E4h
      C7 [2-5] A9 2D D7 01 // mov     dword ptr [ebp-80h], 1D72DA9h
      C7 [2-5] 05 D1 3D 0B // mov     dword ptr [ebp-7Ch], 0B3DD105h
      C7 [2-5] 44 27 23 0F // mov     dword ptr [ebp-78h], 0F232744h
      C7 [2-5] E8 6F 18 0D // mov     dword ptr [ebp-74h], 0D186FE8h
      }
condition:
    $malcode 
}

rule AgentTesla_AutoIT_module{
meta:
    author = "Group-IB"
    file = "49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08C05B5E3BD36FD52668D196AF"
    scoring = 5
    family = "AgentTesla"
strings:                                    
    $packedexeau = {55 ED F5 9F 92 03 04 44 7E 16 6D 1F 8C D7 38 E6 29 E4 C8 CF DA 2C C4 E1 F3 65 48 25 B8 93 9D 66 A4 AD 3C 39 50 00 B9 60 66 19 8D FC 20 0A A0 56 52 8B 9F 15 D7 62 30 0D 5C C3 24 FE F8 FC 39 08 DF 87 2A B2 1C E9 F7 06 A8 53 B2 69 C3 3C D4 5E D4 74 91 6E 9D 9A A0 96 FD DB 1F 5E 09 D7 0F 25 FB 46 4E 74 15 BB AB DB 17 EE E7 64 33 D6 79 02 E4 85 79 14 6B 59 F9 43 3C 81 68 A8 B5 32 BC E6}
condition:
     all of them
}

Hashes

Imię qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

Rodzaj Nieruchomości Archiwizuj WinRAR
Rozmiar 823014
Imię QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Rodzaj Nieruchomości PE (skompilowany skrypt AutoIt)
Rozmiar 1327616
Oryginalne imię Autor nieznany
Data stempla 15.07.2019
Linki Microsoft Linker (12.0) [EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Rodzaj Nieruchomości Kod powłoki
Rozmiar 1474

Źródło: www.habr.com

Dodaj komentarz