Por Pedro Barreto Pesquisador e Incident Responder da Real Protect

Introdução

Após um dos nossos clientes reportar o comportamento suspeito em um dos seus computadores, constatamos que ele havia sido infectado por um malware cujo objetivo é realizar ataques de brute force nos serviços HTTP, SSH, FTP e MySQL (figura 1), em alvos aleatórios da internet.

Figura 1 - logs que demonstram o comportamento relatado na notificação

Figura 1 – logs que demonstram o comportamento relatado na notificação

 

A partir dessas informações foi solicitado o isolamento da máquina da rede corporativa para viabilizar a investigação. Durante o acesso ao computador foi possível identificar a ameaça responsável pelas ações reportadas, a causa raiz da infecção e seu vetor de entrada. Ainda durante o acesso, o malware foi coletado para uma análise mais detalhada.

Vetor da infecção

Antes de falar do malware em si é importante falarmos um pouco sobre o vetor da infecção. A ameaça chegou na estação através de download, no momento que o colaborador acessou um website legítimo em WordPress, porém comprometido. Sem desconfiar dos riscos, a vítima foi solicitada a atualizar o java e após iniciar a suposta atualização foi direcionada para o download de um executável hospedado no Google Drive (figura 2).

Figura 2 - website comprometido direcionando o download para o Google Drive

Figura 2 – website comprometido direcionando o download para o Google Drive

 

O arquivo baixado nada mais é que um dropper, tipo de malware que nem sempre executa ações maliciosas, sua essência é instalar/baixar/executar outros códigos, que de fato possuem as rotinas que causam algum tipo de dano.

Ainda sobre ele, verificamos que durante sua execução é exibida uma tela idêntica à de instalação do java, que começa baixando o Python e diversos módulos que serão utilizados posteriormente, em seguida adiciona persistência (auto inicialização) e reinicia o computador para então entrar em atividade.

Outra informação interessante sobre o dropper é que, mesmo após quase 30 dias depois da sua descoberta, permanecia com uma baixa taxa de detecção da maioria dos antivírus de mercado (figura 3).

Figura 3 - baixa taxa de detecção do dropper

Figura 3 – baixa taxa de detecção do dropper

Análise do malware

Inicialmente verificamos que trata-se de uma ameaça simples, pois cria persistência através de uma chave de registro comum, nomeada “Update Checker”, onde utiliza o interpretador do Python para executar um script nomeado worker.pyw (figura 4) associado a uma URL específica do C&C. Ainda sobre o worker.pyw, seu código não possui rotina maliciosa e além do seu conteúdo não ser ofuscado, o tráfego gerado é em clear text.

Figura 4 - conteúdo do script worker.pyw

Figura 4 – conteúdo do script worker.pyw

 

O objetivo deste script é simples, ele gera um identificador com base na string “valent” mais outro valor referente à semana atual do ano, depois gera o MD5 dessa junção e pega os seus 16 primeiros caracteres. Este resultado é usado para compor uma URL que será acessada para pegar um segundo código (figuras 5 e 6).

Figura 5 - resultado da URL acessada contendo o conteúdo do segundo código

Figura 5 – resultado da URL acessada contendo o conteúdo do segundo código

 

Figura 6 - segundo código mais legível

Figura 6 – segundo código mais legível

 

O segundo código tem a mesma finalidade do script worker.pyw, que é montar uma URL para ser acessada, desta vez fazendo com que o C&C retorne um terceiro código para ser executado (figura 7), contendo de fato as instruções maliciosas (figura 8).

Figura 7 - momento do recebimento do terceiro código

Figura 7 – momento do recebimento do terceiro código

 

Figura 8 - terceiro código mais legível

Figura 8 – terceiro código mais legível

 

Podemos observar que ele é bem mais extenso que os demais e carrega diversos módulos do Python que também não eram carregados nos scripts anteriores (figura 8), por exemplo:

  • os, warnings, socket, re, platform, subprocess, pip, multiprocessing (!), ftp;

E mais alguns outros que não aparecem na imagem, como o MySQLdb e urllib.parse, além de instalar o ssh2-python (figura 9).

Figura 9 - carregamento de módulos e instalação do ssh2-python

Figura 9 – carregamento de módulos e instalação do ssh2-python

 

A partir das informações verificadas até o momento conseguimos ver que este último código é o responsável pelas ações maliciosas, ou pelo menos boa parte delas. Outra informação interessante é que há diversos comentários em português (figura 10), podendo indicar ser um malware brasileiro. Esta última informação é reforçada pelo fato dos alvos serem domínios brasileiros em sua grande maioria.

Algumas funções declaradas no código:

  • loadFile: em algum momento foi utilizada para ler uma lista de alvos, mas a referência a ela está comentada;
  • getPureDomain: trata os domínios da lista de alvos, ele remove o “http://” e “/” transformando “http://exemplo.com/” em somente “exemplo.com”. Este artifício é usado em outras funções que testa serviços como SSH, FTP, MySQL e CPanel.
  • isSimilarHashes: compara hashes;
  • checkMySQL: testa login em possíveis servidores MySQL;
  • checkCPanel: testa login em possíveis domínios que usem o CPanel;
  • checkGeneric: testa login genéricas páginas de autenticação genéricas;
  • checkWP: testa login em páginas de administração do WordPress;
  • checkSSH: testa login em possíveis servidores SSH;
  • checkFTP: testa login em possíveis servidores FTP;
  • isWP: verifica se a página em questão utiliza WordPress;
  • work: Executa as funções de brute force CheckMySQL, CheckCPanel, etc (figura 10);
