La participación falló: expongamos AgentTesla al agua limpia. Parte 1

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
Recientemente, un fabricante europeo de equipos de instalación eléctrica se puso en contacto con Group-IB: su empleado recibió por correo una carta sospechosa con un archivo adjunto malicioso. Iliá Pomerantsev, especialista en análisis de malware de CERT Group-IB, realizó un análisis detallado de este archivo, descubrió el software espía AgentTesla allí y dijo qué esperar de dicho malware y qué tan peligroso es.

Con esta publicación abrimos una serie de artículos sobre cómo analizar archivos potencialmente peligrosos y esperamos a los más curiosos el 5 de diciembre para un seminario web interactivo gratuito sobre el tema. “Análisis de Malware: Análisis de Casos Reales”. Todos los detalles están debajo del corte.

Mecanismo de distribución

Sabemos que el malware llegó al equipo de la víctima a través de correos electrónicos de phishing. El destinatario de la carta probablemente tenía BCC.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
El análisis de los encabezados muestra que el remitente de la carta fue falsificado. De hecho, la carta se fue con vps56[.]oneworldhosting[.]com.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
El archivo adjunto del correo electrónico contiene un archivo WinRar. qoute_jpeg56a.r15 con un archivo ejecutable malicioso QOUTE_JPEG56A.exe dentro.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1

Ecosistema HPE

Ahora veamos cómo es el ecosistema del malware en estudio. El siguiente diagrama muestra su estructura y las direcciones de interacción de los componentes.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
Ahora veamos cada uno de los componentes del malware con más detalle.

Cargador

Archivo original QOUTE_JPEG56A.exe es un compilado AutoIt v3 guion.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
Para ofuscar el guión original, se utiliza un ofuscador con funciones similares. PELock AutoIT-Ofuscador características
La desofuscación se lleva a cabo en tres etapas:

  1. Eliminando la ofuscación Por si

    El primer paso es restaurar el flujo de control del script. Control Flow Flattening es una de las formas más comunes de proteger el código binario de la aplicación del análisis. Las transformaciones confusas aumentan drásticamente la complejidad de extraer y reconocer algoritmos y estructuras de datos.

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  2. Recuperación de filas

    Se utilizan dos funciones para cifrar cadenas:

    • gdorizabegkvfca: realiza una decodificación similar a Base64

      La participación falló: expongamos AgentTesla al agua limpia. Parte 1

    • xgacyukcyzxz - XOR byte-byte simple de la primera cadena con la longitud de la segunda

      La participación falló: expongamos AgentTesla al agua limpia. Parte 1

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  3. Eliminando la ofuscación BinarioACadena и Implementación

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

La carga principal se almacena de forma dividida en el directorio. Fuentes secciones de recursos del archivo.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
El orden de pegado es el siguiente: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

La función WinAPI se utiliza para descifrar los datos extraídos. CriptaDescifrar, y la clave de sesión generada en función del valor se utiliza como clave fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

El archivo ejecutable descifrado se envía a la entrada de la función. RunPEque lleva a cabo ProcesoInyectar в RegAsm.exe usando incorporado Código Shell (también conocido como Ejecutar PE ShellCode). La autoría pertenece al usuario del foro español. indetectables[.]neto bajo el sobrenombre de Wardow.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
La participación falló: expongamos AgentTesla al agua limpia. Parte 1
También vale la pena señalar que en uno de los hilos de este foro, un ofuscador de AutoIt con propiedades similares identificadas durante el análisis de muestras.

Sí mismo Código Shell bastante simple y llama la atención, solo lo tomó prestado del grupo de hackers AnunakCarbanak. Función hash de llamadas API.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
La participación falló: expongamos AgentTesla al agua limpia. Parte 1

También conocemos los casos de uso. Código Shell francés diferentes versiones.
Además de la funcionalidad descrita, también identificamos funciones inactivas:

  • Bloquear la terminación manual del proceso en el administrador de tareas

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Reiniciar un proceso hijo cuando finaliza

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Omitir UAC

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Guardar la carga útil en un archivo

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Demostración de ventanas modales.

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Esperando a que cambie la posición del cursor del ratón

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • AntiVM y AntiSandbox

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Autodestrucción

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  • Bombeo de carga útil desde la red.

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

Sabemos que dicha funcionalidad es típica del protector. CypherIT, que, aparentemente, es el gestor de arranque en cuestión.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1

Módulo principal de software.

A continuación, describiremos brevemente el módulo principal del malware y lo consideraremos con más detalle en el segundo artículo. En este caso se trata de una aplicación sobre .NET.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
Durante el análisis, descubrimos que se utilizó un ofuscador. ConfusoEX.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1

IELibrary.dll

La biblioteca se almacena como un recurso del módulo principal y es un complemento bien conocido para agente de Tesla, que proporciona funcionalidad para extraer información diversa de los navegadores Internet Explorer y Edge.

Agent Tesla es un software de espionaje modular que se distribuye utilizando un modelo de malware como servicio bajo la apariencia de un producto legítimo de registro de pulsaciones. El agente Tesla es capaz de extraer y transmitir credenciales de usuario desde navegadores, clientes de correo electrónico y clientes FTP al servidor a los atacantes, registrar datos del portapapeles y capturar la pantalla del dispositivo. En el momento del análisis, el sitio web oficial de los desarrolladores no estaba disponible.

El punto de entrada es la función. Obtener contraseñas guardadas clase InternetExplorer.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1
En general, la ejecución del código es lineal y no contiene ninguna protección contra el análisis. Sólo la función no realizada merece atención. Obtener cookies guardadas. Aparentemente, se suponía que se iba a ampliar la funcionalidad del complemento, pero nunca se hizo.

La participación falló: expongamos AgentTesla al agua limpia. Parte 1

Adjuntar el gestor de arranque al sistema

Estudiemos cómo se adjunta el gestor de arranque al sistema. El ejemplar en estudio no realiza anclaje, pero en eventos similares se produce según el siguiente esquema:

  1. En carpeta C:UsuariosPúblico se crea el guión Visual Basic

    Ejemplo de guión:

    La participación falló: expongamos AgentTesla al agua limpia. Parte 1

  2. El contenido del archivo del cargador se rellena con un carácter nulo y se guarda en la carpeta. %Temp%<Nombre de carpeta personalizada><Nombre de archivo>
  3. Se crea una clave de ejecución automática en el registro para el archivo de secuencia de comandos. HKCUSoftwareMicrosoftWindowsCurrentVersionRun<nombre del script>

Así, a partir de los resultados de la primera parte del análisis, pudimos establecer los nombres de las familias de todos los componentes del malware estudiado, analizar el patrón de infección y también obtener objetos para escribir firmas. Continuaremos nuestro análisis de este objeto en el próximo artículo, donde veremos el módulo principal con más detalle. agente de Tesla. ¡No te pierdas!

Por cierto, el 5 de diciembre invitamos a todos los lectores a un seminario web interactivo gratuito sobre el tema “Análisis de malware: análisis de casos reales”, donde el autor de este artículo, especialista del CERT-GIB, mostrará online la primera etapa de Análisis de malware: descompresión semiautomática de muestras utilizando el ejemplo de tres minicasos reales de la práctica, y usted puede participar en el análisis. El seminario web es adecuado para especialistas que ya tengan experiencia en el análisis de archivos maliciosos. El registro es estrictamente desde el correo electrónico corporativo: зарегистрируйтесь. ¡Esperando por ti!

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

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

890E643316E9276156EDC8A

Tipo de Propiedad Archivo WinRAR
Tamaño 823014
Nombre QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Tipo de Propiedad PE (Script AutoIt compilado)
Tamaño 1327616
Nombre original Desconocido
Sello de la fecha 15.07.2019
enlaces Vinculador de Microsoft (12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Tipo de Propiedad Código Shell
Tamaño 1474

Fuente: habr.com

Añadir un comentario