Ir para conteúdo

AnalyseMe - Nível 03


Fernando Mercês

Posts Recomendados

Salve, pessoal! Perdoem o atraso, mas aqui está o AnalyseMe-03, o quarto da série (começou com o nível 00). Lembra de postar a reposta com a tag spoiler, pra não dar a resposta de cara pra quem quer tentar. ?

Esse tem umas surpresinhas. hehe

Em tempo, podem dar feedback do que estão achando da série? Tá legal? Muito fácil? Muito difícil? Queremos saber. Olha o binário aí e manda seus comentários por favor!

Grande abraço e boa sorte!

AnalyseMe-03.exe

Link para o comentário
Compartilhar em outros sites

Olá Merceix!

 

Segue minha análise rápida;

Spoiler

Primeiro testa se está executando em um ambiente virtualizado, procurando a existência destes dois arquivos.

C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll

C:\windows\System32\Drivers\Vmmouse.sys

 

Se algum deles existir, então ele termina a execução. 

Se não, ele abre uma conexão com o site http://2016.eicar.org/download/eicar.com ,

usando o User-Agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" e salva o conteúdo em um arquivo chamado payload.exe na pasta temporária do usuário.

 

Fim rs

 

Link para o comentário
Compartilhar em outros sites

18 minutos atrás, Thiago de Queiroz disse:

Olá Merceix!

 

Segue minha análise rápida;

  Mostrar conteúdo oculto

Primeiro testa se está executando em um ambiente virtualizado, procurando a existência destes dois arquivos.

C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll

C:\windows\System32\Drivers\Vmmouse.sys

 

Se algum deles existir, então ele termina a execução. 

Se não, ele abre uma conexão com o site http://2016.eicar.org/download/eicar.com ,

usando o User-Agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" e salva o conteúdo em um arquivo chamado payload.exe na pasta temporária do usuário.

 

Fim rs

 

muito bom @Thiago de Queiroz só faltou vc seguir o modelo de analise padrão daqui do forum que o @Fernando Mercês não mencionou acima.

 

Spoiler
  • Tipo de arquivo: PE EXE
  • Compilador/linguagem: Borland C++
  • Protector/packer: Nenhum
  • SHA-256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
  • Strings interessantes: X, Y, Z
  • Funções locais maliciosas: 405040 (faz tal coisa), 403570 (faz coisa e tal)
  • Chamadas à API do Windows e outras bibliotecas: CreateWindowExA(parâmetros), InternetOpenFileA(parâmetros)...
  • Atividades de rede: resolve o domínio X, baixa Y da URL Z
  • O que o binário faz em linhas gerais: Rouba as senhas armazenadas no browser.
  • O que foi modificado no sistema: o arquivo X é criado e uma chave de registro é adicionada em HKLM\Microsoft\Windows\CurrentVersion\Run com o valor c:\binario.exe

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Aof disse:

muito bom @Thiago de Queiroz só faltou vc seguir o modelo de analise padrão daqui do forum que o @Fernando Mercês não mencionou acima.

 

  Mostrar conteúdo oculto
  • Tipo de arquivo: PE EXE
  • Compilador/linguagem: Borland C++
  • Protector/packer: Nenhum
  • SHA-256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
  • Strings interessantes: X, Y, Z
  • Funções locais maliciosas: 405040 (faz tal coisa), 403570 (faz coisa e tal)
  • Chamadas à API do Windows e outras bibliotecas: CreateWindowExA(parâmetros), InternetOpenFileA(parâmetros)...
  • Atividades de rede: resolve o domínio X, baixa Y da URL Z
  • O que o binário faz em linhas gerais: Rouba as senhas armazenadas no browser.
  • O que foi modificado no sistema: o arquivo X é criado e uma chave de registro é adicionada em HKLM\Microsoft\Windows\CurrentVersion\Run com o valor c:\binario.exe

 

Obrigado! Me desculpe eu nao sabia deste modelo de post... ? Abraco

Link para o comentário
Compartilhar em outros sites

