Análise de Malware na Forense Computacional

 

As técnicas utilizadas na computação forense são imprescindíveis para identificar a invasão de um dispositivo, coletar material e preparar a prova de tal forma que possa ser utilizada em corte judicial, visto que invasão constitui crime.

Com a repercussão do caso da atriz Carolina Dieckmann, a Lei 12.737 de 2012 foi sancionada e entrou em vigor no dia 02 de abril de 2013, sendo chamada de “Lei Carolina Dieckmann”. Esta lei torna crime a invasão de aparelhos eletrônicos para obtenção de dados particulares, alterando o Código Penal Brasileiro acrescentando os artigos 154-A a 154-B, que estão dentre os crimes contra a liberdade individual, na seção que diz respeito aos crimes contra a inviolabilidade dos segredos profissionais.

Art 154-A. Invadir dispositivo informático alheio, conectado ou não à rede de computadores, mediante violação indevida de mecanismo de segurança e com fim de obter, adulterar ou destruir dados ou informações sem autorização expressa ou tácita do titular do dispositivo ou instalar vulnerabilidades para obter vantagem ilícita: Pena-detenção, de 3(três) meses a 1(um ano), e multa. § 1º Na mesma pena incorre quem produz, oferece, distribui, vende ou difunde dispositivo ou programa de computador com o intuito de permitir a prática da conduta definida no caput […] Art. 154-B. Nos crimes definidos no art. 154-A, somente se procede mediante representação, salvo se o crime for cometido contra a administração pública direta ou indireta de qualquer dos Poderes da União, Estados, Distrito Federal e Municípios ou contra empresas concessionárias de serviços públicos.”

DEFINIÇÃO DE MALWARE

Proveniente do inglês Malicious Software traduzido como Software Malicioso, contendo ameaças reais de vários tipos e propósitos, o termo Malware é um termo genérico que engloba todos os tipos de programas especificamente desenvolvidos para executar ações maliciosas em um dispositivo computacional.

ANÁLISE ESTÁTICA

Método de examinar um programa/código de computador sem executar o programa. Na análise estática é empregada a técnica de Engenharia Reversa, onde a engenharia reversa é o processo que envolve descompilar o código binário em uma linguagem assembly, ou ainda, na própria linguagem em que o programa foi escrito.

ANÁLISE DINÂMICA

Método de examinar um programa/código de computador enquanto o programa estiver em execução. Neste momento, o ambiente mais recomendado para a análise é o em uma máquina virtual, preferencialmente sem acesso à rede e criando Snapshots, ou seja, criando cópias do estado da máquina para executar o malware, caso ele danifique a máquina, bastaria excluir o Snapshot e criar outro.

Na análise dinâmica é avaliado o comportamento do Malware, visto que, ao coloca-lo em execução pode-se observar as ações por ele executadas. Neste momento podemos extrair dump de memória, analisar tráfego de rede, ações executadas no disco, injeção de código, etc…

ANÁLISE DE MEMÓRIA

Método de examinar a memória de um computador após a execução do programa suspeito. A análise dar-se-á sempre em um dump de memória que deverá ser extraído do computador infectado, obedecendo a ordem de volatilidade, ou seja, por ser um item volátil, a memória deverá ser a primeira aquisição em um caso.

Na análise de memória é possível obter diversas informações importantes como, conexões estabelecidas, processos executados, chaves de criptografia, hashes, senhas, enfim, muitos artefatos interessantes, inclusive é possível obter o dump do programa malicioso para análise estática.

ROTEIRO DA ANÁLISE

Para efetuar a análise de malware é importante ter algum método de execução do trabalho, para analisar o malware deste artigo, serão seguidas as etapas abaixo.

Preparação do ambiente – Existem diversas ferramentas e distribuições pronta para efetuar a análise de malware, com Remnux (Linux) e Flare-VM (uma suíte de aplicativos para Windows). O ambiente deverá ser isolado e controlado, para evitar a contaminação de outros computadores na rede, para isso pode ser utilizado o método de virtualização que pode ser com Hyper-V, VirtualBox, VMWare, entre outros.

É interessante preparar o ambiente de acordo com o desenvolvimento do malware, ou seja, se foi desenvolvido para Windows, então o ambiente propício será o Windows, principalmente para analisar o comportamento na análise dinâmica.

