Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Recentemente, un produttore europeo di apparecchiature per installazioni elettriche ha contattato Group-IB: il suo dipendente ha ricevuto una lettera sospetta con un allegato dannoso. Ilya Pomerantsev, uno specialista di analisi malware presso CERT Group-IB, ha condotto un'analisi dettagliata di questo file, ha scoperto lo spyware AgentTesla e ha spiegato cosa aspettarsi da tale malware e quanto sia pericoloso.

Con questo post apriamo una serie di articoli su come analizzare file così potenzialmente pericolosi, e aspettiamo i più curiosi il 5 dicembre per un webinar interattivo gratuito sull'argomento “Analisi del malware: analisi di casi reali”. Tutti i dettagli sono sotto il taglio.

Meccanismo di distribuzione

Sappiamo che il malware è arrivato al computer della vittima tramite e-mail di phishing. Il destinatario della lettera probabilmente era BCCed.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
L'analisi delle intestazioni mostra che il mittente della lettera è stato falsificato. In effetti, la lettera è partita con vps56[.]oneworldhosting[.]com.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
L'allegato e-mail contiene un archivio WinRar qoute_jpeg56a.r15 con un file eseguibile dannoso QOUTE_JPEG56A.exe dentro.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Ecosistema malware

Vediamo ora come si presenta l'ecosistema del malware in studio. Lo schema seguente ne mostra la struttura e le direzioni di interazione dei componenti.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Ora esaminiamo ciascuno dei componenti del malware in modo più dettagliato.

Caricatore

Fascicolo originale QOUTE_JPEG56A.exe è un compilato AutoIt v3 sceneggiatura.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Per offuscare la sceneggiatura originale, un offuscatore con similar PELock AutoIT-Obfuscatore Caratteristiche.
Il deoffuscamento viene effettuato in tre fasi:

  1. Rimozione dell'offuscamento Per se

    Il primo passaggio consiste nel ripristinare il flusso di controllo dello script. L'appiattimento del flusso di controllo è uno dei modi più comuni per proteggere il codice binario dell'applicazione dall'analisi. Trasformazioni confuse aumentano notevolmente la complessità dell'estrazione e del riconoscimento di algoritmi e strutture di dati.

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  2. Recupero fila

    Per crittografare le stringhe vengono utilizzate due funzioni:

    • gdorizabegkvfca - Esegue la decodifica simile a Base64

      Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

    • xgacyukcyzxz - semplice XOR byte-byte della prima stringa con la lunghezza della seconda

      Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  3. Rimozione dell'offuscamento BinaryToString и Eseguire

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Il carico principale viene memorizzato in forma divisa nella directory Caratteri sezioni delle risorse del file.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
L'ordine di incollaggio è il seguente: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

La funzione WinAPI viene utilizzata per decrittografare i dati estratti CriptaDecrypte la chiave di sessione generata in base al valore viene utilizzata come chiave fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Il file eseguibile decrittografato viene inviato all'input della funzione RunPEche svolge ProcessInject в RegAsm.exe utilizzando integrato ShellCode (conosciuto anche come EseguiPE ShellCode). La paternità appartiene all'utente del forum spagnolo non rilevabili[.]net sotto il soprannome di Wardow.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Vale anche la pena notare che in uno dei thread di questo forum è presente un offuscatore per AutoIt con proprietà simili identificate durante l'analisi del campione.

Se stesso ShellCode abbastanza semplice e attira l'attenzione solo presa in prestito dal gruppo di hacker AnunakCarbanak. Funzione di hashing delle chiamate API.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Siamo anche a conoscenza dei casi d’uso Shellcode francese versioni diverse.
Oltre alle funzionalità descritte, abbiamo individuato anche funzioni non attive:

  • Blocco della terminazione manuale del processo nel task manager

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • Riavvio di un processo figlio quando termina

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • Ignora l'UAC

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • Salvataggio del payload in un file

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • Dimostrazione delle finestre modali

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • In attesa che la posizione del cursore del mouse cambi

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • AntiVM e AntiSandbox

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • autodistruzione

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  • Pompaggio del carico utile dalla rete

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Sappiamo che tale funzionalità è tipica del protettore CypherIT, che, a quanto pare, è il bootloader in questione.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Modulo principale del software

