Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Nedávno kontaktoval Group-IB európsky výrobca elektroinštalačných zariadení – jeho zamestnancovi prišiel poštou podozrivý list so škodlivou prílohou. Iľja Pomerantsev, špecialista na analýzu malvéru v CERT Group-IB, vykonal podrobnú analýzu tohto súboru, objavil tam spyware AgentTesla a povedal, čo možno od takéhoto malvéru očakávať a ako je nebezpečný.

Týmto príspevkom otvárame sériu článkov o tom, ako analyzovať takéto potenciálne nebezpečné súbory, a tých najzvedavejších čakáme 5. decembra na bezplatný interaktívny webinár na túto tému „Analýza škodlivého softvéru: Analýza skutočných prípadov“. Všetky detaily sú pod strihom.

Distribučný mechanizmus

Vieme, že malvér sa dostal do počítača obete prostredníctvom phishingových e-mailov. Príjemca listu bol pravdepodobne BCCed.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Analýza hlavičiek ukazuje, že odosielateľ listu bol sfalšovaný. V skutočnosti list odišiel s vps56[.]oneworldhosting[.]com.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Príloha e-mailu obsahuje archív WinRar qoute_jpeg56a.r15 so škodlivým spustiteľným súborom QOUTE_JPEG56A.exe vo vnútri.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Ekosystém škodlivého softvéru

Teraz sa pozrime, ako vyzerá ekosystém skúmaného malvéru. Nižšie uvedený diagram ukazuje jeho štruktúru a smery interakcie komponentov.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Teraz sa pozrime na jednotlivé komponenty škodlivého softvéru podrobnejšie.

Nakladač

Pôvodný súbor QOUTE_JPEG56A.exe je zostavený AutoIt v3 skript.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Na zahmlievanie pôvodného scenára, obfuskátor s podobným PELock AutoIT-Obfuscator vlastnosti.
Deobfuskácia prebieha v troch fázach:

  1. Odstránenie zahmlenia Pre-Ak

    Prvým krokom je obnovenie toku kontroly skriptu. Control Flow Flattening je jedným z najbežnejších spôsobov ochrany binárneho kódu aplikácie pred analýzou. Zmätené transformácie dramaticky zvyšujú zložitosť extrakcie a rozpoznávania algoritmov a dátových štruktúr.

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  2. Obnova riadkov

    Na šifrovanie reťazcov sa používajú dve funkcie:

    • gdorizabegkvfca - Vykonáva dekódovanie podobné Base64

      Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

    • xgacyukcyzxz - jednoduchý bajtový XOR prvého reťazca s dĺžkou druhého

      Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  3. Odstránenie zahmlenia BinaryToString и Vykonať

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Hlavná záťaž je uložená v rozdelenej forme v adresári fonty zdrojových sekcií súboru.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Poradie lepenia je nasledovné: TIEQHCXWFG, EMI, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

Na dešifrovanie extrahovaných údajov sa používa funkcia WinAPI CryptDecrypta kľúč relácie vygenerovaný na základe hodnoty sa použije ako kľúč fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Dešifrovaný spustiteľný súbor sa odošle na vstup funkcie RunPE, ktorá vykonáva ProcessInject в RegAsm.exe pomocou vstavaného ShellCode (taktiež známy ako RunPE ShellCode). Autorstvo patrí užívateľovi španielskeho fóra nezistiteľné[.]net pod prezývkou Wardow.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Za zmienku tiež stojí, že v jednom z vlákien tohto fóra je obfuskátor pre Na streche s podobnými vlastnosťami identifikovanými počas analýzy vzorky.