Antecedentes – É aqui que você pode registrar informações contextuais básicas, como a data em que o arquivo foi descoberto, por que foi chamado ao conhecimento do analista (por exemplo, alerta IDS) sua localização na rede e dados de registro de data e hora.

Análise Estática – À medida que você aprende tudo o que puder sobre uma amostra sem executá-la, registre suas observações aqui. Além das características do arquivo, você também pode documentar qualquer pesquisa de código aberto realizada usando informações como o hash de arquivo ou referências de string.

Análise Dinâmica (Comportamental) – Registre qualquer artefato de sistema de arquivos, rede ou memória nesta seção. Certifique-se de considerar e documentar as dependências que afetam o comportamento; Por exemplo, o malware pode exigir que um determinado navegador seja lançado para executar sua atividade. As amostras também podem depender de privilégios escalados ou serem acionadas somente após as reinicializações. É importante realizar testes iterativos para descobrir essas dependências.

Análise de Código – Quando é necessário desmontar código e depurar sua execução, detalhe seu fluxo e observações aqui. O nível de esforço necessário para executar uma análise de código útil pode variar muito entre as amostras. A incorporação de pistas da análise estática e comportamental e o foco nas principais funcionalidades podem ajudar a acelerar esse processo.

Resumo de análise – À medida que você realiza uma análise técnica profunda para provar ou refutar suas teorias sobre uma amostra, é útil documentar as principais descobertas da análise em uma seção separada para destacar as descobertas e resumir seu trabalho. Esta seção é particularmente útil quando o gerenciamento solicita uma atualização improvisada.

EFETUANDO A ANÁLISE

Foi preparada uma máquina virtual no VMware como o Sistema Operacional Windows 7, nele foi instalada a suíte de aplicativos contidos no Flare-VM script da Fireeye.

FLARE VM é uma distribuição de segurança baseada em Windows de fonte aberta e de acesso livre projetada para engenheiros reversos, analistas de malware, respondentes de incidentes, analistas forenses e pentesters. Inspirado por distribuições de segurança baseadas em Linux de código aberto como Kali Linux, REMnux e outras, o FLARE VM oferece uma plataforma totalmente configurada com uma coleção abrangente de ferramentas de segurança do Windows, como depuradores, desmontadores, descompiladores, utilitários de análise estática e dinâmica, análise de rede e manipulação, avaliação da Web, exploração, aplicativos de avaliação de vulnerabilidades e muitos outros.

A distribuição também inclui as ferramentas de análise de malware públicas da equipe do FLARE, como FLOSS e FakeNet-NG. Detalhes da instalação do FLARE VM podem ser vistos neste site: https://www.fireeye.com/blog/threat-research/2017/07/flare-vm-the-windows-malware.html.

O malware analisado trata-se de um arquivo disfarçado de crack para um jogo de computador, o arquivo em questão é definido como PQR Script 3.3.5 e é encontrado livremente na internet. Para testar foi baixado um arquivo compactado nomeado como “PQR 3.3.5 + Scripts.rar”, foi feito o download diretamente na máquina virtual com o FLARE VM.

Após descompactado temos os arquivos conforme imagem abaixo:

O arquivo PriorityQueueRotation.exe é o executável que precisa ser analisado, para isso será efetuado primeiro o procedimento de análise estática, para após partir para a análise dinâmica e analisar o comportamento do mesmo. Com o comando Strings, podemos extrair o maior número de informações possíveis em texto plano, na imagem a seguir podemos observar que foi extraído o tamanho (Size: 308224) e o Hash MD5.

Os detalhes mais interessantes sobre o arquivo podem ser vistos ao final do resultado do comando Strings, os pontos de atenção ficam para as instruções sublinhadas, o endereço de conexão com o duckdns.org e a porta de conexão é a 1177.

Comandos executados:

netsh firewall delete allowedprogram

Software

cmd.exe /c ping 0 -n 2 & del

SEE_MASK_NOZONECHECKS

netsh firewall add allowedprogram

Persistência na chave de registro:

Software\Microsoft\Windows\CurrentVersion\Run

DNS:

pqrwow.duckdns.org

Porta de conexão:

1177

Na imagem a seguir podemos observar os detalhes:

Após enviar o arquivo para análise no virustotal, podemos obter novas informações que indicam que o arquivo trata-se de um trojan. Observe na imagem abaixo.

Com o auxílio do CFF Explorer podemos obter mais informações sobre o arquivo, inclusive a data de modificação, a qual nos indica a possível data de última modificação do arquivo no computador do atacante antes de disponibilizar na internet. Também é importante observar a plataforma de desenvolvimento Microsoft Visual Studio .NET.

