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

Data de detecção 01/11/2002
Classe Virus
Plataforma Win9x
Descrição

Detalhes técnicos

Este é um vírus parasítico do Windows. Ele se espalha no Windows95 / 98, instala sua cópia na memória do Windows, intercepta as funções de acesso a arquivos e infecta os arquivos PE (Windows Portable Executable). O vírus também afeta os arquivos de ajuda do Windows (.HLP) – ele os modifica para que, quando ativados, o código de vírus seja descartado no disco e executado. O vírus também adiciona seus droppers a quatro tipos de arquivos: RAR, ZIP, ARJ e HA. Os droppers de vírus em arquivos e arquivos HLP têm formato de arquivo COM COM e são executados na caixa DOS, mas são capazes de instalar o código de vírus na memória do Windows, bem como em executáveis ​​infectados do Windows (veja abaixo).

O código do vírus é criptografado com rotinas polimórficas em ambos os droppers do DOS e arquivos do Windows PE. No caso de arquivos do Windows, o vírus também usa a tecnologia "Entry Point Obscuring": o código de vírus não obtém o controle imediatamente quando um arquivo infectado é executado. A instrução JMP_Virus na maioria dos casos é em algum lugar no corpo do arquivo infectado, não no cabeçalho do arquivo e não no endereço de inicialização do arquivo, e é executada somente quando a ramificação do programa correspondente assume o controle.

O vírus é "infector lento": antes de infectar verifica muitas condições e como resultado afeta muito poucos arquivos no computador – apenas cerca de dez arquivos EXE na instalação padrão do Windows95 / 98. O mesmo para arquivos e arquivos HLP – muito poucos deles podem estar infectados. O vírus também atrasa sua rotina de infecção por um minuto antes da primeira infecção e infecta arquivos e arquivos HLP apenas no caso de não haver acesso a esses arquivos durante dois minutos.

O vírus é muito perigoso. Quando arquivos de disco são acessados, ele verifica seus nomes e no caso de vários programas antivírus (ADINF, AVPI, AVP, VBA, DRWEB) o vírus exclui todos os arquivos em todos os diretórios em todos os discos de C: até Z: que o vírus é capaz de excluir e, em seguida, interrompe o sistema pela chamada de VMM Fatal_Error_Handler.

Há mais um arquivo de vítima que é excluído pelo vírus toda vez que ele se instala no sistema. É o arquivo COMMAND.PIF no diretório do Windows.

O vírus tem erros que são letais sob algumas configurações do Windows 95/98 – ao infectar o vírus, a "tela azul" é exibida com a mensagem padrão "Falha geral de proteção".

Durante a instalação no sistema, o vírus, dependendo do seu contador aleatório (em um caso, de 48) exibe a mensagem:


1997 VBA Ltd. E-mail: support@vba.minsk.by

Instalando o Residente da Memória

A cópia "residente" do vírus funciona no nível VxD (Ring0 – kernel do Windows). Programas DOS e aplicativos do Windows não podem acessar essa área por métodos padrão, então o vírus usa vários truques para instalar seu código ali.

Quando o dropper do DOS é executado, o vírus verifica se o Windows está instalado e retorna ao DOS, se não estiver. Caso contrário, o vírus usando chamadas DMPI obtém acesso a Tabelas de Descrição Local (tabelas de alocação de memória do modo de proteção do processador), corrige-as e alterna seu código de 16 bits do DOS para o modo de proteção de 32 bits. O código do vírus funciona como parte do kernel do Windows e pode acessar todas as funções necessárias do Windows.

Quando o arquivo PE infectado é executado, o vírus também corrige as tabelas de alocação de memória do sistema e alterna seu código do nível do aplicativo (Ring3) para o nível do kernel (Ring0). O vírus passa o controle para a mesma rotina de instalação que os droppers DOS infectados.

A rotina de instalação, quando assume o controle, aloca um bloco de memória do sistema, copia o vírus para lá, conecta as funções do Windows e libera o controle. A cópia original do vírus retorna ao DOS (no caso do dropper do DOS) ou restaura os dados e códigos do arquivo do host PE e retorna.

Vírus Hookers

O vírus conecta três funções do Windows. O primeiro é o procedimento de retorno de chamada para o trapping de porta de E / S. O vírus conecta a porta 534Bh e a usa em "Você está aqui?" chamadas. A leitura dessa porta em condições de sistema infectado retorna 21h (caractere "!") No registro AL. As rotinas de instalação de vírus DOS e Windows tentam antes de instalar a memória residente. O número desta porta foi usado para nomear o vírus – 534Bh é "SK" em ASCII.

O segundo gancho é "padrão" para os infectados residentes do Windows – é o gancho da API do sistema de arquivos. Ele intercepta as funções de abertura de arquivo, renomeação e atributo de arquivo get / set. Nessas chamadas, o vírus executa suas rotinas de infecção.

O terceiro gancho intercepta a função "Install FileSystemApiHook" em si (aquela que é usada para instalar o hook anterior). Essa chamada é usada pelo vírus para ocultar sua hooker: quando um novo hook é instalado, o Windows chama essa função. No momento, o vírus intercepta isso, remove seu próprio gancho da API do IFS, instala um novo (que é solicitado) e, em seguida, reinstala o gancho do vírus. Como resultado, o hooker de vírus está sempre no topo da lista de ganchos e é o primeiro a receber controle quando os arquivos de disco são acessados.

Há outro truque no hooker da API do IFS do vírus: para acessar os drivers do sistema de arquivos (o destino das chamadas do FileSystem), o vírus usa o endereço do manipulador de sistema "nativo". O vírus obtém esse endereço de campo puramente documentado na pilha do chamador e usando esse endereço executa chamadas diretas para funções de arquivo necessárias.

Infecting Files

Quando o hooker da IFS API obtém o controle e a rotina de infecção é ativada pela primeira vez, ele infecta o aplicativo de shell do Windows (geralmente – EXPLORER.EXE). Para localizá-lo, o vírus abre o arquivo SYSTEM.INI no diretório do Windows, examina a instrução "shell =" e a infecta.

Este arquivo é sempre executado, então o vírus não pode modificá-lo. Para corrigir esse problema, o vírus usa o truque de "upgrade". O vírus copia esse arquivo com outro nome (adiciona um à última letra do nome do arquivo: EXPLORER.EXE -> EXPLORER.EXF, por exemplo), infecta o novo arquivo e força o Windows a "atualizar" o arquivo original com o arquivo infectado. Para fazer isso, o vírus usa a maneira padrão: ele cria o arquivo WININIT.INI no diretório do Windows e grava as instruções necessárias para "Renomear".

Se o shell do Windows já estiver infectado, o vírus infectará o arquivo que é acessado. Primeiro de tudo, verifica a extensão do nome do arquivo. No caso de arquivos .EXE, .SCR e .DLL, o vírus salta para a rotina de infecção do arquivo PE; no caso do arquivo .HLP, o vírus corrige o problema com o código de descarte; no caso dos arquivos .RAR, .ZIP, .ARJ e .HA, o vírus insere em seu conteúdo seu próprio conta-gotas executável.

Infectando o Windows PE

Ao infectar arquivos PE, o vírus criptografa e grava seu código na seção Relocation (Fixup) e, como resultado, sobrescreve esses dados. Devido à maneira como o Windows usa para carregar aplicativos na memória, na maioria dos casos ele não presta atenção às realocações – todos os aplicativos são carregados nos mesmos endereços e nenhuma realocação é usada. Em alguns casos, quando um aplicativo é carregado por outro aplicativo host na memória do host, o Windows Loader processa a tabela de realocação e faz as alterações necessárias no código do aplicativo. Para corrigir isso, o vírus modifica os campos de cabeçalho PE: limpa os sinalizadores de realocação no campo Característica (isso significa que não há realocação no arquivo) e define o endereço zero da seção Realocação. Como resultado, o aplicativo afetado simplesmente não pode ser carregado em outro endereço (para endereçar o espaço de outro aplicativo), mas funciona perfeitamente como os aplicativos independentes.

O vírus faz as alterações necessárias no cabeçalho da seção Relocation: define suas características como Readable e Initialized, dependendo de seu contador aleatório (em 1 caso de 8) muda o nome da seção para random, criptografa seu corpo e grava nele. O vírus também verifica o tamanho da seção Relocation – é grande o suficiente para o código de vírus e infecta arquivos apenas no caso de o código de vírus preencher o corpo da seção. Como resultado, o vírus não aumenta o tamanho dos arquivos PE enquanto os infecta.

Para obter controle quando programas infectados são executados, o vírus não modifica o endereço de entrada no cabeçalho PE. Ele usa outra forma mais complexa – corrige aleatoriamente o código selecionado no corpo do programa vítima e grava a rotina JMP_Virus para lá. Como resultado, o código do vírus não é executado imediatamente quando o programa infectado é ativado. Ele é executado somente no caso de a ramificação patched obter o controle. Em alguns casos, quando esse ramo é executado muito raramente (se é rotina de tratamento de erros, por exemplo), o vírus pode "dormir" no programa por um longo tempo e, em seguida, salta em alguma situação extra.

Para localizar a posição no programa a ser corrigido, o vírus lê os blocos do arquivo da vítima e o analisa para as sub-rotinas C / Pascal. Essas rotinas têm cabeçalhos e rodapés padrão, e o vírus só precisa encontrá-los e ver que há espaço suficiente para seu código JMP_Virus entre as instruções de entrada e saída da sub-rotina.

A rotina JMP_Virus que passa o controle da sub-rotina patches para o código principal do vírus não é apenas uma instrução JMP. É mais sofisticado: é um loop polimórfico que descriptografa o código principal do vírus antes de passar o controle para ele – ele tem até 168 bytes de código.

Resumo, a execução dos programas infectados é semelhante à seguinte: o Windows carrega e executa o programa, e suas rotinas começam a funcionar. O vírus "dorme" no momento porque a sub-rotina corrigida ainda não foi executada. Quando este código é controlado, a rotina do vírus JMP_Virus é ativada. Ele descriptografa o código de vírus principal (que é colocado na seção Relocation) e salta para o código descriptografado. A rotina de instalação de vírus obtém controle, copia vírus para a memória do Windows, instala ganchos de vírus, restaura a sub-rotina do host corrigido e retorna o controle a ela.

É necessário notar que, em alguns casos (quando o shell do Windows está sendo infectado, ou nenhuma rotina C / Pascal foi encontrada), o vírus grava seu patch JMP_Virus diretamente no endereço Entry do programa. Nesse caso, o código do vírus fica imediatamente controlado quando o arquivo infectado é executado.

Infecting Archives

O vírus afeta quatro tipos de arquivos: RAR, ZIP, ARJ e HA. Ao infectá-los, o vírus analisa os formatos internos dos arquivos, adiciona o dropper DOS ao final do archive como um último item e modifica cuidadosamente a estrutura do archive, incluindo os campos CRC. Os únicos arquivos estão infectados: que não tenham menos de dez arquivos e tenham pelo menos um arquivo COM ou EXE. A adição de vírus aos arquivos é um arquivo COM COM que possui nome gerado aleatoriamente e extensão COM ou EXE.

No caso de arquivos RAR, o vírus tem mais uma ramificação comparando com outras rotinas de infecção de arquivo. Essa ramificação procura por arquivos "armazenados" nos arquivos RAR e, se um arquivo tiver registro de data e hora específico, o vírus lê os dados armazenados finalizados. Esse truque permite que o vírus execute outros programas sem ação do usuário – ele pode ser usado para "atualizar" o vírus, para executar um espião ou qualquer outro tipo de programa. Esse recurso de vírus se parece com um "backdoor" que pode ser usado pelo autor de vírus para obter controle em outros computadores.

Ajuda infectada

A possibilidade de infectar arquivos de ajuda do Windows baseia-se no fato de que esses arquivos têm seus próprios sub-programas de script (macros). Esses scripts são executados automaticamente quando o WinHelp ativa os arquivos de ajuda, e a linguagem de script é poderosa o suficiente para acessar os arquivos do disco, criá-los e executá-los.

O vírus usa esse recurso para infectar os arquivos de ajuda do Windows. Ele grava seu dropper DOS no final do arquivo HLP como uma "sobreposição" (o cabeçalho do arquivo HLP tem o campo "comprimento do arquivo" no cabeçalho e o dropper de vírus está fora desses dados), modifica a estrutura interna do HLP e adiciona seu próprio script para lá. Este script tem dez instruções escritas para a seção [CONFIG] ("| SYSTEM" em termos de internos do HLP) que é processada automaticamente quando o arquivo de ajuda infectado é ativado. Essas dez instruções de vírus extraem e executam um pequeno carregador de vírus (cerca de 380 bytes). O script de vírus cria este carregador como um arquivo DOS (com nome aleatório) na unidade C:, grava um código para lá e o executa – e o gerenciador de vírus assume o controle.

O código do carregador de vírus no script HLP é convertido para o formato ASCII de 7 bits – cada byte é convertido em duas letras alfabéticas. Quando este código assume o controle, ele se converte de volta para código binário, então recebe o nome do arquivo HLP do host (que os scripts de vírus passam como argumento), lê o cabeçalho do arquivo HLP, obtém o código "overlay" do vírus, lê, sobrescreve seu próprio arquivo COM e re-executa-lo. O dropper do DOS do vírus obtém o controle e o vírus se instala na memória, etc.

Há uma exceção nessa rotina que causa problemas. O código do carregador de vírus é convertido em ASCII de 7 bits, mas o loop que restaura este código possui códigos que estão fora do limite de 80h. Quando essas seqüências de caracteres são salvas do arquivo Windows HLP no arquivo DOS, o Windows as processa como seqüências de texto e converte caracteres de alto ASCII de acordo com a página de códigos instalada. Escusado será dizer que, em diferentes páginas de código, o resultado da conversão é diferente. A única página de códigos traz o código correto – esta é a página de códigos russa (isso significa que o autor do vírus tinha suporte de idioma russo instalado em seu computador). Se não houver suporte russo instalado no sistema, o código do carregador de vírus está corrompido, não funciona e pára quando executado.

Além disso, é necessário observar que, ao descartar seu arquivo COM, o script de vírus verifica a presença do arquivo específico do NT C: NTLDR e retorna se esse arquivo for encontrado.

Win95.SK.8699

Esta é a versão melhorada do vírus. É muito fechado para o original, mas usa mais métodos em sua criptografia e um mecanismo polimorfo mais forte. Ele também usa um truque para desabilitar monitores antivírus: ele localiza o componente antivírus GK95.VXD (AVP e F-SECURE) carregado na memória do Windows e os desativa por um patch. A rotina de infecção de arquivos do HLP é corrigida nesta versão de vírus – ela funciona com qualquer página de código, não apenas com uma em russo.


Link para o original