Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Onlangs nam een ​​Europese fabrikant van elektrische installatieapparatuur contact op met Group-IB - zijn medewerker ontving een verdachte brief met een kwaadaardige bijlage per post. Ilja Pomerantsev, een malware-analysespecialist bij CERT Group-IB, voerde een gedetailleerde analyse uit van dit bestand, ontdekte daar de AgentTesla-spyware en vertelde wat hij van dergelijke malware kon verwachten en hoe gevaarlijk deze is.

Met dit bericht openen we een reeks artikelen over het analyseren van dergelijke potentieel gevaarlijke bestanden, en we wachten op de meest nieuwsgierigen op 5 december voor een gratis interactief webinar over dit onderwerp “Malware-analyse: analyse van echte gevallen”. Alle details zijn onder de snit.

Distributiemechanisme

We weten dat de malware de machine van het slachtoffer heeft bereikt via phishing-e-mails. De ontvanger van de brief was waarschijnlijk BCC-gebaseerd.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Uit analyse van de headers blijkt dat de afzender van de brief vervalst was. In feite is de brief achtergelaten vps56[.]oneworldhosting[.]com.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
De e-mailbijlage bevat een WinRar-archief qoute_jpeg56a.r15 met een kwaadaardig uitvoerbaar bestand QOUTE_JPEG56A.exe binnenkant.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

Malware-ecosysteem

Laten we nu eens kijken hoe het ecosysteem van de onderzochte malware eruit ziet. Het onderstaande diagram toont de structuur en de interactierichtingen van de componenten.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Laten we nu elk van de malwarecomponenten in meer detail bekijken.

Lader

Origineel bestand QOUTE_JPEG56A.exe is een samengesteld AutoIt v3 script.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Om het originele script te verdoezelen, een obfuscator met soortgelijke PELock AutoIT-Obfuscator kenmerken.
Deobfuscatie wordt in drie fasen uitgevoerd:

  1. Verduistering verwijderen Voor als

    De eerste stap is het herstellen van de controlestroom van het script. Control Flow Flattening is een van de meest gebruikelijke manieren om binaire code van applicaties tegen analyse te beschermen. Verwarrende transformaties vergroten de complexiteit van het extraheren en herkennen van algoritmen en datastructuren dramatisch.

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  2. Rij herstel

    Er worden twee functies gebruikt om tekenreeksen te coderen:

    • gdorizabegkvfca - Voert Base64-achtige decodering uit

      Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

    • xgacyukcyzxz - eenvoudige byte-byte XOR van de eerste string met de lengte van de tweede

      Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  3. Verduistering verwijderen BinaryToString и Uitvoeren

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

De hoofdbelasting wordt in verdeelde vorm in de directory opgeslagen fonts bronsecties van het bestand.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
De lijmvolgorde is als volgt: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

De WinAPI-functie wordt gebruikt om de geëxtraheerde gegevens te decoderen CryptDecrypten de op basis van de waarde gegenereerde sessiesleutel wordt als sleutel gebruikt fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Het gedecodeerde uitvoerbare bestand wordt naar de functie-invoer verzonden Voer PE uit, die uitvoert ProcesInject в RegAsm.exe gebruik van ingebouwd ShellCode (ook gekend als Voer PE ShellCode uit). Het auteurschap behoort toe aan de gebruiker van het Spaanse forum indetecteerbaar[.]net onder de bijnaam Wardow.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Het is ook de moeite waard om op te merken dat er in een van de discussies op dit forum een ​​obfuscator voor staat AutoIt met vergelijkbare eigenschappen geïdentificeerd tijdens monsteranalyse.

Zichzelf ShellCode vrij eenvoudig en trekt de aandacht die alleen is geleend van de hackergroep AnunakCarbanak. Hashing-functie voor API-aanroepen.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

