Con este artigo completamos a serie de publicacións dedicadas á análise de software malicioso. EN
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.
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.
Hai marcadores de comportamento característicos de AgentTesla.
A mostra descargada é a executable . Net-ficheiro protexido por un protector Reactor .NET.
Imos abrilo na utilidade dnSpy x86 e pasar ao punto de entrada.
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.
Nun dos búfers devoltos podes ver a sinatura MZ (0x4D 0x5A). Salvémolo.
Un ficheiro executable volcado é unha biblioteca dinámica que é un cargador, é dicir. extrae a carga útil da sección de recursos e lánzaa.
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.
- O primeiro permítelle "pegar" unha biblioteca dinámica na mostra principal.
- O segundo é reescribir o código da función no punto de entrada para chamar ao método desexado da biblioteca dinámica inserida.
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.
Despois de eliminar o protector, usamos as regras de YARA escritas anteriormente e asegurámonos de que o malware desempaquetado é realmente AgentTesla.
Mostra no 2
O ficheiro fonte é un documento de MS Excel. Unha macro integrada provoca a execución de código malicioso.
Como resultado, lánzase o script de PowerShell.
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.
A carga útil é un executable . Net-arquivo.
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:
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.
Eliminamos a ofuscación usando de4punto e carga a dnSpy. Pola descrición do ficheiro entendemos que estamos ante Cargador CyaX-Sharp.
Este cargador ten unha ampla funcionalidade antianálise.
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
Para desactivar a protección, aproveitaremos a oportunidade dnSpy, que permite editar IL-codo.
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.
Lanzamos e botamos a carga útil. Usando as regras de YARA escritas anteriormente, asegurámonos de que este é AgentTesla.
Mostra no 3
O ficheiro fonte é o executable VB nativo PE32-arquivo.
A análise de entropía mostra a presenza dunha gran cantidade de datos cifrados.
Ao analizar o formulario de solicitude en Descompilador VB podes notar un estraño fondo pixelado.
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.
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.
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.
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.
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.
Actuación Shellcode realizada en dúas etapas. O primeiro descifra o corpo principal. Neste caso, a clave está determinada pola forza bruta.
Botar o descifrado Shellcode e mira as liñas.
En primeiro lugar, agora coñecemos a función para crear un proceso fillo: CreateProcessInternalW.
En segundo lugar, tomamos conciencia do mecanismo de fixación no sistema.
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.
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.
O ficheiro envorcado está protexido por un protector Reactor .NET, que se pode eliminar facilmente mediante unha utilidade de4punto.
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
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
Fonte: www.habr.com