Spoiler

 

  1. Tipo de arquivo: PE EXE
  2. Compilador/linguagem: Visual C++ (2017) (Debug)
  3. Protector/packer: Nenhum
  4. SHA-256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f(eicar.com), c704af52eeabac166822ddb77000528213ceae5402c34a8443006992ecc46b49 (AnalyseMe-03.exe)
  5. Strings interessantes: http://2016.eicar.org/download/eicar.com (URL Decriptada), Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) (User-agent para acesso da url), \payload.exe, C:\windows\System32\Drivers\Vmmouse.sys (driver do mouse da maquina virtual), C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll (parte de um componente para instalação de drivers). C:\Users\Homer\Documents\Visual Studio 2017\Projects\Project3\Release\Project3.pdb (String iinteressante, pois podemos saber parte da origem do criador do arquivo ou do arquivo em si)
  6. Funções locais maliciosas: 0x00401120 (Decripta strings), 0x00401110 (Geralmente chamada quando ocorre algum retorno inválido, exemplo: INVALID HANDLE...), 0x00401310 (verifica se o sistema está sob uma maquina virtual atraves da verificação da existencia de arquivos no sistema)
  7. Chamadas à API do Windows e outras bibliotecas: InternetOpenUrlA(http://2016.eicar.org/download/eicar.com), CreateFileA(READ, DIFxAPI.dll && Vmmouse.sys), GetTempPathA(buffer)(local para esconder o arquivo) (GetCommandLineA() ???) WriteFile(salvar o arquivos que foi baixado)
  8. Atividades de rede: resolve a url http://2016.eicar.org/download/eicar.com, baixa o arquivo eicar.com, e salva em TEMPPATH\payload.exe (Temp path = pasta temporaria)
  9. O que o binário faz em linhas gerais: Baixa um arquivo virus de teste e esconde na maquina.
  10. O que foi modificado no sistema: o arquivo baixado é salvo em TEMPPATH\payload.exe (Temp path = pasta temporaria)

 

 

Acho que é isso! ?

Link para o comentário
Compartilhar em outros sites

Boa tarde Fernando,

Segue um programa em python3 para decifrar as strings da mesma maneira que a função 401120:

Spoiler

# A chave segue o padrao [01 02 03 04 00] [01 02 03 04 00] várias vezes repetidas
chave = bytearray([0x01,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00,0x02,0x03,0x04,0x00])
# As strings em hexadecimal são encontradas no binário
string1 = bytearray([0x4C,0x6D,0x79,0x6D,0x6C,0x6E,0x62,0x2B,0x34,0x2C,0x33,0x24,0x28,0x61,0x6C,0x69,0x70,0x63,0x77,0x6D,0x62,0x6E,0x66,0x3F,0x20,0x4F,0x50,0x4D,0x45,0x22,0x35,0x2A,0x30,0x39,0x23,0x53,0x69,0x6C,0x67,0x6B,0x77,0x71,0x23,0x4A,0x54,0x22,0x36,0x2A,0x31,0x39,0x23,0x57,0x56,0x33,0x2A])
string2 = bytearray([0x42,0x38,0x5F,0x73,0x69,0x6C,0x67,0x6B,0x77,0x71,0x5F,0x57,0x79,0x71,0x77,0x61,0x6D,0x31,0x31,0x58,0x44,0x70,0x6A,0x72,0x65,0x70,0x70,0x58,0x56,0x6F,0x6E,0x6B,0x75,0x71,0x66,0x2A,0x73,0x7B,0x70])
string3 = bytearray([0x69,0x76,0x77,0x74,0x3A,0x2D,0x2C,0x36,0x30,0x33,0x35,0x2A,0x65,0x6B,0x60,0x65,0x72,0x2C,0x6C,0x76,0x67,0x2D,0x67,0x6B,0x77,0x6C,0x6F,0x6B,0x61,0x66,0x2C,0x61,0x69,0x61,0x62,0x76,0x2E,0x61,0x6C,0x69])
string4 = bytearray([0x42,0x38,0x5F,0x54,0x72,0x6D,0x64,0x76,0x61,0x6F,0x23,0x42,0x69,0x6E,0x66,0x77,0x5C,0x4D,0x71,0x65,0x63,0x6E,0x66,0x58,0x56,0x6B,0x71,0x70,0x75,0x63,0x6F,0x46,0x6F,0x7A,0x23,0x43,0x75,0x67,0x70,0x70,0x20,0x43,0x67,0x60,0x69,0x76,0x6A,0x6B,0x6E,0x71,0x5F,0x40,0x49,0x44,0x7B,0x45,0x50,0x4B,0x2D,0x60,0x6C,0x6E])
strings = [string1, string2, string3, string4]

for i in range(len(strings)):
    for k in range(len(strings[i])):
        strings[i][k] ^= chave[k] #Basta fazer um XOR entre a chave e a string
    print('String decifrada: {0}'.format(strings[i]))

 

Abs,
Rafael

Link para o comentário
Compartilhar em outros sites

  • Apoiador Nibble

Minha análise:

Spoiler

Percebi que ele verifica se está rodando em uma VM procurando por C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll  e em caso afirmativo o programa é encerrado. Para contornar isso fui na linha em que chama a função que encerraria o programa e dei um 'Fill with NOPs', fazendo com que a execução prosseguisse mesmo estando numa VM.

Quanto ao script em Python:
 

Spoiler

 

Não ficou bem feito como o do @rcimatti, pois joguei as strings e fiz as conversões pra hexa durante o laço, mas no final deu o resultado esperado. Ficou assim:

for l in string1:
...     o = ord(l) ^ chave[x]
...     x = x+1
...     str_decodificada = str_decodificada + chr(o)

 

Sobre o feedback:

Os desafiose stão ótimos, @Fernando Mercês. Acho que o grau de dificuldade de um nível para outro está na medida e está sendo uma ótima oportunidade para pôr em prática o que foi visto no CERO. Pode manter do jeito que tá que tá ótimo.

 

Link para o comentário
Compartilhar em outros sites

  • Apoiador Nibble

Muito maneiro, segue a analise e o script para decifrar.

 

Spoiler

Tipo de arquivo: PE EXE
Compilador/linguagem: Microsoft Visual C/C++
Protector/packer: Nenhum
SHA-256: c704af52eeabac166822ddb77000528213ceae5402c34a8443006992ecc46b49
Strings interessantes: C:\Users\Homer\Documents\Visual Studio 2017\Projects\Project3\Release\Project3.pdb,
            Strings cifradas via XOR:
                B8_Trmdvao#Binfw\MqecnfXVkqpucoFoz#Cugpp Cg`ivjknq_@ID{EPK-`ln == C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll
                B8_silgkwq_Wyqwam11XDpjreppXVonkuqf*s{p                == C:\windows\System32\Drivers\Vmmouse.sys
                Lmymlnb+4,3$(alipcwmbnf? OPME"5*09#Silgkwq#JT"6*19#WV3*        == Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
                ]rb}lmb`.g{a                                == \payload.exe
                ivwt:-,6035*ek`er,lvg-gkwlokaf,aiabv.ali               == http://2016.eicar.org/download/eicar.com

Funções locais maliciosas: 401313 (carrega strings codificadas para checagem de ambiente virtualizado),401110(call para decodificar string) 4011AO (Apos checagem, faz request para download do sample eicar)

Chamadas à API do Windows e outras bibliotecas: wininet.dll_InternetReadFile, wininet.dll_InternetOpenUrlA, wininet.dll_InternetOpenUrlA, wininet.dll_InternetOpenA,
                        KERNEL32.dll_ExitProcess, KERNEL32.dll_GetProcessHeap,KERNEL32.dll_HeapAlloc, KERNEL32.dll_GetCommandLineA, KERNEL32.dll_WriteFile,
                        KERNEL32.dll_GetTempPathA, KERNEL32.dll_CloseHandle, KERNEL32.dll_GetModuleHandleA, KERNEL32.dll_lstrcatA, KERNEL32.dll_GetStartupInfoA

Atividades de rede: Monta uma request usando o user-agent do firefox (Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)), entao faz o download do sample malicioso eicar, em  http://2016.eicar.org/download/eicar.com

O que o binário faz em linhas gerais: Detecta se esta em um ambiente virtualizado buscando arquivos que indicam o uso da Virtualbox ou VMware, caso nao esteja em uma maquina virtual, o sample faz uma request para realizar o download do
                      sample eicar e age como um dropper, salvando o arquivo com o nome payload.exe nos arquivos temporarios. Todas as strings estao codificadas usando XOR, mas de uma maneira nao tao clara.
                      Ele mantem uma lista de chaves na qual eh calculada baseada no indice do contador da string.

            

O que foi modificado no sistema: Sample eicar salvo nos arquivos temporarios como payload.exe

 

Algoritmo em python

Spoiler

                        import sys


                        def decrypt(s):
                            out = ""
                            keys = [0x02, 0x03, 0x04, 0x00]
                            # Depois do calculo do primeiro valor, o 0x01 sempre aparece apenas uma vez dado o indice 0 no inicio do loop, ficou mais simples contar as chaves mais repetidas na lista
                            out += chr(ord(s[0]) ^ 0x01)
                            s = s[1:]

                            for i,c in enumerate(s):    
                            		k = keys[i % len(keys)]
                            		out += chr(ord(c) ^ k)

                            return out



                        print(decrypt(sys.argv[1]))

 

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...