Ook zijn wij op de hoogte van use cases Franse Shellcode verschillende versies.
Naast de beschreven functionaliteit hebben we ook inactieve functies geïdentificeerd:

  • Handmatige procesbeëindiging blokkeren in Taakbeheer

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Een onderliggend proces opnieuw starten wanneer het wordt beëindigd

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Omzeil UAC

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • De payload opslaan in een bestand

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Demonstratie van modale vensters

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Wachten tot de positie van de muiscursor verandert

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • AntiVM en AntiSandbox

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Zelfvernietiging

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  • Nuttige lading uit het netwerk pompen

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

We weten dat een dergelijke functionaliteit typisch is voor de beschermer CypherIT, wat blijkbaar de bootloader in kwestie is.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

Hoofdmodule van software

Vervolgens zullen we de hoofdmodule van de malware kort beschrijven en er in het tweede artikel dieper op ingaan. In dit geval is het een applicatie op . NET.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Tijdens de analyse ontdekten we dat er een obfuscator werd gebruikt ConfuserEX.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

IELibrary.dll

De bibliotheek wordt opgeslagen als hoofdmodulebron en is een bekende plug-in voor Agent Tesla, dat functionaliteit biedt voor het extraheren van verschillende informatie uit Internet Explorer en Edge-browsers.

Agent Tesla is modulaire spionagesoftware die wordt gedistribueerd met behulp van een malware-as-a-service-model onder het mom van een legitiem keylogger-product. Agent Tesla kan gebruikersgegevens uit browsers, e-mailclients en FTP-clients extraheren en naar de server verzenden naar aanvallers, klembordgegevens opnemen en het scherm van het apparaat vastleggen. Op het moment van analyse was de officiële website van de ontwikkelaars niet beschikbaar.

Het startpunt is de functie GetSavedPasswords klasse InternetExplorer.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1
Over het algemeen is de uitvoering van code lineair en biedt deze geen enkele bescherming tegen analyse. Alleen de ongerealiseerde functie verdient aandacht Ontvang opgeslagen cookies. Blijkbaar zou de functionaliteit van de plug-in worden uitgebreid, maar dit is nooit gebeurd.

Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

De bootloader aan het systeem koppelen

Laten we bestuderen hoe de bootloader aan het systeem is gekoppeld. Het onderzochte exemplaar verankert niet, maar bij soortgelijke gebeurtenissen gebeurt het volgens het volgende schema:

  1. In map C:Gebruikersopenbaar schrift is gemaakt Visual Basic

    Scriptvoorbeeld:

    Opkomst mislukt: laten we AgentTesla blootstellen aan schoon water. Deel 1

  2. De inhoud van het bootloaderbestand wordt opgevuld met een null-teken en opgeslagen in de map %Temp%
  3. Er wordt een autorun-sleutel gemaakt in het register voor het scriptbestand HKCUSoftwareMicrosoftWindowsCurrentVersionRun

Op basis van de resultaten van het eerste deel van de analyse konden we dus de namen van de families van alle componenten van de onderzochte malware vaststellen, het infectiepatroon analyseren en ook objecten verkrijgen voor het schrijven van handtekeningen. We zullen onze analyse van dit object voortzetten in het volgende artikel, waar we de hoofdmodule in meer detail zullen bekijken Agent Tesla. Mis niet!

Trouwens, op 5 december nodigen we alle lezers uit voor een gratis interactief webinar over het onderwerp “Analyse van malware: analyse van echte gevallen”, waar de auteur van dit artikel, een CERT-GIB-specialist, online de eerste fase van malware-analyse - semi-automatisch uitpakken van monsters aan de hand van het voorbeeld van drie echte mini-cases uit de praktijk, en u kunt deelnemen aan de analyse. Het webinar is geschikt voor specialisten die al ervaring hebben met het analyseren van kwaadaardige bestanden. Registratie vindt uitsluitend plaats via zakelijke e-mail: зарегистрируйтесь. Ik wacht op jou!

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

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

890E643316E9276156EDC8A

Type Archiveer WinRAR
Maat 823014
Naam QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Type PE (gecompileerd AutoIt-script)
Maat 1327616
Originele naam Onbekend
Datumstempel 15.07.2019
Links Microsoft Linker(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Type ShellCode
Maat 1474

Bron: www.habr.com

Voeg een reactie