A evolução do Malware Brasileiro

Contenidos

Introdução

O malware Brasileiro continua evoluindo dia a dia, os tornando cada vez mais sofisticados. Se você deseja saber como os variados programas maliciosos funcionam hoje em dia, você pode ir para a seção correspondente aqui. Porém, antes disso, gostaríamos de mostrar comos as técnicas usadas pelos cibercriminisos Brasileiros mudaram, se tornando mais avançadas e cada vez mais complexos.

Dando uma olhada de uma maneira mais ampla nós podemos ver que os autores estão aperfeiçoando suas técnicas para aumentar o tempo de vida do malware assim como o seu lucro.

Algum tempo atrás, analisar e detector malware Brasileiro era algo que poderia ser feito de uma maneira bem rápida devido a nenhuma obfuscação, nenhuma técnica anti-debugging , nenhuma criptografia, comunicação somente em plain-text, etc. O código costumava ser escrito em Delphi e Visual Basic 6, com várias imágens grandes incluídas no binário tonando-o muito grande assim como tratamentos de exceções muito ruins onde era bem comum os processos pararem de funcionar.

Hoje em dia, o cenário não é o mesmo; os atacantes estão investindo tempo e dinheiro para desenvolver soluções onde o payload malicioso fica completamente escondido abaixo de várias obfuscações e proteções de código. Eles continuam utilizando Delphi e VB mas também começaram a adotar outras linguagens como .NET e a qualidade do código está muito melhor, deixando claro que eles passaram para um outro nível.

Vamos passer por algumas amostras mostrando as diferenças entre o que costumávamos encontrar alguns anos atrás e as ameaças sendo entregues nos dias de hoje.

O que costumávamos encontrar

Keylogger

No início, as primeiras amostras utilizadas para roubar informação bancária dos usuários foram simples keyloggers, muitos deles utilizando códigos disponíveis publicamente com pequenas customizações a fim de capturar somente ações específicas. Isto foi suficiente nesta época já que os sites de bancos não utilizavam nenhum tipo de proteção contra esta ameaça.

A evolução do Malware Brasileiro

Código fonte de um keylogger disponível publicamente

A evolução do Malware Brasileiro

Código implementado no binário malicioso

O código era bem simples; apenas utilizava a função GetAsyncKeyState para verificar o estado de cada tecla e então logar como necessário. A maioria dos keyloggers não utilizavam nenhum tipo de obfuscação para esconder os alvos, o que ajudava a identificação destes ataques.

malware_evo_sp_3

Strings em plaintext utilizadas para identificar a navegação

Phishing Trojan

Após os bancos introduzirem o teclado virtual em seus sistemas, os uso de keyloggers não era mais tão efetivo. Para burlar estas proteções, os criminosos Brasileiros começaram a desenvolver mouselogger e mais tarde os Phishing Trojans.

Este tipo de malware utilizava DDE (Dynamic Data Exchange) para capturar a URL sendo acessada no browser; este método continua funcionando hoje em dia porém muitos dos programas maliciosos atualizaram seus códigos para utilizer OLE Automation ao invés de DDE já que este oferece opções mais avançadas.

malware_evo_sp_4

Código utilizando DDE para capturar a URL acessada

Após capturar a URL acessada o malware então verifica se a URL está na lista dos alvos especificados. Se encontrado, o malware exibirá uma janela de phishing solicitando os dados bancários.

malware_evo_sp_5

Phishing Trojan sendo exibido na janela do Internet Explorer

Neste ponto o malware não utilizava nenhum tipo de codificação ou encriptação – todas as strings estavam em plaintext facilitando a análise.

malware_evo_sp_6

Strings do malware sem nenhuma criptografia/codificação

A informação roubada é então enviada ao atacante por email.

malware_evo_sp_7

Email com as informações roubadas

Hosts

A fim de roubar as informações de uma maneira não tão simples de identificar como o Phishing Trojan eles começaram a redirecionar os usuários para páginas de maliciosas através da alteração do arquivo de hosts para resolver os domínios dos bancos para servidores especificados pelos atacantes. Desta maneira, o ataque seria muito mais transparente ao usuário aumentando as chances de um ataque com sucesso.

malware_evo_sp_8

