Administradores Fernando Mercês Postado Dezembro 15, 2018 em 18:03 Administradores Compartilhar Postado Dezembro 15, 2018 em 18:03 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 More sharing options...
Thiago de Queiroz Postado Dezembro 17, 2018 em 13:56 Compartilhar Postado Dezembro 17, 2018 em 13:56 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 More sharing options...
Aof Postado Dezembro 17, 2018 em 14:13 Compartilhar Postado Dezembro 17, 2018 em 14:13 Agora sim, com essa tag Spoiler ficou melhor pra todos. vlw Link para o comentário Compartilhar em outros sites More sharing options...
Aof Postado Dezembro 17, 2018 em 14:18 Compartilhar Postado Dezembro 17, 2018 em 14:18 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 More sharing options...
Thiago de Queiroz Postado Dezembro 17, 2018 em 15:46 Compartilhar Postado Dezembro 17, 2018 em 15:46 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 More sharing options...
Aof Postado Dezembro 17, 2018 em 15:50 Compartilhar Postado Dezembro 17, 2018 em 15:50 @Thiago de Queiroz tudo bem, só é pra mante a analise bem organizada. abraco. Link para o comentário Compartilhar em outros sites More sharing options...
Aof Postado Dezembro 17, 2018 em 15:53 Compartilhar Postado Dezembro 17, 2018 em 15:53 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 para o comentário Compartilhar em outros sites More sharing options...
Prog Postado Dezembro 17, 2018 em 16:03 Compartilhar Postado Dezembro 17, 2018 em 16:03 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 para o comentário Compartilhar em outros sites More sharing options...
Administradores Fernando Mercês Postado Dezembro 17, 2018 em 16:48 Autor Administradores Compartilhar Postado Dezembro 17, 2018 em 16:48 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 para o comentário Compartilhar em outros sites More sharing options...
rcimatti Postado Dezembro 19, 2018 em 20:23 Compartilhar Postado Dezembro 19, 2018 em 20:23 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 More sharing options...
Apoiador Nibble Euler Neto Postado Dezembro 23, 2018 em 20:36 Apoiador Nibble Compartilhar Postado Dezembro 23, 2018 em 20:36 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 More sharing options...
Apoiador Nibble anderson_leite Postado Dezembro 30, 2018 em 16:57 Apoiador Nibble Compartilhar Postado Dezembro 30, 2018 em 16:57 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 More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.