Fernando Mercês Posted December 15, 2018 at 06:03 PM Share Posted December 15, 2018 at 06:03 PM 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 to comment Share on other sites More sharing options...
Thiago de Queiroz Posted December 17, 2018 at 01:56 PM Share Posted December 17, 2018 at 01:56 PM 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 to comment Share on other sites More sharing options...
Aof Posted December 17, 2018 at 02:13 PM Share Posted December 17, 2018 at 02:13 PM Agora sim, com essa tag Spoiler ficou melhor pra todos. vlw Link to comment Share on other sites More sharing options...
Aof Posted December 17, 2018 at 02:18 PM Share Posted December 17, 2018 at 02:18 PM 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 to comment Share on other sites More sharing options...
Thiago de Queiroz Posted December 17, 2018 at 03:46 PM Share Posted December 17, 2018 at 03:46 PM 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 to comment Share on other sites More sharing options...
Aof Posted December 17, 2018 at 03:50 PM Share Posted December 17, 2018 at 03:50 PM @Thiago de Queiroz tudo bem, só é pra mante a analise bem organizada. abraco. Link to comment Share on other sites More sharing options...
Aof Posted December 17, 2018 at 03:53 PM Share Posted December 17, 2018 at 03:53 PM Spoiler C:\Program Files\Oracle\VirtualBox Guest Additions\DIFxAPI.dll C:\windows\System32\Drivers\Vmmouse.sys interessante @Fernando Mercês nem tinha visto essas verificações de anti-VM. heheh ta ficando cada vez mais interessante a saga AnalyseMe Link to comment Share on other sites More sharing options...
Prog Posted December 17, 2018 at 04:03 PM Share Posted December 17, 2018 at 04:03 PM Spoiler Tipo de arquivo: PE EXE Compilador/linguagem: Visual C++ (2017) (Debug) Protector/packer: Nenhum SHA-256: 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f(eicar.com), c704af52eeabac166822ddb77000528213ceae5402c34a8443006992ecc46b49 (AnalyseMe-03.exe) 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) 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) 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) 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) O que o binário faz em linhas gerais: Baixa um arquivo virus de teste e esconde na maquina. O que foi modificado no sistema: o arquivo baixado é salvo em TEMPPATH\payload.exe (Temp path = pasta temporaria) Acho que é isso! ? Link to comment Share on other sites More sharing options...
Fernando Mercês Posted December 17, 2018 at 04:48 PM Author Share Posted December 17, 2018 at 04:48 PM Valeu, galera. Muito legais as análises! Alguém analisou a função que decripta as strings? Conseguiriam fazer, em Python ou em qualquer outra linguagem de programação, um decrypter? ? Abraços, Fernando Link to comment Share on other sites More sharing options...
rcimatti Posted December 19, 2018 at 08:23 PM Share Posted December 19, 2018 at 08:23 PM 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 to comment Share on other sites More sharing options...
Supporter - Nibble Euler Neto Posted December 23, 2018 at 08:36 PM Supporter - Nibble Share Posted December 23, 2018 at 08:36 PM 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 to comment Share on other sites More sharing options...
Supporter - Nibble anderson_leite Posted December 30, 2018 at 04:57 PM Supporter - Nibble Share Posted December 30, 2018 at 04:57 PM 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 to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.