Apesar do nome, o H-Worm é um velho conhecido RAT escrito totalmente em VBScript. Há versões deste malware pelo mesmo desde 2013 e diversas formas executáveis (i.e.: script .VBS; .EXE obtido com vbs2exe; versão Autoit; etc).
O H-Worm é um exemplo de crimeware “popular”, amplamente distribuído em fóruns hackers, demos e afins. Este malware é muito conveniente para script kiddies que procuram se aventurar no crime virtual. Por se tratar de um VBScript inteiramente autocontido, é simples de ser modificado, pode ser obfuscado de diferentes formas e executado pelo Wscript em qualquer versão do Windows.
Detecções e prevalência
Detecções do H-Worm, nomeado pela ESET como VBS/Agent.NLI, tiveram um expressivo crescimento global nas últimas semanas.
Em especial, esta ameaça possui maior incidência no Chile e Brasil, respectivamente. As detecções no Chile correspondem a 45% das detecções globais, enquanto que no Brasil esse valor está em 32%.
Está ameaça é propagada por arquivos com nomes como “ListaGovernoRF.zip”, “MalhaFinaRF.zip” e “ListaTemer.vbs”, o que sugere que o vetor de ataque baseia-se em métodos tradicionais de engenharia social, como o phishing.
Sobre o H-Worm
Ao longo dos anos, o H-Worm vem sendo evoluído para agregar novas funcionalidades. A versão original foi assinada por Houdini, mas em 2015 passou a ser mantida por MeoIT - o que perdura até o presente momento.
Apesar das primeiras versões já terem (pelo menos) quatro anos, conforme a análise realizada pela FireEye em setembro de 2013, a estrutura básica do H-Worm não foi modificada. O script possui um loop principal onde diferentes funções são executadas dependendo do parâmetro enviado pelo C&C.
A cada execução do loop, o agente (i.e.: malware em execução na máquina da vítima) envia dados da máquina infectada para o C&C e recebe comandos através da função “THANK_GOD_YOU_ARE_HERE”.
Nas requisições, os seguintes parâmetros são passados no campo de ‘user-agent’:
Parâmetro | Comentário |
---|---|
Disk Volume Serial | VolumeSerialNumber seguido da uma string fixa (“_Git.Hub” – há a opção de “_MeoIT”, mas que não é nunca selecionada) |
Hostname | |
Username | |
Sistema Operacional | |
Admin/Non-Admin | |
UAC on/UAC off | |
Versão do .NET | Valor da chave “HKLM\software\Microsofot\NET Framework Setup\NDP\v2.0.50727\Version” |
RAM | TotalPhysicalMemory em MB TotalPhysicalMemory |
GPU | Lista de Win32_VideoController (caption) |
Chave de registro do Windows | Obtido de “HKLM\software\Microsoft\Windows NT\CurrentVersion\DigitalProductId” |
Antivírus (AV) | AV instalado na máquina ou “None AV” |
Persistência | Verifica se persistência está instala em “HKCU\software\Red_%scriptname%” se UAC está habilitado ou “HKLM\software\Red_%scriptname%” se UAC está desabilitado. Caso persistência esteja desabilitada, a instala-se no registro. Retorno: [true|false] |
Data & hora |
Tabela 1: Lista de informações exfiltradas pelo H-Worm
Adicionalmente aos dados exfiltrados na primeira versão, essa versão do H-Worm fornece informações sobre Admin, UAC, .NET, RAM, GPU e chave de registro do Windows. Quanto a funcionalidades, não houve grandes modificação, i.e:
Comando | Descrição | Comunicação |
---|---|---|
execute | Executa parametro recebido em ‘excecute’ | |
update | Substitui payload do script e reinicia execução em modo batch:
wscript.exe //B %scriptpath% |
|
uninstall |
|
|
send | Download de arquivo do C&C | POST /is-sending<|>{URL_Arquivo} |
site-send | Download de arquivo de URL | GET /{URL_Arquivo} |
recv | Upload de arquivo para C&C | POST /is-recving<|>{URL_Arquivo} |
enum-driver | Envia informações dos drives da máquina | POST /is-enum-driver…{DrivePath|DriveType<|>…} |
enum-faf | Envia atributos de arquivos e pastas contidas em um diretório específico | POST /is-enum-faf…{FolderName|(FileSize)|(d|f)|Attributes<|>…} |
cmd-shell | Executa commando shell recebido e retorna resultado:
cmd.exe /c $comando |
POST /is-enum-process…{Name|PID|Path<|>…} |
delete | Remove arquivo ou pasta especificado | POST /is-cmd-shell…{Result} |
exit-process | Termina processo especificado por parâmetro | |
sleep | Pausa execução por tempo determinado |
Tabela 2: Lista de comandos do H-Worm [comparar com versão de 2013]
Outra característica adicionada é a verificação de processos em execução utilizados para monitorar a execução de outros processos. Caso alguma dessas ferramentas de análise seja detectada, a execução do script é terminada.
Vale ressaltar que apesar do payload corresponder ao H-Worm, na maior parte das vezes o script é obfuscado. No caso do arquivo ListaTemer.VBS, foram utilizados dois níveis de obfuscação.
No primeiro nível de obfuscação, o payload está uma string em unicode. Para executar o payload, a string é decodificada em um VBScript caracter por caracter, e no final é executada com a chamada de “Execute(S)” (linha 18).
Ao se decodificar o payload, obtém um outro VBScript que também está obfuscado. No entanto, nesse caso o payload está codificado em várias strings hexadecimais (1510 linhas ao todo).
Para quem se interessa em analisar malwares, em ambos casos o script pode ser desobfuscado facilmente trocando sua execução pela escrita de um arquivo contendo o payload.
O trecho de código acrescentado para fazer o dump do payload está apresentado abaxo:
[table id=352 /]
Conclusão
Este caso é interessante para ver como famílias de malware evoluem e ressurgem ao longo do tempo. No caso do H-Worm, além de ser compatível com diversas versões do Windows (inclusive Windows 10 desde 2015, como visto na figura), é muito simples de ser obtido e utilizado, o que o torna um crimeware cobiçado por script kiddies.
Pelas notas de update disponíveis em fóruns, leva-se a crer que a versão analisada do H-Worm data de 2015. Mesmo assim vemos que as detecções dessa ameaça tiveram um grande crescimento ultimamente, ou seja, cibercriminosos apostam em crimewares antigos para realizar ataques.
Uma possível explicação é o fato dessas ferramentas, apesar de amplamente detectáveis/bloqueáveis, ainda terem uma alta taxa de sucesso pelo fato das vítimas não estarem com um nível de proteção adequado, tanto em relação ao conhecimento das ameaças digitais (a fim de evitarem formas comuns de engenharia social, como o phishing), quanto instaladas em seus computadores.
Portanto, com o intuito de evitar que um atacante tenha acesso remoto à sua máquina, é importante estar atento aos ataques baseados em engenharia social, como vimos neste caso, e adicionalmente fazer uso de soluções de segurança (de boa reputação).
Indicadores de Comprometimento (IoC)
Detecção ESET | Hashes (SHA1) |
---|---|
VBS/Agent.NLI | 190c9bf8d5caa75189bd7267625f9a7cb625c910 |
URLs contatadas |
---|
hxxp://workinrarhost.ddns.com.br:5091 |