Malware LockPoS é identificado pela Arbor

Ao revisitar uma campanha Flokibot que, no início do ano, foi direcionada a sistemas de ponto de venda (PoS) no Brasil, descobrimos algo interessante: um dos servidores de comando e controle (C2) que estiveram adormecidos por algum tempo de repente acordou, e começou a distribuir o que parece ser uma nova família de malware PoS, a qual estamos chamando LockPoS – e descrevemos a seguir:

Por Dennis Schwarz, analista da Arbor Networks

A amostra analisada tem uma data de compilação recente (24-06-2017) e está disponível no VirusTotal.

Ela começa por resolver várias funções do Windows usando hashing de API (CRC32 é usado como a função hashing). Aqui estão algumas de suas funções e correspondentes hashes:

  • FindResourceW – 0xcad4de2b
  • CryptDecrypt – 0x9c2d8fb5
  • RtlDecompressBuffer – 0x52fe26d8

 

Conforme sugerido pelas funções acima, em seguida a amostra:

  • Extrai um recurso chamado “CORE”
  • Faz decriptação usando AES-256 no modo CBC e um vetor de inicialização (IV) de zero byte
  • Descompacta o texto

O arquivo resultante é um executável (disponível no VirusTotal) que possui a seguinte sequência de depuração:

C:\Users\Admin\Desktop\key\dropper\Release\dropper.pdb

Esse arquivo é carregado e executado manualmente – e continua extraindo de si um recurso chamado “XXXX”, com vários componentes injetados em “explorer.exe”.

Uma vez executado no explorer.exe, ele se comporta de forma semelhante ao carregador descrito acima, decriptando, descompactando e finalmente carregando o LockPoS.

Componente do LockPoS

A análise da DLL do LockPoS está disponível no VirusTotal e possui a seguinte cadeia de depuração:

C:\Users\Admin\Desktop\key\lock\Release(DLL)\lock.pdbO LockPoS usa o método comum de “registry run”. Uma configuração inicial (que inclui a URL C2) é armazenada sem criptografia como um recurso chamado “XXXX”:

A configuração é armazenada como uma estrutura binária em que o primeiro DWORD (5 neste exemplo) indica o número de entradas de dados seguintes. Cada entrada de dados é composta por:

  • Tipo (DWORD)
  • Comprimento dos dados (DWORD)
  • Dados

Para facilitar, passaremos a chamar essa estrutura de “parte de dados”.

As comunicações tipo C2 se dão via HTTP e usam uma tática agente-usuário muito interessante, como demonstra este exemplo de solicitação:

Os dados do POST têm uma estrutura que consiste em “partes de dados”, como:

  • Número de “partes de dados” (DWORD)
  • Tamanho da parte de dados 1
  • Parte de dados 1
  • Tamanho da “parte de dados” 2
  • Parte de dados 2

No exemplo acima, há uma parte de dados que contém as nove entradas seguintes:

  1. Tipo 0: Tipo de mensagem (0)
  2. Tipo 3: String composto por nome de usuário, nome do computador e ID do bot
  3. Tipo 1: Valor da configuração
  4. Tipo 2: Versão de Bot (1.0.0.6)
  5. Tipo 8: CPU
  6. Tipo 9: Memória física
  7. Tipo 10: Exibição de dispositivos
  8. Tipo 4: Versão e arquitetura do Windows
  9. Tipo 6: Hash MD5 da amostra atualmente em execução

Um exemplo de resposta de C2:

Os dados retornados são estruturados e, neste caso, estão retornando uma configuração atualizada.

O LockPoS suporta os seguintes comandos:

  • Atualizar configuração
  • Fazer download e executar
  • Rotação do arquivo de dados
  • Auto atualização
  • Injetar arquivo executável no explorer.exe

A funcionalidade de roubo do cartão de crédito atua de forma semelhante a de outros malwares para PoS: verifica a memória de outros programas em execução, em busca de dados que correspondam a cartões de crédito. Aqui está um trecho da função:

Abaixo segue um exemplo de exfiltração de cartão de crédito pelo LockPoS, usando dados deste site:

No exemplo, existem duas partes de dados. A primeira é semelhante ao exemplo anterior de “phone home”. A segunda consiste nas seguintes sete entradas:

  1. Tipo 0: Tipo de mensagem (2)
  2. Tipo 113: Contagem de tiques
  3. Tipo 111: Hardcoded zero
  4. Tipo 112: Dados de trilhas de cartão de crédito e de aplicações
  5. Tipo 3: String com nome de usuário, nome do computador e ID do bot
  6. Tipo 1: Valor da configuração
  7. Tipo 114: Índice da entrada

Conclusão
Até agora, vimos que o LockPoS está sendo distribuído por uma botnet Flokibot. Ambos compartilham um host C2 comum (treasurehunter [.] At), por isso é provável que tenha o mesmo controlador. Como mencionado anteriormente, a campanha Flokibot era direcionada ao Brasil, então é provável que o LockPoS atinja o país. Ainda não está claro se o novo malware será vendido em fóruns clandestinos, como aconteceu com o Flokibot. Com base na descrição feita acima, o LockPoS parece ser bem codificado e estável, mas não aumenta o nível na categoria “malware altamente avançado”.

  • Posted in ASERT Blog
  • Comentários desativados em Malware LockPoS é identificado pela Arbor