ESTE SERVIÇO PODE CONTER TRADUÇÕES FEITAS PELO GOOGLE. O GOOGLE SE ISENTA DE TODAS AS GARANTIAS RELACIONADAS ÀS TRADUÇÕES, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER RESPONSABILIDADE EM RELAÇÃO À PRECISÃO, CONFIABILIDADE E QUALQUER DEVER IMPLÍCITO SOBRE SUA COMERCIALIZAÇÃO, ADEQUAÇÃO PARA UM FIM ESPECÍFICO E NÃO-VIOLAÇÃO.

Para sua conveniência, o site da Kaspersky Lab foi traduzido com a utilização do software de tradução Google Tradutor. Foram realizados esforços razoáveis para o oferecimento de uma tradução precisa; entretanto, as traduções automatizadas não são perfeitas e tampouco pretendem substituir a tradução qualificada de especialistas. Essas traduções são fornecidas como um serviço para os usuários do site da Kaspersky Lab e são exibidas "como estão". Não há nenhuma garantia de qualquer tipo, seja expressa ou implícita, sobre a precisão, confiabilidade, ou exatidão de quaisquer traduções feitas do inglês para qualquer outro idioma. Alguns conteúdos (como imagens, vídeos, Flash, etc.) podem não estar corretamente traduzidos devido às limitações do programa de tradução.

Virus.Win9x.Memorial

Classe Virus
Plataforma Win9x
Descrição

Detalhes técnicos

Este texto foi escrito por Peter Szor, Data Fellows Ltd

O Memorial é um vírus muito interessante do Windows 95. Houve um longo desenvolvimento na escrita de vírus do Windows até o momento [final de 1997]. No entanto, a lista de infectadores do Windows 95 ainda não é longa. O Memorial mostra novas ideias sendo um vírus do Windows 95 "residente na memória". Ou seja, ele infecta arquivos COM e EXE baseados em DOS, bem como arquivos Win32 PE (Portable Executable), respectivamente. O formato principal do vírus é um Windows 95 VxD (Virtual Device Driver).

O vírus não é criptografado em arquivos COM e EXE baseados em DOS, mas arquivos PE infectados são criptografados com uma rotina oligomórfica (semi-polimórfica). Além disso, o corpo do vírus principal (a imagem VxD) é embalado com um algoritmo simples. Já existe um vírus criptografado em arquivos PE (chamado Win95.Mad), mas o Memorial é certamente o primeiro vírus do Windows 95 que mostra recursos oligomórficos. Assim, ele faz o primeiro passo no caminho do polimorfismo do Windows 95.

O Memorial também é um retro-vírus eficaz. Ele manipula o registro do Windows 95 para desabilitar vários programas antivírus conhecidos.

Felizmente, o vírus tem alguns grandes bugs, o que pode atrasar muito a propagação. No entanto, o Memorial.12413 foi relatado como "em estado selvagem" na Suécia, independentemente desses problemas.

Executando um arquivo COM infectado

Os criadores de vírus do Windows 95 começaram a entender o fato de que as pessoas estão trocando mais programas DOS que aplicativos do Windows 95. Isso se torna um grande problema do ponto de vista do vírus: ele simplesmente não pode se espalhar muito, infectando apenas os programas do Windows 95. O Memorial resolve esse problema infectando executáveis ​​do DOS também. Os arquivos infectados funcionam como droppers do módulo principal do VxD.

Quando um arquivo COM infectado com o Memorial é executado, o vírus coloca um arquivo VxD na raiz da unidade C: chamada C: CLINT.VXD. Primeiro, verifica se o Windows está sendo executado no momento. Se estiver, o vírus simplesmente executa o programa host do DOS. Caso contrário, faz sua chamada "Você está aí", que é INT 2Fh AX = 0. Se, ao retornar da chamada, o registrador AX estiver definido como 4AB3h, o vírus assumirá que já está ativo na memória e retornará o controle para o programa host. Em seguida, ele cria o arquivo C: CLINT.VXD com um atributo oculto e começa a gravar nele.