Successivamente descriveremo brevemente il modulo principale del malware e lo considereremo più in dettaglio nel secondo articolo. In questo caso si tratta di un'applicazione attiva .NET.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
Durante l'analisi abbiamo scoperto che veniva utilizzato un offuscatore ConfuserEX.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

IELibrary.dll

La libreria è archiviata come risorsa del modulo principale ed è un plug-in ben noto per agente di Tesla, che fornisce funzionalità per l'estrazione di varie informazioni dai browser Internet Explorer ed Edge.

Agent Tesla è un software di spionaggio modulare distribuito utilizzando un modello malware-as-a-service sotto le spoglie di un prodotto keylogger legittimo. L'agente Tesla è in grado di estrarre e trasmettere le credenziali dell'utente da browser, client di posta elettronica e client FTP al server agli aggressori, registrare i dati degli appunti e catturare lo schermo del dispositivo. Al momento dell'analisi, il sito Web ufficiale degli sviluppatori non era disponibile.

Il punto di ingresso è la funzione Ottieni password salvate classe InternetExplorer.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1
In generale, l'esecuzione del codice è lineare e non contiene alcuna protezione contro l'analisi. Solo la funzione non realizzata merita attenzione Ottieni cookie salvati. Apparentemente la funzionalità del plugin avrebbe dovuto essere ampliata, ma ciò non è mai stato fatto.

Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

Collegamento del bootloader al sistema

Studiamo come il bootloader è collegato al sistema. Il campione in studio non si ancora, ma in eventi simili si presenta secondo il seguente schema:

  1. Nella cartella C:UtentiPubblico viene creato lo script Visual Basic

    Esempio di sceneggiatura:

    Affluenza fallita: esponiamo l'AgenteTesla all'acqua pulita. Parte 1

  2. Il contenuto del file del caricatore viene riempito con un carattere null e salvato nella cartella %Temp%<Nome cartella personalizzata><Nome file>
  3. Nel registro viene creata una chiave di esecuzione automatica per il file di script HKCUSoftwareMicrosoftWindowsCurrentVersionEsegui<nome script>

Quindi, sulla base dei risultati della prima parte dell'analisi, siamo riusciti a stabilire i nomi delle famiglie di tutti i componenti del malware studiato, ad analizzare il modello di infezione e anche a ottenere oggetti per la scrittura di firme. Continueremo la nostra analisi di questo oggetto nel prossimo articolo, dove vedremo più in dettaglio il modulo principale agente di Tesla. Non perdere!

A proposito, il 5 dicembre invitiamo tutti i lettori ad un webinar interattivo gratuito sul tema “Analisi del malware: analisi di casi reali”, dove l'autore di questo articolo, uno specialista del CERT-GIB, mostrerà online la prima fase di analisi del malware: decompressione semiautomatica dei campioni utilizzando l'esempio di tre mini-casi reali dalla pratica e puoi prendere parte all'analisi. Il webinar è adatto a specialisti che hanno già esperienza nell'analisi di file dannosi. La registrazione avviene rigorosamente dalla mail aziendale: зарегистрируйтесь. Ti aspetto!

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

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

890E643316E9276156EDC8A

Tipologia Archivia WinRAR
Taglia 823014
Nome QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Tipologia PE (script AutoIt compilato)
Taglia 1327616
Nome originale Sconosciuto
Il timbro della data 15.07.2019
link Microsoft Linker(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Tipologia ShellCode
Taglia 1474

Fonte: habr.com

Aggiungi un commento