Figura 10 - função responsável pelo brute force

Figura 10 – função responsável pelo brute force

 

  • get_unique_id: consulta o UUID da máquina e com base nele gera um identificador customizado;
  • check_arg: formata informações da máquina infectada para enviar para o C&C, incluindo o resultado da função “get_unique_id”;
  • main: aqui vemos de forma mais contextualizada as ações do malware, onde:
    1. Entra em repetição enquanto tiver um identificador customizado válido e monta uma URL (figura 11), que será usada para pegar a lista de alvos no servidor C&C (figura 12);

 

Figura 11 - trecho que o malware solicita os alvos para o C&C

Figura 11 – trecho que o malware solicita os alvos para o C&C

 

Figura 12 - malware passa as informações para o C&C

Figura 12 – malware passa as informações para o C&C

 

  1. Cada GET nesta URL solicita um bloco de alvos diferente, que são identificados por um ID (targets_ok), conforme respostas às solicitações (figuras 13 e 14);
Figura 13 - resposta do C&C com a lista de alvos, "target_ok" igual a 103789

Figura 13 – resposta do C&C com a lista de alvos, “target_ok” igual a 103789

 

Figura 14 - resposta do C&C com a lista de alvos, "target_ok "igual a 119187

Figura 14 – resposta do C&C com a lista de alvos, “target_ok” igual a 119187

 

Figura 15 - momento do recebimento da lista de alvos

Figura 15 – momento do recebimento da lista de alvos

 

  1. Em seguida, a lista é tratada e usada na função descrita anteriormente, “work”, para execução das ações maliciosas (figura 16);
Figura 16 - trecho em que a lista de alvos é passada para a função "work"

Figura 16 – trecho em que a lista de alvos é passada para a função “work”

  1. Uma vez que o malware consegue pegar a lista de alvos válida no C&C, continuará atacando os serviços descritos no documento (figuras 17 e 18);
  • WordPress
Figura 17 - tentativa de login no WordPress

Figura 17 – tentativa de login no WordPress

  • FTP
Figura 18 - tentativa de login em servidor FTP

Figura 18 – tentativa de login em servidor FTP

IOC’s

Dropper:

  • Nome: jre-9u-205-windows-x64.exe
  • Tamanho: 2 MB
  • SHA256: 8B95633341362D11041DF0393E8C6A004DBA1EA8EC4F7399B93052A9798EDFDF

Script usado na persistência:

  • Nome: worker.pyw
  • Tamanho: 294 bytes
  • SHA256: E9D73FFABCFDA7F549BF3AB4DCF75865537DA391DE104E04378D0F84A851145C

Domínios de C&C:

  • *.sytes.net:8080/valent/curpy/*
  • hopto.org:8080/*

 

Conclusão

Como podemos observar, o computador infectado funciona como um bot e pode mudar suas ações conforme as instruções passadas pelo servidor de C&C. Caso o malware infecte ambientes de empresas, o comportamento da ameaça poderá negativar a reputação do IP corporativo, causando impacto ao negócio, uma vez que diversas soluções de segurança de perímetro, por exemplo, consultam backlists e bloqueiam qualquer tráfego com IP’s que constem nestas listas.

Podemos concluir também que não se trata de um ameaça direcionada a um nicho de mercado e que o provável propósito do atacante é usar infraestrutura de terceiros para obter acessos privilegiados em sistemas que estejam mal configurados e possuem senhas fracas, usando tais informações para obter ganho financeiro, seja na venda das informações no mercado negro ou extorsão de empresas através de data leak.

Recomendações

Especificamente para este caso, recomendamos algumas ações básicas para prevenir o comprometimento do ambiente:

Perímetro

  1. Configuração de políticas de bloqueio de sites categorizados como maliciosos no filtro web;
  2. Bloqueio do download de executáveis;

Endpoint

  1. Garantir que o antivírus esteja instalado e atualizado;
    1. Ideal que a solução tenha módulos de reputação de URL, behavior monitor e machine learning. São mais opções de camadas de detecção e bloqueio de códigos maliciosos.
  2. Garantir que o HIPS esteja instalado atualizado;
  3. Garantir que o AppControl esteja instalado e com regras restritivas e alinhadas ao negócio;

Políticas

  1. Garantir as políticas de segurança, utilização dos equipamentos corporativos e de acesso à internet sejam disseminadas periodicamente;
  2. Realizar campanhas de conscientização de usuário para segurança da informação periodicamente;

 

No geral, é imprescindível investir em prevenção, seja na aquisição de soluções de segurança, quanto na realização de hardening, patch management, criação de rotinas proativas de revisão de configuração e boas práticas para administração das soluções.

Além disso, é importante fazer um monitoramento de segurança contínuo, criar/atualizar controles, ter equipes especializadas em Threat Hunting e na Resposta a Incidentes de Segurança. Estas ações reduzem significativamente o número de incidentes mais complexos, reduzem custo com recuperação de incidentes e principalmente o impacto ao negócio.