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).

Figura 1: Informações de nome e autores no cabeçalho do H-Worm.

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.

Figura 2: GUI do W-Worm utilizada pelo atacante.

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.

Figura 3: Detecções do H-Worm nas últimas 5 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%.

Figura 4: Percentual de detecções do W-Worm por país.

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.

Figura 5: Notas de lançamento do H-Worm em fórum hacker.

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.

Figura 6: Loop principal do H-Worm.

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
    Remove:

  • persistência,
  • artefatos,
  • arquivos em %temp% (USER e SYS)
  • arquivos em “%localappdata%\Microsoft\Windows\Temporary Internet Files[\Content.IE5]”
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.

Figura 7: Lista de processos evadidos pelo H-Worm.

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).

Figura 8: Primeiro nível de obfuscação do H-Worm.

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).

Figura 9: Segundo nível de obfuscação do H-Worm.

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.

Figura 10: Padrão para desobfuscar payloads de VBS.

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