Dados inseridos no arquivo de hosts a fim de redirecionar o acesso

malware_evo_sp_9

Código utilizado para escrever os dados no arquivo de hosts

Este tipo de ataque foi muito efetivo na época, enquanto nem todas as empresas de anti-malware eram capazes de identificar e bloqueá-los. Nós ainda encontramos algumas amostras utilizando modificação do arquivo de hosts porém não são mais tão efetivos.

Anti-rootkit

Nesta etapa eles entenderam que as soluções anti-malware e proteções de segurança utilizada pelos bancos estavam tornando seu trabalho mais difícil. Eles então começaram a aplicar seus esforços em remover as soluções de segurança antes de executar o payload malicioso a fim de aumentar as chances de uma execução com sucesso e se manter executando na máquina infectada por mais tempo.

Nada poderia ser melhor do que utilizar ferramentas de linha de comando conhecidas que já possuem capacidade de realizar estas ações – e muitas delas já na base de arquivos confiáveis.

  • RegRun Partizan

Esta ferramenta é um arquivo Native Executable que executa na inicialização do sistema antes do subsistema Win32 inicializar. Ela é capaz de deletar arquivos e chaves de registros mesmo que protegidos por Kernel mode drivers, pois é executado antes que os drivers sejam carregados pelo sistema. Os comandos que devem ser executados são especificados nos arquivos .RRI como exibido abaixo.

malware_evo_sp_10

Script RRI do Partizan com a lista de arquivos para remover

  • The Avenger

Um driver do Windows projetado para remover arquivos e chaves de registro persistentes. Os comandos que serão executados no sistema são escritos no script que será carregado pelo driver assim que for inicializado.

malware_evo_sp_11

Interface do The Avenger e o script para remover soluções de segurança

  • Gmer

Gmer é um famoso detector e removedor de rootkit que possui diversas funcionalidades para detectar atividades de rootkit no sistema assim como remover arquivos utilizando seu próprio device driver. Como possui uma interface de linha de comando, é bem simples utiliza-lo para remover arquivos protegidos.

malware_evo_sp_12

Arquivo BAT utilizando a função killfile do GMER para remover soluções de segurança

Mais detalhes sobre Trojans bancários utilizando GMER para desinstalar software de segurança pode ser encontrado em um blogpost separado.

Bootloader Malicioso

Após utilizar anti-rootkits os cibercriminosos Brasileiros foram mais a fundo e começaram a desenvolver seus próprios bootloaders, adaptados exclusivamente para remover as soluções de segurança da maquina do usuário. O downloader tem a função de instalar os arquivos maliciosos e então reiniciar a máquina. Após a reinicialização o bootloader malicioso pode remover do sistema os arquivos desejados.

Basicamente, o malware substitui o NTLDR original, que é o bootloader para os sistemas baseados em Windows NT até o windows XP, para uma versão modificada do GRUB.

malware_evo_sp_13

GRUB loader modificado atuando como NTLDR

Este loader vai ler o arquivo menu.lst que aponta para os arquivos maliciosos xp-msantivirus e xp-msclean que já foram instalados no sistema.

malware_evo_sp_14

Arquivo menu.lst com os parâmetros para executar os comandos maliciosos

Assim que executado o malware vai remover os arquivos relacionados a soluções de segurança e então restaurar o arquivo NTLDR original que foi previamente renomeado para NTLDR.old.

malware_evo_sp_15

Comandos executados para remover os módulos de segurança e restaurar o NTLDR original

O que encontramos hoje em dia

Automação

A maioria dos bancos estavam utilizando identificação de máquina para evitar tentativas não autorizadas de realizar operações utilizando as informações roubadas. Para burlar isto os criminosos começaram a realizar as operações a partir da máquina infectada, utilizando Automação do Internet Explorer (também conhecido como Automação OLE) para interagir com o conteúdo da página.

As primeiras amostras utilizando este tipo de ataque foram os Browser Helper Objects (BHOs) que podiam detectar uma transação de transferência e então alterar a conta de destino, enviando o dinheiro para o criminoso ao invés do destinatário real.

Mais tarde, o mesmo método foi muito utilizado nos ataques a Boletos, onde eles utilizavam automação para capturar o código de barras digitado para então substituir pelo código fraudulento.