A rotina de escrita aparece como uma função anti-heurística. No entanto, o objetivo dessa função é diferente. O corpo principal do vírus é empacotado em 7508 bytes e esta função deve ser descompactada. O algoritmo é muito simples, mas efetivo. Os arquivos VxD estão no formato LE (Executável Linear). A estrutura desses arquivos contém muitos zeros. É por isso que a embalagem dessas áreas pode ser bastante eficaz. Basicamente, o VxD completo é empacotado em 7508 bytes, o que aumenta para 12413 após a descompactação. Quando o CLINT.VXD está pronto, o Memorial copia um trecho de código de si mesmo para a Tabela de Vetores de Interrupção em 0: 200 e engancha INT 2Fh (Interrupção Multiplex). Desta forma, o vírus não precisa se preocupar sobre como alocar memória, mas será incompatível com alguns aplicativos.

O manipulador INT 2Fh responde a pergunta "Você está lá" e aguarda 1605h no registro AX para verificar a Notificação de Inicialização do Windows. Essa mensagem notifica os drivers de dispositivo do DOS e os TSRs que o Windows 386 de modo avançado padrão ou padrão está iniciando. O Windows chama essa função quando ela começa a permitir que os drivers de dispositivo do DOS e os TSRs que monitoram o INT 2Fh tenham a oportunidade de se preparar para a execução no ambiente do Windows.

Quando essas chamadas iniciais chegam ao manipulador de interrupção do Memorial, o vírus é aberto em C: CLINT.VXD para verificar sua existência. Se a abertura foi bem-sucedida, o Memorial inicializa uma estrutura Win386_Stratup_Info_Struc para direcionar o Windows para carregar o VxD. Qualquer driver de dispositivo ou TSR pode usar um Windows VxD para ajudar a suportar sua operação no ambiente do Windows. Para especificar o nome do VxD, o driver de dispositivo ou o TSR define o membro SIS_Virt_Dev_File_Ptr como o endereço do nome do arquivo do dispositivo virtual. Assim, o Memorial usa um meio documentado de direcionar o Windows para carregar o C: CLINT.VXD. Isso é mais elegante do que modificar a seção de dispositivo do arquivo SYSTEM.INI, que é mais complicada e não é tão bem-sucedida.

Executando um arquivo EXE do DOS infectado

Quando um arquivo EXE infectado é executado, o mesmo código de descompactação assume o controle do ponto de entrada do vírus, como nos arquivos COM. No entanto, esta função irá gravar em C: CLINT.VXD indefinidamente, porque existe um grande erro no código de infecção do DOS EXE. O Memorial usa um ponteiro errado e um parâmetro de tamanho de vírus inválido durante a infecção de EXE. Ele não grava o código VxD compactado (7508 bytes) em arquivos EXE, mas os 12413 bytes descompactados após o código de descompactação. Assim, quando descompactar, o código do conta-gotas extrai uma imagem VxD já descompactada.

Como o código do extrator não sabe sobre esse possível problema, ele grava megabytes de código em C: CLINT.VXD até preencher todo o espaço disponível no disco rígido, mas mesmo assim o controle não retornará ao DOS. Ao usar Ctrl-C durante esta operação ou reiniciar a máquina, o enorme C: CLINT.VXD pode ser encontrado, mas somente se a opção / AH (exibir arquivos ocultos) do comando DIR for usada. Assim, o vírus em arquivos EXE pode ser classificado como "Pretendido". Felizmente, a detecção e desinfecção desses arquivos continua sendo possível.

Executando um arquivo PE infectado

Quando um arquivo PE infectado é executado, o vírus primeiro se descriptografa, porque o corpo principal do vírus é criptografado e compactado. O decodificador tem 46 bytes de comprimento e é oligomórfico (veja abaixo).

