La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
Recentment, un fabricant europeu d'equips d'instal·lació elèctrica es va posar en contacte amb Group-IB: el seu empleat va rebre per correu una carta sospitosa amb un fitxer adjunt maliciós. Ilya Pomerantsev, un especialista en anàlisi de programari maliciós del CERT Group-IB, va realitzar una anàlisi detallada d'aquest fitxer, va descobrir el programari espia d'AgentTesla i va dir què esperar d'aquest programari maliciós i com és perillós.

Amb aquesta entrada obrim una sèrie d'articles sobre com analitzar aquests fitxers potencialment perillosos, i esperem als més curiosos el 5 de desembre per a un webinar interactiu gratuït sobre el tema "Anàlisi de programari maliciós: anàlisi de casos reals". Tots els detalls estan sota el tall.

Mecanisme de distribució

Sabem que el programari maliciós va arribar a la màquina de la víctima mitjançant correus electrònics de pesca. El destinatari de la carta probablement era BCCed.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
L'anàlisi de les capçaleres mostra que el remitent de la carta va ser falsificat. De fet, la carta va deixar amb vps56[.]oneworldhosting[.]com.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
El fitxer adjunt del correu electrònic conté un arxiu WinRar qoute_jpeg56a.r15 amb un fitxer executable maliciós QOUTE_JPEG56A.exe dins.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

Ecosistema HPE

Vegem ara com és l'ecosistema del programari maliciós que s'estudia. El diagrama següent mostra la seva estructura i les direccions d'interacció dels components.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
Ara mirem cada un dels components de programari maliciós amb més detall.

Carregador

Fitxa original QOUTE_JPEG56A.exe és un compilat AutoIt v3 guió.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
Per ofuscar el guió original, un ofuscador amb similar PeLock AutoIT-Ofuscator característiques.
La desofuscació es realitza en tres etapes:

  1. Eliminació de l'ofuscament Per-Si

    El primer pas és restaurar el flux de control de l'script. L'aplanament del flux de control és una de les maneres més habituals de protegir el codi binari de l'aplicació de l'anàlisi. Les transformacions confuses augmenten dràsticament la complexitat d'extraure i reconèixer algorismes i estructures de dades.

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  2. Recuperació de fila

    S'utilitzen dues funcions per xifrar cadenes:

    • gdorizabegkvfca - Realitza una descodificació semblant a Base64

      La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

    • xgacyukcyzxz - XOR simple de byte-byte de la primera cadena amb la longitud de la segona

      La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  3. Eliminació de l'ofuscament BinaryToString и Executar

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

La càrrega principal s'emmagatzema en forma dividida al directori Fonts seccions de recursos del fitxer.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
L'ordre d'enganxament és el següent: TIEQHCXWFG, EMI, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

La funció WinAPI s'utilitza per desxifrar les dades extretes CryptDecrypt, i la clau de sessió generada en funció del valor s'utilitza com a clau fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

El fitxer executable desxifrat s'envia a l'entrada de la funció RunPE, que duu a terme ProcessInject в RegAsm.exe utilitzant incorporat ShellCode (també conegut com RunPE ShellCode). L'autoria pertany a l'usuari del fòrum espanyol indetectables[.]net sota el sobrenom de Wardow.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
També val la pena assenyalar que en un dels fils d'aquest fòrum, un ofuscador per Al terrat amb propietats similars identificades durant l'anàlisi de la mostra.

Ell mateix ShellCode bastant senzill i crida l'atenció només manllevat del grup de pirates informàtics AnunakCarbanak. Funció hash de trucades de l'API.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

També som conscients dels casos d'ús Frenchy Shellcode diferents versions.
A més de la funcionalitat descrita, també hem identificat funcions inactives:

  • Bloqueig de la finalització manual del procés al gestor de tasques

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • Reiniciar un procés fill quan finalitzi

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • Evita la UAC

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • Desar la càrrega útil en un fitxer

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • Demostració de finestres modals

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • S'està esperant que la posició del cursor del ratolí canviï

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • AntiVM i AntiSandbox

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • autodestrucció

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  • Bombeig de càrrega útil des de la xarxa

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

Sabem que aquesta funcionalitat és típica per al protector CypherIT, que, aparentment, és el carregador d'arrencada en qüestió.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

Mòdul principal del programari

A continuació, descriurem breument el mòdul principal del programari maliciós i el considerarem amb més detall al segon article. En aquest cas, es tracta d'una aplicació activada . NET.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
Durant l'anàlisi, vam descobrir que s'utilitzava un ofuscador ConfuserEX.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

IELibrary.dll

La biblioteca s'emmagatzema com a recurs del mòdul principal i és un complement conegut per Agent Tesla, que proporciona funcionalitat per extreure informació diversa dels navegadors Internet Explorer i Edge.

L'Agent Tesla és un programari d'espionatge modular distribuït mitjançant un model de programari maliciós com a servei sota l'aparença d'un producte de registre de tecles legítim. L'agent Tesla és capaç d'extreure i transmetre les credencials d'usuari des de navegadors, clients de correu electrònic i clients FTP al servidor als atacants, registrar dades del porta-retalls i capturar la pantalla del dispositiu. En el moment de l'anàlisi, el lloc web oficial dels desenvolupadors no estava disponible.

El punt d'entrada és la funció GetSavePasswords classe InternetExplorer.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1
En general, l'execució del codi és lineal i no conté cap protecció contra l'anàlisi. Només la funció no realitzada mereix atenció GetSavedCookies. Aparentment, s'havia d'ampliar la funcionalitat del connector, però això no es va fer mai.

La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

Adjuntant el carregador d'arrencada al sistema

Estudiem com està connectat el carregador d'arrencada al sistema. L'exemplar en estudi no s'ancora, però en esdeveniments similars es produeix segons l'esquema següent:

  1. A la carpeta C: Usuaris Públic es crea l'script Visual Basic

    Exemple de guió:

    La participació ha fallat: exposem l'AgentTesla a aigua neta. Part 1

  2. El contingut del fitxer del carregador s'emplena amb un caràcter nul i es desa a la carpeta %Temp%
  3. Es crea una clau d'execució automàtica al registre per al fitxer d'script HKCUSoftwareMicrosoftWindowsCurrentVersionRun

Així, a partir dels resultats de la primera part de l'anàlisi, hem pogut establir els noms de les famílies de tots els components del programari maliciós objecte d'estudi, analitzar el patró d'infecció i també obtenir objectes per escriure signatures. Continuarem l'anàlisi d'aquest objecte en el següent article, on veurem el mòdul principal amb més detall Agent Tesla. No et perdis!

Per cert, el 5 de desembre convidem a tots els lectors a un webinar interactiu gratuït sobre el tema “Anàlisi de malware: anàlisi de casos reals”, on l'autor d'aquest article, especialista en CERT-GIB, mostrarà en línia la primera etapa de Anàlisi de programari maliciós: desembalatge semiautomàtic de mostres utilitzant l'exemple de tres minicasos reals de la pràctica, i podeu participar en l'anàlisi. El seminari web és adequat per a especialistes que ja tenen experiència en l'anàlisi de fitxers maliciosos. El registre és estrictament des del correu electrònic corporatiu: registrar-se. Esperant-te!

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
}

Hash

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

890E643316E9276156EDC8A

Tipus Arxiu WinRAR
mida 823014
Nom QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Tipus PE (script d'AutoIt compilat)
mida 1327616
Nom original Desconegut
Segell de data 15.07.2019
linker Microsoft Linker (12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Tipus ShellCode
mida 1474

Font: www.habr.com

Afegeix comentari