Com base na informação de que o arquivo foi codificado utilizando o Visual Studio, e o tipo é Portable Executable 32 .NET Assembly, podemos deduzir que a análise do código fonte pode ser feita por meio do programa dnSpy, que irá decompilar o executável para exibir o código fonte. A técnica de engenharia reversa (mais sobre engenharia reversa em .NET pode ser encontrado neste livro de minha autoria: Dot Net Engenharia Reversa E O Software Seguro é empregada neste momento, podemos observa os detalhes abaixo:

Algumas classes são observadas no arquivo, que ao ser carregado no dnSpy se apresenta como “j.exe”, ainda é possível observar na imagem que o programa contém as classes Akl e OK. Vamos observar a classe OK. Observe na imagem abaixo as variáveis globais:

Ao pesquisar por trechos do código fonte no google, foi possível identificar que o trojan foi gerado pelo NjRAT, programa de acesso remoto que permite a criação de novos executáveis personalizados para acesso remoto das vítimas. O NjRAT ainda permite o controle de webcam, transferência de arquivos, keylogger, screenshots, entre outras funcionalidades.

Partindo para a análise dinâmica, podemos observar o comportamento do programa malicioso ao ser executado. Neste momento é necessário garantir que a placa de rede esteja em modo Host Only, para simular a comunicação foi utilizado o programa FakeNet-NG e os pacotes analisados com o Wireshark.

Com o auxílio do programa SysAnalyzer, logo observamos que o malware efetua a injeção de código nos processos “explorer.exe” e “iexplorer.exe”, processos padrão do Windows. Conforme mostrado na imagem a seguir:

Outro ponto de atenção vai para o “svchost.exe” com o PID 3756 e porta 1304, no entanto não foi analisado.

No Wireshark podemos observar logo nas primeiras linhas a comunicação do Malware com o servidor via DNS para resolução do nome, bem como a porta 1177 como vimos declarada na análise estática:

Em Follow TCP Stream temos toda troca de informação do Malware com o servidor malicioso, que neste caso foi emulado pelo Fakenet-NG.

Nota-se que o tráfego está sendo criptografado, possivelmente para não identificar os comandos executados. Entretanto, como pôde ser visto na análise estática, o Malware não havia sido ofuscado sendo possível obter o seu código fonte, sendo assim, com um pouco mais de tempo e dedicação, é possível usar o mesmo código para obter em texto plano a comunicação, usando o método de criptografia do próprio Malware como aliado.

Com o auxílio do dnSpy, é possível ainda executar o programa em modo debug e colocar um breakpoint no local onde os comandos são enviados e recebidos, assim fica ainda mais fácil obter a informação correta. Ainda com o auxílio do dnSpy e as técnicas de Engenharia Reversa aprendidas no livro Dot Net Engenharia Reversa E O Software Seguro, é possível alterar o código do Malware para gerar logs com os comandos ou ainda aplicar algum tipo de contra-ataque injetando código.

CONCLUSÃO

Ao efetuar uma análise de malware podemos obter diversas informações importantes sobre um determinado meio de invasão. Ao obter informações de destino das informações, é possível então por meios jurídicos e tecnológicos obter até o endereço físico do criminoso.

Com o apoio da Engenharia Reversa foi possível extrair um número interessante de informações sobre o Malware, além de obter inclusive o código fonte do mesmo. Neste momento também é notória a utilidade do Flare VM que com sua suíte de aplicativos facilitou muito a análise.

O procedimento de Análise de Malware mostrou-se muito eficiente na elucidação do caso e é muito útil na Forense Digital, além de ser aplicado automaticamente por softwares antivírus.

REFERÊNCIAS

KACHERGINSKY, Peter. FLARE VM: The Windows Malware Analysis Distribution You’ve Always Needed!. Disponível em: <https://www.fireeye.com/blog/threat-research/2017/07/flare-vm-the-windows-malware.html>. Acesso em 01/03/2019.

LOPES, Petter Anderson. Dot Net Engenharia Reversa E O Software Seguro. 2018.

LOPES, Petter Anderson. Engenharia Reversa e Injeção de Código, manipulando DOT NET. Disponível em: <https://periciacomputacional.com/ engenharia-reversa-e-injecao-de-codigo-dot-net>. Acesso em 01/03/2019.