Como no caso da infecção COM, o vírus também elimina o C: CLINT.VXD dos arquivos PE. No caso de infecções do DOS, a função conta-gotas leva 275 bytes de código adicional no ponto de entrada do vírus. Nos arquivos PE esta função está no código de 32 bits e é mais complicada do que a versão DOS do mesmo. É por isso que esse código é mais longo: 1360 bytes. Essa função também inclui a rotina de ativação do Memorial e também deve carregar o VxD.

Primeiro, o vírus calcula o ponto de entrada da função GetModuleHandleA na memória. Ele faz isso usando um hack real; ele faz uma pesquisa em estruturas internas do Windows 95. Isso torna a infecção PE um pouco mais fácil depois; o vírus não deve adicionar nomes à tabela de nomes importados. O Memorial não precisa de uma função de correção complicada em seu código de infecção PE para essa finalidade.

Mais tarde, calcula o ponto de entrada de GetProcAddress usando o mesmo truque. Em seguida, ele usa GetModuleHanldeA para obter o identificador do módulo KERNEL32. Usando esse identificador Memorial é capaz de chamar GetProcAddress para obter e salvar endereços de procedimentos CreateFileA-, WriteFile-, ReadFile-, SetFilePointer-, CloseHandle-, GetLocalTime-, LocalAlloc respectivamente. Depois disso, ele usa GetModuleHandleA novamente para obter o controle do USER32. Em seguida, ele usa GetProcAddress novamente para salvar o endereço do procedimento MessageBox.

Depois disso, o vírus chama a função GetLocalTime para verificar a data: se é 10 de abril, o vírus é ativado e exibe uma caixa de mensagem usando o procedimento MessageBox:


Vírus Clinton Haines Memorial por Quantum / VLAD e Qark / VLAD
Clinton Haines, também conhecido como Harry McBungus, Terminator Z e Talon
morreu de overdose de drogas em seu 21º aniversário, 10 de abril de 1997.
Durante seu tempo como escritor de vírus, ele escreveu a família No Frills, X-Fungus,
Daemon e 1984 vírus. Ele era um bom amigo do VLAD e então nós escrevemos
este vírus em sua honra. Esperamos que seja bom o suficiente para fazer justiça a ele.
VLAD se lembra. Descanse em paz
DESCANSE EM PAZ
Caso contrário, ele verifica se .CLINT já está ativo e em execução. Se for, o programa host é executado. Caso contrário, ele cria .C: CLINT.VXD como arquivo normal (sem usar o atributo oculto neste momento) com CreateFileA. Se isso foi bem-sucedido, o Memorial aloca memória chamando o procedimento LocalAlloc. Isso ocorre porque ele precisa descompactar o corpo do vírus compactado em um novo local antes de poder gravar o código no arquivo. Assim, ele descompacta o código VxD (7508 bytes) para o buffer e grava 12413 bytes dele em CLINT.VXD com o procedimento WriteFile. Em seguida, fecha o arquivo com CloseHandle. Depois disso, ele executa o VxD usando o procedimento CreateFileA com o formato de nome especificado para essa finalidade .C: CLINT.VXD. Finalmente, inicia o programa host.

A inicialização (gancho da API do IFS)

Quando o arquivo CLINT.VXD é executado, o vírus aguarda as seguintes mensagens de controle em seu manipulador de mensagens de controle: W32_DEVICEIOCONTROL, INIT_COMPLETE, SYS_DYNAMIC_DEVICE_INIT e SYS_DYNAMIC_DEVICE_EXIT. No caso da mensagem W32_DEVICEIOCONTROL, o vírus retorna 0, uma vez que não deseja se comunicar com outros aplicativos Win32. Quando a mensagem SYS_DYNAMIC_DEVICE_EXIT chega, o Memorial retorna 1 para não permitir a solicitação de descarregamento. No caso de mensagens SYS_DYNAMIC_DEVICE_INIT e INIT_COMPLETE, o vírus executa seu procedimento de inicialização.