Como este método funciona apenas para o Internet Explorer, o malware precisa forçar o usuário a utilizar o internet banking por este browser. Portanto, ele implementa um timer que verifica se o Firefox ou Chrome está sendo utilizado e então mata o processo.

malware_evo_sp_16

Código para impedir o uso do Chrome e Firefox

Quando uma instância do IE é encontrada, o malware procura por uma aba para que seja possível ler o texto da janela e então saber qual URL está sendo acessada.

malware_evo_sp_17

Encontrando o handle da aba e obtendo a URL sendo acessada

malware_evo_sp_18

Busca por títulos de alvos específicos

Como a automação vai processar a estrutura da página, é necessário saber se a vítima está na página para informar os dados do Boleto. Ele instala um tratador para o evento OnDocumentComplete para coletar a URL complete assim que a página é carregada e então verificar se o usuário está na página alvo.

malware_evo_sp_19

Busca por páginas específicas

Após confirmar que o usuário está na página alvo, o malware vai processar a estrutura da página e instalar um evento para o botão de submit, com isso ele pode ter o controle da execução logo após o usuário submeter a página e então processar o conteúdo informado.

malware_evo_sp_20

Busca por um textbox específico e captura o texto infomado

Após coletar a informação, ela é processada e então alterada para o conteúdo malicioso antes da página ser enviada.

Para estas amostras nós encontramos obfuscação de string, detecção de debugger e detecção de máquina virtual assim como o método utilizado que não é tão simples de detectar como outros ataques envolvendo Phishing Trojan e Hosts.

Obfuscação de código e RunPE

Buscando novas maneiras de evitar a detecção, os criminosos Brasileiros começaram a utilizar obfuscação a fim de esconder as partes do código que executam suas operações principais.

No código abaixo o desenvolvedor encriptou o código original da função utilizada para realizar o download do payload malicioso; em uma análise estática não é possível entender o propósito desta função.

malware_evo_sp_21

Função de download encriptada

Em tempo de execução o malware vai chamar a função para decriptar este código antes de executá-lo.

malware_evo_sp_22

Chamada da função de decriptação

malware_evo_sp_23

Rotina de decriptação

Como podemos ver no código acima, a decriptação é uma simples operação sub utilizando a chave 0x42 no byte encriptado – uma maneira simples e rápida de esconder partes de código.

malware_evo_sp_24

Função de download decriptada

Para evitar a detecção pelo firewall de rede, o arquivo baixado é encriptado utilizando uma função de criptografia própria.

malware_evo_sp_25

Arquivo encriptado

malware_evo_sp_26

Arquivo decriptado

A função de encriptação também está escondida pelo mesmo método utilizado na função de download – após decriptar o código foi possível encontrar uma encriptação baseada em XOR combinada com uma operação shift-right na chave XOR.

malware_evo_sp_27

Após decriptar o arquivo, ele não será executado por métodos normalmente encontrados em códigos maliciosos. Para esconder o processo na máquina o malware utiliza um método conhecido como RunPE onde o código executa um processo confiável (como iexplorer.exe ou explorer.exe) em um modo suspenso e então modifica seu conteúdo em memória pelo código malicioso e executa-o.

malware_evo_sp_28

Código executando o processo confiável com estado suspenso

Após criar o processo no estado suspenso o código vai escrever o novo código para a área de memória, definir o novo EIP para execução e então continuar a thread.

malware_evo_sp_29

Escrevendo o código malicioso e retomando a execução da thread

malware_evo_sp_30

Processo do Internet Explorer hospedando o código malicioso

Como o código malicioso está executando no espaço de memória alocado para o Internet Explorer, utilizando ferramentas como o Process Explorer para verificar a assinatura do processo não funciona pois ela verifica a assinatura do arquivo em disco e não na memória.

Está mais que claro que eles mudaram completamente de código amadores para um desenvolvimento muito mais profissional e entendemos que já era hora de atualizar o processo de análise de malware Brasileiro. Estamos certos que a maior parte desta evolução aconteceu devido ao contato e a troca de conhecimento com outros cenários de malware, principalmente do Leste Europeu, que descrevemos neste artigo.

AutoIt Crypto

