How to Reverse Engineer Go Binaries - GoLang Malware Analysis
Introdução
Visão geral da seção: Nesta seção, o palestrante apresenta a linguagem de programação Go e explica como ela é usada para criar binários maiores que os escritos em C.
Comparação entre binários em C e Go
- Um arquivo "Hello World" escrito em C tem um tamanho de 16 KB, enquanto um escrito em Go tem 2 MB.
- O binário Go inclui todas as bibliotecas necessárias, tornando-o mais fácil de usar, mas também muito maior.
- Binários escritos em Go são normalmente menores quando são "stripped", ou seja, quando informações desnecessárias são removidas.
Recuperação de informações de binários Go
Visão geral da seção: Nesta seção, o palestrante explica como recuperar informações perdidas ao analisar um binário Go.
Identificando funções dentro do binário
- As strings dentro do binário podem indicar quais funções estão sendo usadas.
- Ao abrir o arquivo no Ida Pro, muitas funções não têm nomes associados a elas.
- Isso ocorre porque o arquivo está "stripped".
Usando scripts para recuperar informações
- O palestrante mostra um script que pode ser usado para extrair informações sobre o arquivo.
- É possível renomear as funções usando outro script.
- Depois que as funções são renomeadas, o arquivo é muito mais fácil de ler e entender.
Reversão de binários Go
Visão geral da seção: Nesta seção, o palestrante explica como reverter um binário Go.
Usando Ghidra para reverter binários Go
- O palestrante mostra como usar Ghidra para reverter um binário Go.
- Ele usa um script que pode ser encontrado no GitHub para ajudar a identificar funções dentro do arquivo.
Usando Ida Pro para reverter binários Go
- O palestrante também mostra como usar Ida Pro para reverter um binário Go.
- Ele usa outro script que pode ser encontrado no GitHub para ajudar a identificar funções dentro do arquivo.
Recuperação de Símbolos em Binários Go
Visão geral da seção: Nesta seção, o palestrante apresenta como recuperar símbolos de binários Go.
Executando o arquivo e obtendo informações
- Use a ferramenta "goraysim" para extrair informações do arquivo binário Go. As flags recomendadas são "-tacti" para recuperar nomes de tipos, "-TacD" para obter nomes de pacotes Go e "-typeP" para obter os caminhos dos arquivos de entrada.
- O resultado será um arquivo JSON com todas as informações sobre o binário.
Importando informações no IDA Decompiler
- Use o script "goraysimrename.py" dentro do IDA Decompiler para importar as informações do arquivo JSON gerado pelo goraysim.
- Selecione o arquivo JSON na janela que abrirá após clicar em "Script file".
- Aguarde até que todas as funções tenham sido renomeadas corretamente.
- Analise as funções renomeadas no lado esquerdo da tela.
Importando informações no Ghidra
- Use os scripts fornecidos pelo palestrante (recovery function names, finding static strings, finding dynamic strings) dentro do Ghidra.
- Execute todos os scripts selecionando-os e aguardando a conclusão.
- Analise as funções renomeadas no lado esquerdo da tela.
Conclusão
Visão geral da seção: Nesta seção, o palestrante conclui a apresentação.
- A recuperação de símbolos em binários Go pode ser feita com as ferramentas goraysim e Ghidra.
- A importação das informações no IDA Decompiler e no Ghidra permite uma análise mais fácil e eficiente do binário.
- O palestrante recomenda o site guidedhacking.com para mais informações sobre hacking de jogos.
Transforme qualquer vídeo em um resumo como este
Vídeos do YouTube, reuniões, aulas — com transcrição, busca e chat.