Este procedimento conecta a chamada API do DOS IFS (Sistema de Arquivos Instalável) primeiro. Depois disso, ele exclui várias chaves do registro do Windows 95 em 'SystemCurrentControlSetServicesVxd', onde os nomes VxD estaticamente carregados podem ser encontrados; como antivírus VxDs. Primeiro elimina as teclas 'VETMON95' e 'VETMACRO'. Em seguida, apaga as teclas 'NAVAP', 'virusafe' e 'WIMMUN32'. Em seguida, ele abre a seção 'SOFTWAREMicrosoftWindowsCurrentVersionRun' e exclui os seguintes valores: 'NORTON AUTO-PROTECT', 'TBAV para Windows 95', 'Validação de antivírus em qualquer lugar', 'Vshwin32EXE' e 'ViruSafe'. Em seguida, ele vai para 'SOFTWAREMcAfeeScreenScan' e exclui 'bEnableScreenScan', 'bScanAllFiles', 'bScanSubDirs'. Em seguida, exclui as seguintes chaves em 'SOFTWARECybecVET Antivirus for Win32': 'ActionsInfectedAction', 'ActionsSuspectAction', 'MemoryEnabled', 'ResidentFileCheck', 'ResidentInfectedAction', 'ResidentSuspectAction', 'ScanningScan Todos os Arquivos', 'ScanningScan Type', 'ScanningSkip Renomeado ',' ScanningSubfolders 'e define o valor' ScanningExtension List 'para' bin, dll, doc, drv, ovl, sys, ponto 'removendo' com, exe e possivelmente 'scr' desta lista. Desta forma, o Memorial desativa muitos programas antivírus do Windows 95.

Em seguida, o vírus limpa os atributos em C: CLINT.VXD. Depois disso, ele abre o arquivo, obtém e salva seu tamanho e aloca memória suficiente para sua cópia descompactada e empacotada. Então ele se lê do arquivo para o buffer principal. O Memorial fecha o arquivo VxD e o exclui.

Depois disso, ele embala o código VxD no segundo buffer. Finalmente, ele retorna da sua rotina de inicialização.

COM infecção

Quando o Memorial intercepta uma chamada aberta de arquivo, primeiro verifica a extensão do arquivo comparando-a com 'COM' primeiro. Se a extensão for 'COM', o Memorial obtém e salva o atributo do arquivo da vítima e o limpa. Assim, o atributo somente leitura não impedirá a infecção. Em seguida, ele abre a vítima e lê 4 bytes dela. Se o terceiro byte (após o salto inicial) foi 'Z' Memorial assume que o arquivo já está infectado. Em seguida, ele verifica os marcadores 'MZ', 'ZM' para ter certeza de que a estrutura da vítima não é COM. Em seguida, ele verifica o tamanho da vítima e não a infecta se for menor que 7168 ou maior que 51200 bytes. Em seguida, ele lê os últimos 5 bytes do programa e verifica se eles começam com 'SN'. Se isso for encontrado, o vírus não infectará o arquivo. Eu não vejo qualquer outro motivo para esta funcionalidade, exceto para inocular um determinado PC (possível os criadores de vírus), adicionando este marcador especial para o final dos arquivos COM.

Então, o Memorial adiciona o código dropper do DOS (275 bytes) ao final da vítima junto com os bytes da imagem de vírus compactada (7508). Finalmente, modifica o pedido da vítima, alterando os primeiros 4 bytes para um salto inicial + um marcador 'Z' e define o atributo para o original. Assim, o tamanho do vírus é 7783 bytes em caso de infecção por COM.

Infecção EXE do DOS

Se o arquivo foi iniciado com os marcadores 'MZ' ou 'ZM', o vírus verifica a extensão comparando-a com '.EXE' e '.SCR'. Em seguida, ele chama IFSMgr_Get_DOSTime para ter um número base para seu gerador de números aleatórios. Como nos arquivos PE o vírus precisa de um nome de seção adicionado à área de cabeçalho PE e deseja ser oligomórfico, não deseja usar um nome de seção constante. Assim, ele altera o nome padrão de 'CLINTON' para alguma string 'lixo' primeiro.