AutoIt atualmente tem sido bastante utilizado como downloader e crypto para o payload final a fim de evitar a detecção. Após compilado o script AutoIt é encriptado e inserido no binário gerado o que faz necessário extrair o script original antes de analisar seu código.

Buscando por melhores maneiras de esconder o payload final, os cibercriminosos Brasileiros desenvolveram um novo crypto utilizando a linguagem AutoIt onde o payload decryptado é executado utilizando a técnica RunPE.

sh_1_port

Fluxo de execução do AutoIt Crypto

O crypto utiliza dois métodos diferentes para armazenar o arquivo encriptado: o primeiro é utilizando a função FileInstall já existente no AutoIt, e a outra é inserindo o arquivo no final do binário.

Quando utilizado o segundo método o crypto escreve a chave que é utilizada para marcar onde o payload encriptado começa para ser possível encontrar o conteúdo para decriptar. Na amostra abaixo, a chave utilizada é uma uma versão reduzida de “Sei que ganharei 20K”.

malware_evo_sp_32

Chave utilizada para marcar onde o payload encriptado começa

malware_evo_sp_33

Código principal do AutoIt Crypto

Após a leitura do payload encriptado ele é decriptado utilizando a chave “VENCIVINICI” e então o payload é executado utilizando RunPE.

A função de decriptação não é escrita em AutoIt – é escrita na linguagem C. Após ser compilado os bytes foram incluídos no código como string e então mapeados para a memória e executado utilizando a API CallWindowProc.

malware_evo_sp_34

Implementação da função de decriptação

Nós encontramos os seguintes algoritmos implementados como métodos de encriptação/compressão para este crypto:

  • RC4
  • XXTEA
  • AES
  • LZMA
  • ZLIB

O uso do AutoIt em desenvolvimento de malware não é algo novo, porém em meados de 2014 identificamos uma onda de ataques utilizando AutoIt no Brasil, como podemos ver no gráfico abaixo.

01_chart_en_pt_full

Trojan.Win32.Autoit: número de usuários atacados no Brasil

MSIL Database

Outro tipo de malware que emergiu recentemente foi malware desenvolvido em .NET ao invés de Visual Basic 6 e Delphi, seguindo uma tendência que vimos mundialmente. Não é difícil encontrar um downloader escrito em .NET. De toda forma, alguns samples de Trojan-Banker.MSIL.Lanima chamaram nossa atenção ao verificar que alguns deles não utilizavam funções normalmente utilizadas para o download de payload.

malware_evo_sp_36

Função de download

Como podemos ver na imagem acima esta amostra não utiliza nenhuma função de download porque utiliza SQL Server para hospedar o conteúdo do binário, com isso, utiliza apenas um comando SQL para receber o conteúdo e armazenar no disco.

As strings estão codificadas com base 64 e encriptadas com o algoritmo Triple DES para esconder o texto relacionado com as ações principais do malware.

malware_evo_sp_37

Função de descriptografia

Esta família de malware é bastante prevalecente no Brasil e na China:

map_en_pt

MSIL Crypto

Seguindo o mesmo método utilizado peo AutoIt Crypto os criminosos desenvolveram outro crypto, desta vez utilizando a linguagem .NET. O processo para extrair o executável real é basicamente o mesmo que utilizado pelo AutoIt Crypto porém ele tem um módulo intermediário que é reponsável por extrair o payload final.

Olhando o módulo principal nós temos um código .NET e a função principal deste módulo é extrair e carregar a DLL existente no binário.

sh_2_port

Fluxo de execução do .NET Crypto

malware_evo_sp_40

Função principal do Crypto

Como podemos ver, a função acima vai dividir o conteúdo do binário utilizando o separador “cdpapxalZZZsssAAA” e utiliza a segunda parte que contém o código encriptado do loader.

malware_evo_sp_41

Início do conteúdo encriptado

Então é hora de decriptar o conteúdo chamando a função com o nome “fantasma”, o nome official utilizado nos fóruns é PolyRevDecrypt que é basicamente uma operação XOR entre o byte encriptado, o ultimo byte do buffer encriptado e um byte da chave passada para a função.

malware_evo_sp_42

Função de decriptação

Após decriptar, o código será carregado e executado pela função “docinho”.

malware_evo_sp_43

Função para carregar e executar a DLL