sám ShellCode celkom jednoduché a priťahuje pozornosť len požičané od hackerskej skupiny AnunakCarbanak. Funkcia hashovania volania API.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Poznáme aj prípady použitia Francúzsky Shellcode rôzne verzie.
Okrem opísanej funkcionality sme identifikovali aj neaktívne funkcie:

  • Blokovanie manuálneho ukončenia procesu v správcovi úloh

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Reštartovanie podriadeného procesu, keď sa skončí

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Obísť UAC

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Uloženie užitočného zaťaženia do súboru

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Ukážka modálnych okien

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Čaká sa na zmenu polohy kurzora myši

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • AntiVM a AntiSandbox

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Sebazničenie

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  • Čerpanie užitočného zaťaženia zo siete

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Vieme, že takáto funkčnosť je pre chránič typická CypherIT, čo je zrejme daný bootloader.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Hlavný modul softvéru

Ďalej stručne popíšeme hlavný modul škodlivého softvéru a podrobnejšie ho zvážime v druhom článku. V tomto prípade ide o aplikáciu na . NET.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Počas analýzy sme zistili, že bol použitý obfuskátor ConfuserEX.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

IELibrary.dll

Knižnica je uložená ako zdroj hlavného modulu a je známym doplnkom Agent Tesla, ktorá poskytuje funkcie na extrahovanie rôznych informácií z prehliadačov Internet Explorer a Edge.

Agent Tesla je modulárny špionážny softvér distribuovaný pomocou modelu malware-as-a-service pod zámienkou legitímneho keyloggeru. Agent Tesla je schopný extrahovať a prenášať používateľské poverenia z prehliadačov, e-mailových klientov a FTP klientov na server útočníkom, zaznamenávať údaje zo schránky a zachytávať obrazovku zariadenia. V čase analýzy bola oficiálna stránka vývojárov nedostupná.

Vstupným bodom je funkcia GetSavedPasswords triedy InternetExplorer.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1
Vo všeobecnosti je vykonávanie kódu lineárne a neobsahuje žiadnu ochranu proti analýze. Pozornosť si zaslúži len nerealizovaná funkcia GetSavedCookies. Funkčnosť pluginu mala byť podľa všetkého rozšírená, no nikdy sa tak nestalo.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

Pripojenie zavádzača k systému

Poďme študovať, ako je bootloader pripojený k systému. Skúmaný exemplár sa neukotví, ale pri podobných udalostiach sa vyskytuje podľa nasledujúcej schémy:

  1. V priečinku C:UsersPublic skript je vytvorený Visual Basic

    Príklad skriptu:

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 1

  2. Obsah zavádzacieho súboru je vyplnený nulovým znakom a uložený do priečinka %Temp%
  3. Pre súbor skriptu sa v registri vytvorí kľúč automatického spustenia HKCUSoftwareMicrosoftWindowsCurrentVersionRun

Na základe výsledkov prvej časti analýzy sme teda dokázali určiť názvy rodín všetkých komponentov skúmaného malvéru, analyzovať vzor infekcie a tiež získať objekty na písanie podpisov. V rozbore tohto objektu budeme pokračovať v ďalšom článku, kde sa na hlavný modul pozrieme podrobnejšie Agent Tesla. Nenechajte si ujsť!

Mimochodom, 5. decembra pozývame všetkých čitateľov na bezplatný interaktívny webinár na tému „Analýza malvéru: analýza reálnych prípadov“, kde autor tohto článku, špecialista CERT-GIB, online ukáže prvú fázu analýza malvéru - poloautomatické rozbalenie vzoriek na príklade troch reálnych miniprípadov z praxe a vy sa môžete zúčastniť analýzy. Webinár je vhodný pre špecialistov, ktorí už majú skúsenosti s analýzou škodlivých súborov. Registrácia prebieha výlučne z firemného e-mailu: registrovať. Čakám na teba!

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
}

Maškrty

Meno qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

Typ Archív WinRAR
Veľkosť 823014
Meno QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Typ PE (kompilovaný skript AutoIt)
Veľkosť 1327616
Pôvodný názov Neznáma
Dátumová pečiatka 15.07.2019
Odkazy Microsoft Linker(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Typ ShellCode
Veľkosť 1474

Zdroj: hab.com

Pridať komentár