Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

Con este artigo completamos a serie de publicacións dedicadas á análise de software malicioso. EN a primeira parte Realizamos unha análise detallada dun ficheiro infectado que unha empresa europea recibiu por correo e descubrimos alí o software espía de AgentTesla. En segunda parte describiu os resultados dunha análise paso a paso do módulo principal de AgentTesla.

Hoxe Ilya Pomerantsev, especialista en análise de malware do Grupo CERT-IB, falará sobre a primeira etapa da análise de malware: o desempaquetado semiautomático de mostras de AgentTesla usando o exemplo de tres mini-casos da práctica dos especialistas do Grupo CERT-IB.

Normalmente, a primeira etapa da análise de malware é a eliminación da protección en forma de empaquetador, criptor, protector ou cargador. Na maioría dos casos, este problema pódese resolver executando o malware e realizando un volcado, pero hai situacións nas que este método non é adecuado. Por exemplo, se o malware é un cifrador, se protexe as súas rexións de memoria para evitar que se volquen, se o código contén mecanismos de detección de máquinas virtuais ou se o malware se reinicia inmediatamente despois de iniciarse. Nestes casos utilízase o denominado desembalaxe “semiautomático”, é dicir, o investigador ten un control total sobre o proceso e pode intervir en calquera momento. Consideremos este procedemento usando tres mostras da familia AgentTesla como exemplo. Este é un malware relativamente inofensivo se desactiva o seu acceso á rede.

Mostra no 1

O ficheiro fonte é un documento de MS Word que explota a vulnerabilidade CVE-2017-11882.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Como resultado, a carga útil descárgase e lánzase.

A análise da árbore do proceso e os marcadores de comportamento mostra a inxección no proceso RegAsm.exe.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Hai marcadores de comportamento característicos de AgentTesla.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
A mostra descargada é a executable . Net-ficheiro protexido por un protector Reactor .NET.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Imos abrilo na utilidade dnSpy x86 e pasar ao punto de entrada.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Ao ir á función DateTimeOffset, atoparemos o código de inicialización do novo . Net- módulo. Poñamos punto de interrupción na liña que nos interesa e executa o ficheiro.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Nun dos búfers devoltos podes ver a sinatura MZ (0x4D 0x5A). Salvémolo.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Un ficheiro executable volcado é unha biblioteca dinámica que é un cargador, é dicir. extrae a carga útil da sección de recursos e lánzaa.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Ao mesmo tempo, os propios recursos necesarios non están presentes no vertedoiro. Están na mostra dos pais.

Utilidade dnSpy ten dúas funcionalidades extremadamente útiles que nos axudarán a crear rapidamente un "Frankenstein" a partir de dous ficheiros relacionados.

  1. O primeiro permítelle "pegar" unha biblioteca dinámica na mostra principal.

    Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

  2. O segundo é reescribir o código da función no punto de entrada para chamar ao método desexado da biblioteca dinámica inserida.

    Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

Gardamos o noso conxunto "Frankenstein". punto de interrupción na liña devolvendo un búfer con recursos descifrados, e producir un volcado por analoxía coa etapa anterior.

O segundo vertedoiro está escrito VB.NET un ficheiro executable que está protexido por un protector coñecido para nós ConfusorEx.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Despois de eliminar o protector, usamos as regras de YARA escritas anteriormente e asegurámonos de que o malware desempaquetado é realmente AgentTesla.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

Mostra no 2

O ficheiro fonte é un documento de MS Excel. Unha macro integrada provoca a execución de código malicioso.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Como resultado, lánzase o script de PowerShell.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
O script descifra o código C# e transfire o control a el. O código en si é un cargador de arranque, como tamén se pode ver no informe de sandbox.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
A carga útil é un executable . Net-arquivo.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Abrindo o ficheiro en dnSpy x86, podes ver que está ofuscado. Eliminación da ofuscación mediante a utilidade de4punto e volver á análise.

Ao examinar o código, pode descubrir a seguinte función:

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
As liñas codificadas son rechamantes Punto de entrada и Invoca. Poñemos punto de interrupción á primeira liña, execute e garde o valor do buffer byte_0.

O vertedoiro é de novo unha aplicación activada . Net e protexido ConfusorEx.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Eliminamos a ofuscación usando de4punto e carga a dnSpy. Pola descrición do ficheiro entendemos que estamos ante Cargador CyaX-Sharp.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Este cargador ten unha ampla funcionalidade antianálise.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Esta funcionalidade inclúe ignorar os sistemas de protección de Windows integrados, desactivar Windows Defender, así como os mecanismos de detección de sandbox e máquinas virtuais. É posible cargar a carga útil desde a rede ou almacenala na sección de recursos. O lanzamento realízase mediante a inxección no seu propio proceso, nun duplicado do seu propio proceso ou en procesos MSBuild.exe, vbc.exe и RegSvcs.exe dependendo do parámetro elixido polo atacante.