O código deste módulo é basicamente o mesmo que encontramos no executável principal exceto que este utiliza o segundo bloco do conteúdo separado.

malware_evo_sp_44

Função principal do loader

RAT

Na oferta de reduzir as perdas relacionadas a ataques cibernéticos, os bancos implementaram autenticação de dois fatores (2FA) utilizando token por dispositivos e SMS para transações bancárias por meio de internet banking como complemento as soluções já utilizadas para identificação de máquina. Para resolver este problema os cibercriminosos criaram uma ferramenta de administração remota desenvolvida especificamente para solicitar as informações necessárias para processar as transações online.

sh_3_port

Fluxo de execução do RAT

O monitor de browser vai analisar o browser do usuário e verificar se algum dos bancos alvo estão sendo acessados; se estiverem, irá descompactar e executar o cliente RAT e então notificar o C&C sobre a nova infecção.

malware_evo_sp_46

Monitoramento de acesso ao Internet Banking

As strings utilizadas por este malware são encriptadas por uma rotina de criptografia própria. Após descriptografar as strings podemos identificar os alvos assim como partes importantes no código.

malware_evo_sp_47

Strings descriptografadas

Para este tipo de infecção é comum os criminosos criarem uma maneira de gerenciar os ataques. Aqui nós podemos ver o número de computadores infectados no mesmo dia, lembrando que este número é equivalente ao número de usuários que acessaram o internet banking enquanto o malware estava em execução no seu computador.

malware_evo_sp_48

Painel do C&C mostrando a lista de usuários infectados

O cliente RAT irá se conectar ao servidor para avisar o atacante que uma nova vítima está acessando o internet banking. Com isso é possível executar o ataque em tempo real.

malware_evo_sp_49

Servidor RAT mostrando que uma nova vítima está conectada

Neste momento o atacante necessita apenas esperar o usuário logar para então proceder com o ataque. Quando o usuário já se encontra logado, o atacante pode ver a tela do usuário, bloquear e controlar a execução assim como solicitar informações específicas que são necessárias para consolidar a fraude, como:

  • Token
  • Tabela de senhas
  • Data de nascimento
  • Senha da conta
  • Senha do internet banking
  • Assinatura eletrônica

Para evitar que o usuário possa perceber que o seu computador está sendo controlado remotamente, este RAT tem uma função que simula um update do plugin de segurança exibindo uma barra de progresso e desabilitando todas as interações do usuário. Enquando isso, o atacante pode realizar as operações bancárias utilizando a sessão ativa do browser já que a tela de bloqueio não e exibida para o atacante.

malware_evo_sp_50

Tela de bloqueio simulando um update

Se alguma informação é solicitada para confirmar as transação, token por SMS por exemplo, o atacante pode solicitar estas informações para a vítima que irá pensar que a informação é necessária para continuar o processo de update.

malware_evo_sp_51

Tela solicitando o código do token

Assim que o usuário fornecer a informação, o atacante pode utilizá-las na página do banco, burlando o segundo fator de autenticação utilizado na transação.

malware_evo_sp_52

Informação recebida da vítima

Ransomware

Os criminosos Brasileiros não estão trabalhando somente com malware bancário – eles também estão explorando outros tipos de ataques envolvendo ransomware. Alguns anos atrás, encontramos o TorLocker que contém detalhes no código do malware sugerindo que o desenvolvedor é do Brasil.

malware_evo_sp_53

Código contendo strings sugerindo que o autor é do Brasil

Como podemos ver na imagem acima, encontramos o texto marcado em azul: “Filho de Umbanda não cai!”. Umbanda é uma religião não ortodoxa no Brasil. O nome marcado em vermelho é o apelido do autor e ele também utiliza a extensão .d74 para os arquivos encriptados. Este usuário é muito ativo em fórums underground buscando serviços maliciosos no Brasil.

Nós também encontramos outras referências, como o uso de um serviço no Brasil para capturar o IP da vítima para então notificar sobre a infecção.

malware_evo_sp_54

Requisição para um serviço Brasileiro para obter o IP da vítima

Alguns meses atrás, encontramos outro ransomware baseado no código do Hidden Tear que foi modificado para direcionar o ataque a usuários Brasileiros, diferente do primeiro que era direcionado a usuários de idioma Inglês e Japonês.