Basicamente, ele usa um XOR de 8 bits para a criptografia. Durante a criptografia, ele calcula um byte de verificação e o salva como o último caractere da string de nome da seção. Este byte adicional será usado ao verificar infecções PE existentes. O Memorial muta o nome da seção apenas durante as infecções do DOS EXE. Isso torna a mutação lenta o suficiente (oligomorfismo lento).

Quando este estiver pronto, o Memorial abre a vítima, lê o cabeçalho e verifica a assinatura 'MZ,' ZM '. Em seguida, ele lê 4 bytes da posição 3Ch do arquivo. Essa palavra dupla contém um ponteiro para a área de cabeçalho de executáveis ​​do Windows. Se esse ponteiro for 0, o vírus assumirá que o arquivo é um arquivo EXE normal do DOS e tentará infectá-lo como tal. O que verifica o campo de soma de verificação do cabeçalho EXE. Se este é 6666h, o vírus não infecta o arquivo, além disso, se o campo IP for 100h no cabeçalho, o vírus não infectará nenhum deles.

Em seguida, o vírus aumenta o tamanho dos arquivos EXE para o limite de parágrafo e adiciona o código dropper VxD (275 bytes) ao final do arquivo. Então o maior bug do vírus vem: ele grava o VxD descompactado no final do arquivo (12413 bytes). Assim, o tamanho do vírus é de 12688 bytes no caso de arquivos de vítimas DOS EXE. Finalmente, ele modifica o cabeçalho do executável para apontar para o ponto de entrada do vírus.

Infecção PE

Quando o arquivo EXE ou SCR foi assumido como executável do Windows, o Memorial verifica primeiro a assinatura PE. Em seguida, presta atenção ao atributo somente leitura. Em seguida, ele lê a última seção da estrutura Cabeçalho da imagem e calcula o byte de seleção no nome da seção. Se a soma de verificação corresponder ao Memorial, não infecta. Caso contrário, modifica o cabeçalho PE, adicionando a nova seção de vírus a ele. Como o Memorial é um vírus oligomorfo, ele primeiro transforma um decodificador de 46 bytes (veja: Mecanismo Oligomorfo) para o início de seu corpo. Em seguida, ele criptografa a versão PE do conta-gotas VxD, que tem 1360 bytes de comprimento. A criptografia é baseada em um XOR de 8 bits. Em seguida, adiciona o código do decodificador + o código dropper VxD ao final da vítima (1406 bytes). Finalmente, ele criptografa a imagem VxD compactada e a adiciona ao final do arquivo (7508 bytes). Então restaura o atributo da vítima e a fecha. A infecção por PE está pronta. Assim, o tamanho do código do vírus é 46 + 1360 + 7508 = 8914 bytes. Observe, no entanto, que isso pode mudar porque o vírus precisa aumentar o tamanho do arquivo para um alinhamento de seção.

Motor oligomorfo

Este motor é simples mas eficaz. O decrypor básico consiste em 11 partes diferentes. O mecanismo de mutação modifica a ordem desses pequenos blocos alterando alguns deles uns com os outros. Assim, o bloco 1 com 2, 8 com 9, 6 com 7, 3 com 4, 5 com 4 e 10 com 0 podem ser substituídos um pelo outro. Isto dá 2 * 2 * 2 * 2 * 6 todos juntos 96 casos diferentes. Isso dificulta a detecção do vírus em arquivos PE.

Conclusão

Memorial é um vírus muito complexo. Ele mostra que os vírus polimórficos do Windows 95 aparecerão no recurso próximo mais tarde em Mecanismos de Mutação Polimórfica, que podem ser usados ​​apenas com vírus do Windows 95. Isso significa que é hora de implementar novos mecanismos de verificação para esses novos animais.


Link para o original