Non obstante, para nós son menos significativos que AntiDump-función que engade ConfusorEx. O seu código fonte pódese atopar en GitHub.

Para desactivar a protección, aproveitaremos a oportunidade dnSpy, que permite editar IL-codo.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Garda e instala punto de interrupción á liña de chamada á función de descifrado da carga útil. Está situado no construtor da clase principal.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Lanzamos e botamos a carga útil. Usando as regras de YARA escritas anteriormente, asegurámonos de que este é AgentTesla.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3

Mostra no 3

O ficheiro fonte é o executable VB nativo PE32-arquivo.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
A análise de entropía mostra a presenza dunha gran cantidade de datos cifrados.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Ao analizar o formulario de solicitude en Descompilador VB podes notar un estraño fondo pixelado.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Gráfico de entropía bmp-image é idéntica á gráfica de entropía do ficheiro orixinal e o tamaño é o 85 % do tamaño do ficheiro.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
O aspecto xeral da imaxe indica o uso da esteganografía.

Prestemos atención á aparencia da árbore do proceso, así como á presenza dun marcador de inxección.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Isto indica que o desembalaxe está en curso. Para cargadores de Visual Basic (tamén coñecido como VBKrypt ou VBInxector) uso típico shellcode para inicializar a carga útil, así como para realizar a propia inxección.

Análise en Descompilador VB mostrou a presenza dun evento Carga na forma FegatassocAirballoon2.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Imos a IDA pro ao enderezo especificado e estuda a función. O código está moi confuso. O fragmento que nos interesa preséntase a continuación.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Aquí o espazo de enderezos do proceso é dixitalizado para unha sinatura. Este enfoque é moi dubidoso.

En primeiro lugar, o enderezo de inicio da dixitalización 0x400100. Este valor é estático e non se axusta cando se despraza a base. En condicións ideais de invernadoiro indicará o final PE-a cabeceira do ficheiro executable. Non obstante, a base de datos non é estática, o seu valor pode cambiar e buscar o enderezo real da sinatura requirida, aínda que non provocará un desbordamento de variables, pode levar moito tempo.

En segundo lugar, o significado da sinatura iWGK. Creo que é obvio que 4 bytes son demasiado pequenos para garantir a singularidade. E se tes en conta o primeiro punto, a probabilidade de cometer un erro é bastante alta.

De feito, o fragmento necesario está unido ao final do atopado anteriormente bmp-Imaxes por compensación 0xA1D0D.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Actuación Shellcode realizada en dúas etapas. O primeiro descifra o corpo principal. Neste caso, a clave está determinada pola forza bruta.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Botar o descifrado Shellcode e mira as liñas.

En primeiro lugar, agora coñecemos a función para crear un proceso fillo: CreateProcessInternalW.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
En segundo lugar, tomamos conciencia do mecanismo de fixación no sistema.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Volvamos ao proceso orixinal. Poñamos punto de interrupción en CreateProcessInternalW e continuar coa execución. A continuación vemos a conexión NtGetContextThread/NtSetContextThread, que cambia o enderezo de inicio da execución polo enderezo ShellCode.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Conectámonos ao proceso creado cun depurador e activamos o evento Suspender na biblioteca ou cargar/descargar, retome o proceso e agarde a carga . Net-bibliotecas.

Usando máis ProcessHacker verter rexións que conteñen desempaquetado . Net-aplicación.

Detemos todos os procesos e eliminamos a copia do malware que quedou incorporado no sistema.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
O ficheiro envorcado está protexido por un protector Reactor .NET, que se pode eliminar facilmente mediante unha utilidade de4punto.

Fallou a participación: expoñamos a AgentTesla a auga limpa. Parte 3
Usando as regras de YARA escritas anteriormente, asegurámonos de que este é AgentTesla.

para resumir

Así, demostramos polo miúdo o proceso de desempaquetado semiautomático de mostras tomando como exemplo tres mini-estuches, e tamén analizamos malware en base a un caso completo, descubrindo que a mostra en estudo é AgentTesla, establecendo a súa funcionalidade e un lista completa de indicadores de compromiso.

A análise do obxecto malicioso que realizamos require moito tempo e esforzo, e este traballo debe ser realizado por un empregado especial da empresa, pero non todas as empresas están preparadas para contratar un analista.

Un dos servizos que ofrece o Laboratorio de Informática Forense e Análise de Códigos Malintencionados do Grupo-IB é a resposta a incidentes cibernéticos. E para que os clientes non perdan o tempo en aprobar documentos e discutilos no medio dun ciberataque, Group-IB lanzou Retén de resposta a incidentes, un servizo de resposta a incidentes previo á subscrición que tamén inclúe un paso de análise de malware. Pódese atopar máis información sobre isto aquí.

Se queres estudar unha vez máis como se desempaquetan as mostras de AgentTesla e ver como fai un especialista do Grupo CERT-IB, podes descargar a gravación do seminario web sobre este tema aquí.

Fonte: www.habr.com

Engadir un comentario