malware_evo_sp_55

Computador da vítima mostrando mensagens em Português, solicitando o pagamento para recuperar os arquivos

Por que eles evoluem

Nós temos evidências suficientes que os criminosos Brasileiros estão cooperando com grupos do Leste Europeu envolvidos com ZeuS, SpyEye e outros malware criados na região. Esta colaboração afeta diretamente a qualidade e o nível de ameaça do malware local Brasileiro, pois seus autores estão adicionando novas técnicas em suas criações e se inspirando em copiar algumas funções usadas em malware originado do Leste Europeu. Os criminosos Brasileiros não estão desenvolvendo somente a qualidade do seu código mas também utilizando infraestrutura do cibercrime do exterior.

Nós vimos o primeiro sinal desta ‘parceria’ no desenvolvimento de malware utilizando scripts PAC maliciosos. Esta técnica foi explorada exaustivamente no malware Brasileiro iniciando em 2011 e mais tarde adotado pelo Trojan bancário Russo Capper. Esta cooperação continua com os ciminosos Brasileiros utilizando infraestrutura de Trojans bancários do Leste Europeu – o Trojan-Downloader.Win32.Crishi foi o primeiro a utilizar domínios DGA hospedados em empresas bulletproof da Ucrânia. Também o malware de Boleto adotou o uso massivo de domínios fast flux, visando evitar a retirada dos C2s – nós vimos que os domínios “bagaça”, registrados através de serviços anônimos, que hospedavam crimeware e dados de boleto resolviam IPs diferentes a cada requisição.

malware_evo_sp_56

The “bagaça” domains: fast flux and bulletproof from Eastern Europe

Outro sinal claro desta cooperação é a presença constante de cibercriminosos Brasileiros em fórums underground Russos ou do Leste Europeu. Não é algo raro encontrar criminosos Brasileiros em fórums Russos procurando amostras, comprando novos crimeware e malware de ATM/PoS, ou negociando e oferecendo seus serviços. O resultado desta cooperação pode ser visto no desenvolvimento de novas técnicas adotadas nos malware Brasileiros.

malware_evo_sp_57

O Brasileiro autor do TorLocker negociando em um fórum underground Russo

Estes fatos mostram como os criminosos Brasileiros estão adotando novas técnicas como o resultado de uma colaboração com seus parceiros Europeus. Acreditamos que é apenas a ponta do iceberg, já que este tipo de troca tende a aumentar com o passar dos anos pois o crime Brasileiro desenvolve e busca novos meios de atacar empresas e cidadãos.

Conclusão

O cibercrime no Brasil mudou drasticamente nos últimos anos, saindo de simples keyloggers gerados a partir de código fonte deisponível puclicamente para ferramentas de administração remota cusmomizadas que podem executar um ataque completo utilizando o computador da vítima.

Malware que costumavam exibir uma tela de phishing assim que executado agora é completamente reativo e aguarda por uma sessão válida antes de começar o trabalho.

Isto significa que os criminosos Brasileiros estão investindo muito mais dinheiro e tempo para desenvolver seus códigos maliciosos, aperfeiçoando técnicas anti-debugging tornando os malware indetectáveis por mais tempo.

Como sabemos, eles estão em contato com criminosos do Leste Europeu, principalmente Russos, onde eles trocam informações, código fonte de malware e serviços que serão utilizados em ataques no Brasil. Podemos ver que muitos dos ataques usados no Brasil foram vistos primeiramente nos malware Russos assim como técnicas Brasileiras sendo utilizadas em ataques Russos.

Baseado nisso, podemos esperar por malware Brasileiros com obfuscação de código aperfeiçoada, técnicas de anti-debugging, algoritmos de encriptação e comunicação segura tornando nosso trabalho mais difícil do que nos dias atuais.

Publicaciones relacionadas

Hay 3 comentarios
  1. Dom Fernandes

    Muito boa a matéria … parabens, Thiago.

  2. Marcos

    Gostei da matéria.Mais a pergunta que ficou, é como nós iremos nos proteger????

  3. Claudia Elizabeth Troncoso

    Felicitaciones, Thiago, por el artículo que has puesto, en cual me gustaría que estuviera en español para mayor compresión a nivel mundial.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *