O IDA (Interactive Disassembler, em inglês) é uma ferramenta muito poderosa para a análise estática de malware. A ferramenta também pode ser configurada para realizar debugging dos executáveis ​​que pretendemos analisar, embora muitos não o utilizem dessa maneira, seja por desconhecimento ou por não saber como configurá-lo corretamente. Hoje vamos ver os passos necessários para esse processo.

Requisitos

  • Um computador com o IDA instalado. Em nossos exemplos, será uma máquina virtual com o Windows 7.
  • Um computador onde o malware será executado. Nós também usaremos outra VM.
  • Que ambos computadores se vejam entre si.
  • Que nos dois computadores exista uma cópia do malware que se pretende analisar.

Cópia do debugger

A primeira etapa consiste em copiar o debugger que vem com o IDA para o computador em que o malware será executado. Para fazer isso, vamos para a pasta em que temos o IDA instalado e, em seguida, para o diretório dbgsrv. Uma vez lá, devemos escolher o debugger correspondente. No nosso caso, será o win32_remote.exe, uma vez que vamos analisar um executável do Windows de 32 bits.

Depois que o debugger é copiado para o outro computador, devemos executá-lo e anotar o endereço IP. Além disso, é fundamental observar o caminho completo onde o malware está no computador de debugging.

Configuração

Novamente no computador de análise estática, abrimos a amostra com o IDA. Na barra de ferramentas, mudamos de “No debugger” para Remote Windows debugger”. Então, no menu Debugger, vamos para Process options.

Nesse momento, concluímos o caminho para o arquivo executável no computador remoto e o endereço IP que anotamos. Em seguida, colocamos breakpoint em algum lugar no código com a tecla F2 e iniciamos o processo de debugging com a tecla F9 (ou com o botão verde, play).

Como debuggear uma DLL

O processo para uma DLL é o mesmo, mas devemos ter em conta que na realidade não vamos debuggear a DLL, se não o programa rundll32.exe. Devemos encontrar o caminho para o rundll32.exe no computador remoto e escolher o export que queremos executar a partir da DLL, seja por nome ou por ordinal.

Se não queremos começar com nenhum export em particular e estamos interessados ​​em parar no Entry Point, podemos escolher o zero ordinal (# 0). Colocando um breakpoint no Entry Point da DLL, o IDA é inteligente o suficiente para fazer o mapeamento do endereço. No entanto, se isso não ocorrer em versões mais antigas do IDA, você deve ir para Debugger > Debugger options e selecionar a opção Suspend on library load/unload. Em seguida, avançamos com F9 até que a DLL maliciosa seja carregada na memória e colocamos o ponto de interrupção onde nos interesse.