Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Kürzlich kontaktierte ein europäischer Hersteller von Elektroinstallationsgeräten Group-IB – sein Mitarbeiter erhielt per Post einen verdächtigen Brief mit einem schädlichen Anhang. Ilja Pomeranzew, ein Malware-Analysespezialist bei CERT Group-IB, führte eine detaillierte Analyse dieser Datei durch, entdeckte dort die AgentTesla-Spyware und erklärte, was von solcher Malware zu erwarten ist und wie gefährlich sie ist.

Mit diesem Beitrag eröffnen wir eine Reihe von Artikeln über die Analyse solcher potenziell gefährlichen Dateien und warten auf die Neugierigsten am 5. Dezember zu einem kostenlosen interaktiven Webinar zu diesem Thema „Malware-Analyse: Analyse realer Fälle“. Alle Details sind unter dem Schnitt.

Verteilungsmechanismus

Wir wissen, dass die Malware über Phishing-E-Mails auf den Rechner des Opfers gelangt ist. Der Empfänger des Briefes war wahrscheinlich BCCed.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Die Analyse der Kopfzeilen zeigt, dass der Absender des Briefes gefälscht wurde. Tatsächlich ging der Brief mit vps56[.]oneworldhosting[.]com.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Der E-Mail-Anhang enthält ein WinRar-Archiv qoute_jpeg56a.r15 mit einer bösartigen ausführbaren Datei QUUTE_JPEG56A.exe Innerhalb.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Malware-Ökosystem

Schauen wir uns nun an, wie das Ökosystem der untersuchten Malware aussieht. Das folgende Diagramm zeigt seinen Aufbau und die Wechselwirkungsrichtungen der Komponenten.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Schauen wir uns nun die einzelnen Malware-Komponenten genauer an.

Lader

Originaldatei QUUTE_JPEG56A.exe ist eine kompilierte AutoIt v3 Skript.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Um das ursprüngliche Skript zu verschleiern, wird ein Obfuscator mit ähnlichem verwendet PELock AutoIT-Obfuscator Eigenschaften.
Die Entschleierung erfolgt in drei Schritten:

  1. Verschleierung beseitigen Für-Wenn

    Der erste Schritt besteht darin, den Kontrollfluss des Skripts wiederherzustellen. Die Reduzierung des Kontrollflusses ist eine der gebräuchlichsten Methoden, um den Binärcode einer Anwendung vor der Analyse zu schützen. Verwirrende Transformationen erhöhen die Komplexität des Extrahierens und Erkennens von Algorithmen und Datenstrukturen dramatisch.

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  2. Zeilenwiederherstellung

    Zum Verschlüsseln von Zeichenfolgen werden zwei Funktionen verwendet:

    • gdorizabegkvfca – Führt eine Base64-ähnliche Dekodierung durch

      Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

    • xgacyukcyzxz – einfaches Byte-Byte-XOR der ersten Zeichenfolge mit der Länge der zweiten

      Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  3. Verschleierung beseitigen BinaryToString и Ausführen

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Die Hauptlast wird in aufgeteilter Form im Verzeichnis abgelegt Schriftarten Ressourcenabschnitte der Datei.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Die Klebereihenfolge ist wie folgt: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

Zur Entschlüsselung der extrahierten Daten wird die WinAPI-Funktion verwendet CryptDecrypt, und der basierend auf dem Wert generierte Sitzungsschlüssel wird als Schlüssel verwendet fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Die entschlüsselte ausführbare Datei wird an den Funktionseingang gesendet RunPE, was ausführt ProcessInject в RegAsm.exe mit integriertem ShellCode (auch bekannt als Führen Sie PE ShellCode aus). Die Urheberschaft liegt beim Benutzer des spanischen Forums indetectables[.]net unter dem Spitznamen Wardow.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Es ist auch erwähnenswert, dass in einem der Threads dieses Forums ein Obfuscator für AutoIt mit ähnlichen Eigenschaften, die während der Probenanalyse identifiziert wurden.

Selbst ShellCode Ganz einfach und fällt nur auf, wenn man es von der Hackergruppe AnunakCarbanak entlehnt hat. API-Aufruf-Hashing-Funktion.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Auch Anwendungsfälle sind uns bekannt Frenchy Shellcode verschiedene Versionen.
Zusätzlich zur beschriebenen Funktionalität haben wir auch inaktive Funktionen identifiziert:

  • Blockieren der manuellen Prozessbeendigung im Task-Manager

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Neustart eines untergeordneten Prozesses, wenn dieser beendet wird

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • UAC umgehen

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Speichern der Nutzdaten in einer Datei

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Demonstration modaler Fenster

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Warten darauf, dass sich die Position des Mauszeigers ändert

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • AntiVM und AntiSandbox

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Selbstzerstörung

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  • Nutzlast aus dem Netzwerk pumpen

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Wir wissen, dass diese Funktionalität typisch für den Protektor ist CypherIT, bei dem es sich offenbar um den fraglichen Bootloader handelt.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Hauptmodul der Software

