Os cibercriminosos desenvolvem periodicamente algo novo. Às vezes é uma versão atualizada de um malware já conhecido, e às vezes é algo novo e não óbvio, como malware Beep. Por isso, este malware tem uma característica distintiva: uma nova tática para evitar a detecção. Embora o malware Beep ainda esteja em desenvolvimento, já possui funcionalidades existentes que evitam ser analisadas e detectadas por software de segurança.
Que tipo de malware é o Beep?
Há não muito tempo atrás, Pesquisadores de segurança cibernética da Minerva descobri um malware muito interessante com um nome igualmente interessante, “Bip”. Beep Malware é um novo vírus furtivo com vários recursos projetados para roubar informações confidenciais e criar uma cadeia de infecções. Este último envolve baixar/instalar malware ou componentes adicionais. Consequentemente, pode infectar dispositivos com Trojans, ransomware, mineradores de criptomoedas, ou outro malware.
Especula-se que o Beep seja entregue por meio de um anexo de e-mail de spam, Discórdia, ou URL do OneDrive. Também é mencionado ser um “malware como serviço” ou seja. oferece a outros criminosos a oportunidade de espalhar suas cargas dentro da botnet infectada pelo Beep . É composto por três componentes: um conta-gotas, um injetor, e uma carga útil.
Conta-gotas
O dropper inicia seu trabalho após algumas verificações anti-depuração e anti-VM. Em seguida, ele cria uma nova seção de registro com o valor “Afronia Haimavati” e um script PowerShell codificado em base64. Em seguida, ele adiciona uma tarefa agendada a cada 13 minutos e executa o script do PowerShell armazenado no registro. Antes de correr, o script carrega os dados e os armazena em um injetor chamado AfroniaHaimavati.dll.
Injetor
O injetor é um componente que utiliza diversas técnicas de depuração e proteção de máquina virtual para injetar uma carga útil em um processo legítimo do sistema, por exemplo, “WWAHost.exe”. Isso é conseguido limpando o processo e evitando a detecção por ferramentas antivírus..
Carga útil
A carga primária tenta coletar os dados necessários da máquina comprometida. Em seguida, ele os criptografa e tenta envie-os para C2, que foi codificado. Embora o endereço codificado de C2 tenha sido desativado durante a análise, o malware tentou se conectar mesmo depois 120 Tentativas falhas.
Apesar das limitações da análise de malware, os especialistas ainda conseguiram detectar as seguintes funções na amostra, que são acionados por comandos C2:
- dll (executa um arquivo dll)
- exe (executa um arquivo.exe)
- código shell (executa mais shellcode)
- captura de tela (uma tarefa que parece coletar a lista de processos)
- adicional (reúne mais dados)
- tempo limite de batida (modifica “Mantenha vivo” intervalos para C&C)
Além disso, tem pelo menos quatro funções que não foram utilizadas durante o teste: destruir, iniciar, tarefa, e balanceador. Esse, no entanto, não o torna menos perigoso.
Métodos de detecção de fuga
Vejamos o que o malware Beep destaca: as técnicas de evasão de detecção que utiliza durante todo o processo de execução. Depois que os analistas se aprofundaram nesta amostra, eles notaram o uso de muitas técnicas de evasão. Isso deu a impressão de que os autores do malware Beep estavam tentando implementar o máximo de antidepuração e anti-VM (anti-caixa de areia) técnicas possíveis. Por exemplo, um método era atrasar a execução usando a API Beep, daí o nome do malware.
Recursos anti-análise no malware Beep:
- Função Beep API anti-sandbox. É a mesma função que dá nome ao malware. Uma alternativa ao Função API do sono, que gera um bipe no alto-falante do PC, atrasando a execução de malware (aviso espere) para evitar a detecção de sandbox.
- Desofuscação dinâmica de strings. Este método significa que as strings de código são mantidas ofuscadas o tempo todo, e a camada de confusão é removida apenas para as strings que serão usadas no momento. A desofuscação é feita usando xor/sub/adicionar/não funções de montagem.
- Verificação do idioma do sistema. Uma verificação de localização de IP bastante típica, frequentemente encontrada em malware desenvolvido em países da ex-URSS, particularmente a Rússia e a Ucrânia. É realizado para evitar infectar máquinas desses locais – tal ética distorcida. Se for russo, ucraniano, Bielorrusso, tadjique, esloveno, Georgiano, Cazaque, ou uzbeque (Alfabeto cirílico) são detectados no sistema, Beep irá cessar qualquer execução adicional.
- Verificação de campo NtGlobalFlag para anti-depuração. Nesse caso, malware busca a compensação de NtGlobalFlag. Se corresponder ao típico do sistema com depurador habilitado – o Beep interrompe a execução.
- Implementação própria da função API IsDebuggerPresent. Os desenvolvedores do malware Beep implementaram o Variante ASM da chamada C++, que verifica se o processo que chama esta função é depurado por um depurador de modo de usuário.
- Verificação do registro do segmento de pilha. O fato do Beep ser escrito em Assembly permite que ele se comunique diretamente com o processador. Ele usa informações do registro do segmento de pilha da CPU para ver se há alguma chamada normalmente usada para fins de depuração.
- Ler contador de carimbo de data/hora (RDTSC) verificação de instrução. Programas maliciosos verifica o número de ticks da CPU desde a última redefinição para determinar se ele é executado em uma máquina virtual. Máquinas com sistema operacional recém-instalado podem ser a fonte de falsos positivos.
- CPUID anti-vm. Usando a função CPUID, malware – obtém a string da marca do hipervisor, que contém informações sobre fornecedores de software de virtualização. Nomes como VMWare, Oráculo, Paralelos, Citrix ou outros irão desencadear procedimentos de autodestruição.
- Chave de registro VBOX anti-vm. É uma das verificações menos complicadas que visa mostrar se há alguma chave de registro específica da VM presente no sistema. Detectar aquele faz com que o malware se autodestrua.
O componente injetor implementa os seguintes métodos de evasão:
- INT 3 e anti-depuração INT 2D. Gera uma exceção que fará com que os depuradores parem de funcionar. O primeiro literalmente define um ponto de interrupção na execução do depurador; A instrução INT 2D permite que o malware altere o fluxo de execução quando detecta a presença de um depurador.
- CheckRemoteDebuggerPresente() Antidepuração de API. É um função kernel32.dll que define (-1)0xffffffff no parâmetro DebuggerPresent se um depurador estiver presente. Internamente também usa NtQueryInformationProcess com ProcessDebugPort como parâmetro ProcessInformationClass.
- IsDebuggerPresent() Antidepuração de API. O método mais fácil de proteção contra depuração que determina se os depuradores de modos personalizados, como OllyDbg ou x64dbg, depurar o processo atual. Tipicamente, a função verifica apenas o “Sendo depurado”sinalizador do Bloco de Ambiente de Processo (PEB).
- Anti-depuração ProcessDebugPort. Permite que o malware recupere o número da porta do depurador para um processo usando ntdll!NtQueryInformationProcess(). Existe uma classe ProcessDebugPort documentada que recupera um Valor DWORD de 0xFFFFFFFFFF (número decimal -1 ) se o processo estiver depurando.
- VirtualAlloc()/GetWriteWatch() anti-depuração. É uma API do Windows de baixo nível que oferece muitas opções. Por exemplo, GetWriteWatch permite que você obtenha os endereços das páginas nas quais foram gravadas desde que a região foi alocada ou o estado de rastreamento de gravação foi redefinido. Além disso, esta função pode rastrear depuradores que podem modificar páginas de memória fora do padrão esperado.
- OutputDebugString() anti-depuração. Método de detecção do depurador baseado no resultado de um retorno de chamada. Um método obsoleto porque só funciona em versões do Windows anteriores ao Vista. Se nenhum depurador estiver presente e kernel32!OutputDebugString é chamado, e ocorre um erro.
- QueryPerformanceCounter() e GetTickCount64() anti-depuração. Este método recupera o valor atual do contador de desempenho, que é um carimbo de data/hora de alta resolução (<1µs) that can be used to measure time intervals. Thus measures the delay between instructions and execution to determine if the system is running a debugger.
Quão perigoso é o malware Beep?
Os autores do malware Beep se concentram principalmente em evitar a detecção, o que torna difícil para softwares de segurança e pesquisadores detectar e analisar. Por outro lado, mostrou funcionalidade mínima e incompleta para seu propósito direto, ou seja, roubando dados e executando comandos. Ainda, nada impede os hackers de expandir funcionalidades maliciosas. E mesmo que esse malware em particular seja mais uma amostra de demonstração de tecnologia, espera-se ver essas técnicas de evasão em outros, amostras de malware mais comuns.