Como remover malwares invisíveis
Este artigo pretende apresentar como eliminar uma das diversas maneiras de invasão que popularizou-se nos últimos anos, o malware serm arquivo (ou invisível), dificultando sua identificação pelos softwares de segurança. A título de aprendizado usaremos um exemplo relativamente simples para facilitar o acompanhamento do processo de remoção.
O que é malware invisível ou sem arquivo?
Ao efetuar pesquisas na internet pelo termo “malware sem arquivo”, resulta numa variedade de assuntos que reivindicam várias definições diferentes. Haverão termos como “exploits”, “scripts”, “ferramentas do Windows”, “somente RAM” ou “indetectável”. Visando facilitar o entendimento para quem não estiver familiarizado na análise desse tipo de infecção, definiu-se uma terminologia para entender melhor o significado do malware sem arquivo.
O malware sem arquivo é um tipo de infecção que não armazena seu (s) componente (s) malicioso (s) no sistema de arquivos do Windows, no qual os arquivos e pastas estão localizados. Diferente de outras infecções ele carrega o código malicioso na memória (RAM) diretamente de um local alternativo, através de valores de registro do Windows ou da Internet.
Significa que ao invés de produzir um arquivo malicioso, o malware mantém o código malicioso em outro lugar. O objetivo é muito simples, inexistindo um arquivo malicioso no disco o software de proteção não poderá encontrá-lo. Apesar de adotar a condição de não possuir arquivos isso não é totalmente verdade. É possível localizar atalhos ou arquivos de script (.bat, .vbs, .ps1), embora sejam geralmente usados para direcionar ou carregar o código malicioso.
Toda intenção no uso de malware sem arquivo é dificultar a detecção pelos programas de proteção sejam em tempo real ou sobre demanda. Uma maneira de difundir esses malwares sem arquivo é por exploradores populares (EternalBlue, por exemplo), uma maneira simples de navegar através desses programas de proteção, embora também possam ser disseminados por métodos mais clássicos como anexos de e-mail contaminados. O malware sem arquivo pode ser usado para inúmeros fins mal-intencionados porém mais regularmente encontrado em ataques cryptomining e clickfraud. Alguns exemplos de sintomas comuns identificados em computadores comtaminados inclui o uso permanentemente alto da CPU por processos legítimos do Windows ou mensagens de erro semelhantes à imagem abaixo, mesmo ciente de não ter iniciado o PowerShell no surgimento deste erro
A partir daqui é preciso averiguar alguns recursos freqüentemente usados pelo malware invisível. Sendo usados para facilitar a execução de uma diversidade de scripts é uma das razões para sua adoção.
Script é pequeno conjunto de códigos que na maioria dos casos está parcialmente legível ao olho humano. Eles scripts podem ser disfarçados embora existam vários recursos online que permitem reverter esse mascaramento. O Windows pode ser instruído a executar esses scripts e aqui temos uma das vantagens dessa técnica: um componente confiável do Windows executará o código que eventualmente levará a um processo malicioso sendo carregado, colaborando na sua transparência, embora muitos produtos de segurança já sejam capazes de interceptar várias ações tomadas por esses scripts.
A seguir está uma lista de processos e componentes legítimos comumente usados em conjunto com malwares invisíveis, todos listado na seção de exemplos de remoção de malware:
-
Mshta.exe: Microsoft HTML Application Host Utilitário que é responsável por executar arquivos HTA (HTML Application) no Windows.
-
Wscript.exe: O Windows Script Host fornece um ambiente no qual os usuários podem executar scripts em várias linguagens de script para executar todo o tipo de tarefas
-
Powershell: O Windows PowerShell é um shell por linha de comando do Windows que inclui um console interativo e um ambiente de script sendo um variante muito mais poderoso do prompt de comando normal cmd.exe.
-
WMI: O Windows Management Instrumentation é uma tecnologia de gerenciamento central do Windows que pode ser usada para gerenciar computadores locais e remotos. O WMI é usado em tarefas de gerenciamento cotidianas com linguagens de programação ou script.
Começando a identificar um malware invisível
Caso não tenha muitas sobre o malware, geralmente um ponto de execução costuma ser o melhor lugar para começar. Depois de encontrar o ponto de exeução, é necessário ter habilidades adicionais de detetive contra malware para garantir que consiga identificar todas as suas ramificações. Muitas vezes, serão encontradas cadeias de scripts e atalhos que eventualmente levarão ao código malicioso sendo executado.
O programa autoruns da sysinternals é uma boa opção para iniciar nossa pesquisa mas deste ponto é geralmente útil verificar manualmente o (s) objeto (s) ao qual o ponto de execução faz referência. A exemplo de examinar scripts através de um editor de texto, analisar URLs incorporadas ou verificar o caminho de destino dos atalhos. Tente manter anotações nessa etapa para garantir não esqueçar dos componentes que deverão ser removidos posteriormente.
Considerações na eliminação de malwares invisíveis
As etapas na identificação e eliminação de malwares invisíveis exige uma boa dose de conhecimento por conta da necessidade em identificar todos os componentes ao invés de remover apenas o que descobriu inicialmente, caso onde haverão grandes possibilidades da infecção voltar quando terminar de remover os primeiros componentes.
De qualquer maneira como na maioria dos outros malwares, após identificados todos os componentes a remoção costuma ser razoavelmente direta. Em boa parte dos incidentes as ferramentas como o Autoruns e o Process Explorer serão suficientes. Amparados pelo Process Monitor e o TCPView para algumas tarefas simples.
Exemplos de remoção: WMIGhost e Poweliks
No interesse em demonstrar algumas técnicas comuns e esconderijos usados pelo malware invisível escolhemos o Poweliks (usa o computador para gerar receita a um invasor clicando em anúncios on-line em segundo plano) e WMIGhost (consome recursos do computador para minerar moedas virtuais para o invasor).
Exemplo 1: WMIGhost
Utilizando o WMIGhost para demonstrar como uma condição inicialmente complicada pode ser facilmente resolvida utilizando um pouco de bom senso e a ferramenta VirusTotal. Embora com nome sugestivo é visível termos um ponto de execução através do WMI.
Na primeira análise o script carregado pelo WMI pode parecer sem inocente mas a boa notícia está em não precisar compreender todo o script para decidir ser bom ou ruim. Escolhendo alguns elementos-chave percebemos diversos URLs estão listados, sendo interessante descobrir mais sobre eles fazendo uma pesquisa no VirusTotal. De grande utilidade após verificar os resultados da pesquisa para o primeiro URL relata em “Comunicar arquivos” que inúmeros arquivos com altas taxas de detecção fazem referência a esse URL. Resultados similares serão encontrados para os URLs listados.
Por aqui já é possível assumir como ruim, permitindo identificar ainda o processo “scrcons.exe”, o aplicativo de script WMI Standard Event Consumer usado para executar scripts WMI.
Neste caso é possível confirmar a execução de um script que tenta se conectar aos URLs acima usando o TCPView:
Analisando os IPs listados em Endereço Remoto usando www.virustotal.com, comprovará sua associação aos endereços * .blogspot.com, * .wordpress.com, * .livejournal.com e * .tumblr.com, todos correspondentes aos URLs identificados no script acima.
Para efetuar sua remoção é suficiente clicar com o botão direito do mouse no script WMI no autoruns e selecionar Excluir. Existindo mais processos do tipo “scrcons.exe” é bem provável efetuar sua eliminação manualmente primeiro. Por fim é possível confirmar utilizando o TCPView e também o Process Explorer que as conexões para esses endereços através do scrcons.exe foram interrompidas.
Exemplo 2: Poweliks
Em seguida, veremos uma infecção por Poweliks, e aqui as coisas ficam um pouco mais complicadas. Vamos dar um passo a passo. Mais uma vez, estamos começando com o Autoruns e um ponto de carga sob uma chave Run que deve ser bastante simples…
Aparentemente existe um valor padrão que foi infectado e agora direciona para um arquivo .bat na pasta C:\Users\Admin\Appdata\Local\500f2. Um arquivo .bat (batch) costuma ser um script simples e vale uma análise, está também localizado numa pasta junto com outro arquivo aleatório:
Facilmente identificado pelo arquivo em si consistir numa linha de texto. No simples entendimento do comando “start 39267.2f489e”. Assim como na imagem acima é possível perceber do arquivo também existir na mesma pasta. Embora possa considerar sem relevância pela informação de execução apontar diretamente para esse arquivo, executando esse comando que que carrega um arquivo de lote completamente inocente, inexistindo qualquer string suspeita que possa ser bloqueado por algum software de proteção.
Ao analisarmos a ser executado em: C:\Users\Admin\Appdata\Local\500f2\39267.2f489e. Temos pouca relevância pelo VirusTotal por conta dos resultados da verificação não retornarem qualquer informação do arquivo, sem qualquer conteúdo que possa ajudar no seu reconhecimento.
Mesmo assim é possível identificar algumas particularidades nesse arquivo, a exemplo dao sua extensão bem exclusiva como .2f489e. Sem qualquer ideia do significado deste tempo de extensçao e o que faz, torna-se interessante pesquisar por ela no Registro do Windows, na chave onde todas as extensões de arquivo são armazenadas: a chave HKEY_CLASSES_ROOT (HKCR). Inexistindo por lá torna-se impossível para o arquivo b31a2.bat ser útil, neste caso pelo Windows não saber o que fazer com ele.
Mesmo a extensão .2f489e estando presente no registro, o conteúdo da chave não tem serventia alguma além de indicar uma chave HKCR diferente: e862b
Agora novidades despontam, ao averiguarmos a chave em HKCR\e862b\Shell\Open\Command, identificamos que o arquivo investigado no momento iniciará (por meio de Mshta.exe) um objeto JavaScript que na sequência deseja ler mais dados do valor “zflends” na chave HKEY_CURRENT_USER\software\juapuofg, situação bem aleatória e não particularmente legítimo
Mesmo observando cuidadosamente a chave seus valores ainda é difícil afirmar sua função, isso pelas informações armazenadas nesses valores estarem camuflados, neste momento o Process Explorer pode ajudar na investigação:
Ao executar manualmente o malware (por exemplo, clicando duas vezes em b31a2.bat), nota-se do mshta.exe carregar o script que lê o valor existente em “zflends” contendo o código malicioso que por sua vez lança o Powershell. Resumindo que o código constante no valor “zflends” tem indícios de ser um script Powershell camuflado.
A este ponto isso não tem muita importância, por conta da da identificação do código malicioso, engenhosamente armazenado codificadamente num valor de registro aleatoriamente nomeado, por fim encontrado o último dos elementos necessários para nossa lista de exclusão (agora, mais que necessária).
Revisando os comportamentos maliciosos
É prudente antes de partir para a remoção, classificar os elementos identificamos, no caso na ordem em que foram localizados:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run-default value. Valor alterado direcionando para b31a2.bat. Impedido de remover esse valor, deverá ser alterado para um estado padrão sendo um valor vazio de dados.
C:\Users\ Admin\Appdata\Local\500f2 Pasta contendo os arquivos b31a2.bat e 39267.2f489e.
HKEY_CLASSES_ROOT\.2f489e Chave onde a extensão de arquivo .2f489e foi incluída. Sem outra função além de direcionar para a chave e862b.
HKEY_CLASSES_ROOT\e862b Chave apontada pela extensão .2f489e. É conferido pelo Windows o valor padrão na subchave Shell \ Open \ Command sempre que um arquivo desse tipo é executado. Neste exemplo, possui as informações para carregar o script que direciona para o código malicioso atual.
HKEY_CURRENT_USER\software\juapuofg Chave contendo o código malicioso em forma de script oculto para PowerShell em uma das suas instruções.
Embora agora cientes do que eliminar, infelizmente não é tão simples como poderia já que ao tentar remover o valor padrão infectado usando o autoruns é apresentado um erro. Na atividade de remover a pasta 500f2 nota-se seu reaparecimento segundos depois e aí presumindo algum processo/programa estar e execução monitorando o malware para evitar sua remoção. Outro problema está na inexistência de suspeitos ao examinarmos a saída pelo Process Explorer e por isso poderíamos simplesmente iniciar um encerramento maciço de processos aleatoriamente, desejando não travar o Windows atingindo rapidamente o processo malicioso.
O Process Monitor pode ser muito útil nesta etapa também, pelas seguintes etapas:
- Inicie o Process Monitor
- Desmarque a opção File> Capture Events e selecione Edit> Clear Display para facilitar.
Devemos agora capturar o evento que nos interessa: a ininterrupta criação do conteúdo da pasta 500f2. Para garantir que esteja pronto para a captura, selecione Arquivo> Capturar eventos, exclua manualmente a pasta, aguarde a reaparição, desmarque Arquivo> Capturar eventos para desativar a captura novamente e garantir que o registro não seja muito grande.
Aqui possivelmente existirá uma uma longa lista de eventos capturados. Entretanto é dispensável efetuar um filtro em “A operação é WriteFile”. Por conta do nome da pasta ser único o suficiente para simplesmente usar Localizar (Ctrl + F) no 500f2. E, com certeza, localizar o seguinte resultado:
Aparentemente o Regsvr32.exe é o processo envolvido na recriação dos objetos que acabamos de remover. Significa que o processo Regsvr32.exe deve ser localizado e removido, utilizando o Process Explorer (atenção quanto ao arquivo Regsvr32.exe em si ser legítimo, não devendo ser excluído). Feito isso é possível exlucir a pasta sem que ela seja recriada. Deverá ser excluída também as chaves HKCR e HKCU\Software\juapuofg.
A chave Run, no entanto, é um assunto diferente pois cada tentativa de acesso exibe o seguinte alerta:
Mesmo sendo atrativo tentar identificar o motivo, pela chave estar vazia e não existirem legítimos de execução aqui, excluir a chave inteira e aguardar o Windows recriá-la seria interessante, que nesta simulação o truque não ocorre. No caso de Poweliks o motivo costuma estar relacionado a caracteres inválidos dentro dos dados de valor senão uma subchave incapaz de interpretação ou exibição pelo pelo Regedit.
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
**********************************************************************************
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
*****************************************