Als nächstes beschreiben wir kurz das Hauptmodul der Malware und gehen im zweiten Artikel genauer darauf ein. In diesem Fall handelt es sich um eine Bewerbung .NET.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Bei der Analyse stellten wir fest, dass ein Obfuskator verwendet wurde ConfuserEX.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

IELibrary.dll

Die Bibliothek wird als Hauptmodulressource gespeichert und ist ein bekanntes Plugin für Agent Tesla, das Funktionen zum Extrahieren verschiedener Informationen aus Internet Explorer- und Edge-Browsern bietet.

Agent Tesla ist eine modulare Spionagesoftware, die unter dem Deckmantel eines legitimen Keylogger-Produkts über ein Malware-as-a-Service-Modell verbreitet wird. Agent Tesla ist in der Lage, Benutzeranmeldeinformationen von Browsern, E-Mail-Clients und FTP-Clients zu extrahieren und an den Server an Angreifer zu übermitteln, Zwischenablagedaten aufzuzeichnen und den Gerätebildschirm zu erfassen. Zum Zeitpunkt der Analyse war die offizielle Website der Entwickler nicht verfügbar.

Der Einstiegspunkt ist die Funktion GetSavedPasswords Klasse InternetExplorer.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1
Im Allgemeinen erfolgt die Codeausführung linear und enthält keinen Schutz vor Analyse. Nur die nicht realisierte Funktion verdient Aufmerksamkeit GetSavedCookies. Offenbar sollte der Funktionsumfang des Plugins erweitert werden, was jedoch nie geschehen ist.

Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

Anschließen des Bootloaders an das System

Lassen Sie uns untersuchen, wie der Bootloader an das System angeschlossen ist. Das untersuchte Exemplar verankert sich nicht, aber bei ähnlichen Ereignissen erfolgt es nach folgendem Schema:

  1. Im Ordner C:UsersPublic Skript wird erstellt Visual Basic

    Skriptbeispiel:

    Wahlbeteiligung fehlgeschlagen: Lassen Sie uns AgentTesla sauberem Wasser aussetzen. Teil 1

  2. Der Inhalt der Loader-Datei wird mit einem Nullzeichen aufgefüllt und im Ordner gespeichert %Temp%<Benutzerdefinierter Ordnername><Dateiname>
  3. Für die Skriptdatei wird in der Registrierung ein Autorun-Schlüssel erstellt HKCUSoftwareMicrosoftWindowsCurrentVersionRun<Skriptname>

Basierend auf den Ergebnissen des ersten Teils der Analyse konnten wir die Namen der Familien aller Komponenten der untersuchten Malware ermitteln, das Infektionsmuster analysieren und auch Objekte zum Schreiben von Signaturen erhalten. Wir werden unsere Analyse dieses Objekts im nächsten Artikel fortsetzen, in dem wir uns das Hauptmodul genauer ansehen Agent Tesla. Nicht verpassen!

Übrigens laden wir am 5. Dezember alle Leser zu einem kostenlosen interaktiven Webinar zum Thema „Analyse von Malware: Analyse realer Fälle“ ein, bei dem der Autor dieses Artikels, ein CERT-GIB-Spezialist, online die erste Phase von zeigt Malware-Analyse – halbautomatisches Auspacken von Proben am Beispiel von drei realen Mini-Fällen aus der Praxis, und Sie können an der Analyse teilnehmen. Das Webinar eignet sich für Spezialisten, die bereits Erfahrung in der Analyse schädlicher Dateien haben. Die Registrierung erfolgt ausschließlich über die Firmen-E-Mail: Registrieren. Warten auf euch!

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

Name und Vorname qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

Typ Archivieren Sie WinRAR
Größe 823014
Name und Vorname QUUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Typ PE (kompiliertes AutoIt-Skript)
Größe 1327616
Originalname Unbekannt
Datumsstempel 15.07.2019
Links Microsoft Linker(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Typ ShellCode
Größe 1474

Source: habr.com

Kommentar hinzufügen