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.

Trojan-Banker.Win9x.Libertine

Classe Trojan-Banker
Plataforma Win9x
Descrição

Detalhes técnicos

Este vírus é um infector multi-plataforma e polimórfico que afeta os arquivos DOS e Win32. Foi nomeado após as cadeias de texto em seu código:


[Win32.Libertine v1.07b]
Copyright 1998 xxxx por
O vírus pode ser encontrado em três formas diferentes:
  • arquivos Win32 PE infectados
  • arquivos COM infectados
  • Win32 PE dropper (código de vírus puro 31672 bytes)
Devido a bugs os arquivos COM e EXE infectados não podem ser executados no Windows NT, eles são finalizados com a mensagem de erro NT ou DrWatson padrão. Apesar disso eu nomeio o vírus Win32, não o Win95 porque o vírus pode espalhar o vírus em computadores NT sem problemas.

Ao infectar os arquivos Win32 e DOS, o vírus grava seu código completo de 32 Kb no final dos arquivos e modifica os cabeçalhos de arquivo para passar o controle para a rotina de vírus. Os endereços das rotinas de entrada são diferentes nos três casos de infecção. O vírus em ambos os programas Win32 e DOS infectados quando assume pesquisas de controle para o dropper Win32 (o arquivo C: MYLENE.EXE), executa e retorna o controle para o programa host. Se não houver nenhum conta-gotas no diretório-raiz na unidade C:, o vírus primeiro cria e depois o executa.

Essas rotinas de ativação do dropper são muito curtas em arquivos infectados. No caso de arquivos COM, é apenas cerca de 200 bytes simplesmente criar-write-fechar-executar rotina. No caso dos arquivos Win32, é mais sofisticado, mas também bastante bobo e curto.

Assim, o vírus em arquivos infectados apenas cria e executa o conta-gotas – não mais, e todas as funções de vírus de infecção e carga se encaixam no conta-gotas do vírus Win32.

Executando o Dropper

Quando o conta-gotas é executado, o vírus realiza primeiro alguns truques para ocultar sua presença no sistema. Para evitar mensagens de sistema de violação de acesso, o vírus usando a função KERNEL32 SetErrorMode desabilita a mensagem de erro Falha de Proteção Geral. O Windows continuará a executar o aplicativo sem nenhum relatório sobre violação de proteção.

O vírus então verifica o sistema onde ele é executado (Windows95 / 98 ou Windows NT) e, no caso do Windows9x, corrige o banco de dados de processos não documentados do sistema e configura dois sinalizadores – NukeProcess e ServiceProcess. Esses sinalizadores são definidos para pelo menos dois propósitos: a) o processo não é visível na lista de tarefas Ctrl-Alt-Del; b) o processo não é finalizado quando o usuário efetua logoff. Para habilitar esses sinalizadores, o vírus re-executa o dropper com o argumento de ID "sexy".

Sendo executado em ambiente de sistema com patches, o vírus salta para outras rotinas: rotina anti-vírus, carga útil e infecção.

Anti-antivírus

Para desabilitar a proteção antivírus, o vírus tem apenas um anti-vírus como alvo, ou seja, o APVI – o verificador de integridade do Inspetor AVP (scanner CRC). O vírus procura o arquivo AVPI, abre e procura por código específico. Se esse código for encontrado, o vírus o substituirá por instruções do NOP. Dependendo das diferentes versões do AVPI que causaram efeitos diferentes: o AVPI não detecta alterações no sistema ou interrompe imediatamente a verificação e exibe a caixa de diálogo de estatísticas.

O vírus obtém o nome do arquivo AVPI usando o registro do sistema. Ele abre a chave HKEY_USERSDefaultSoftwareKasperskyLabAVPI, obtém o caminho para o diretório AVPI, abre o arquivo AVPICHCK.DLL, verifica e corrige a correção. Para evitar a duplicação de patches, o vírus armazena o ID "kcah" ("hack" write backward) no cabeçalho do arquivo no deslocamento 0030h.

O vírus também finaliza o AVPI, se estiver ativo. Para fazer isso, o vírus encontra a janela AVPI32, obtém seu ID de thread, abre e encerra o processo.

Infecção

Quando a rotina de infecção obtiver o controle, o vírus verifica todos os arquivos em todas as árvores de subdiretórios em todos os discos rígidos instalados a partir de C :, se houver um disco não fixo na seqüência (CD-ROM, remoto ou outro), o próprio vírus será encerrado.

Quando um arquivo é encontrado, o vírus verifica a extensão de nome de arquivo COM ou EXE. O vírus infecta apenas esses arquivos e procura pela entrada do próximo arquivo ou subdiretório. Se o arquivo tiver extensão executável, o vírus com probabilidade de 7/8, dependendo do cronômetro do sistema, passa para a rotina de infecção, caso contrário, continuará pesquisando, assim como no caso de extensão de nome não executável.

Em primeiro lugar, o vírus separa os arquivos COM e EXE comparando seus primeiros dois bytes com o selo mágico MZ. No caso do arquivo EXE, o vírus então verifica o Portable Executable e os selos de identificação do vírus – palavras duplas "PE" no topo do cabeçalho e "IM!" no campo PE CheckSum. Ao adicionar seu código ao final dos arquivos executáveis ​​portáveis, o vírus cria uma nova seção chamada _Mylene_, modifica o endereço do ponto de entrada e alguns outros campos necessários. Em seguida, ele executa o mecanismo polimórfico, criptografa sua cópia e a grava no final do arquivo PE na seção recém-criada.

No caso do arquivo COM, o vírus também se escreve no final do arquivo, mas também converte o formato de arquivo para EXE, adicionando o cabeçalho EXE ao topo do arquivo. O vírus não infecta os arquivos DOS duas vezes – ele verifica o formato de arquivo interno e afeta apenas os arquivos COM. Ser infectado eles têm formato EXE e são contornados pela rotina de infecção por vírus. O vírus também não infecta arquivos com a sequência de texto "ENUN" no final dos arquivos. Este ID significa que esses arquivos COM são protegidos pelo CRC, então o vírus evita infectá-los. O vírus também não infecta arquivos COM pequenos e grandes com comprimento abaixo de 2K ou acima de 60K.

Execução de arquivo COM infectado

Enquanto infecta os arquivos DOS COM, o vírus os converte para o formato EXE, ou seja, os arquivos COM infectados têm o cabeçalho EXE: selo mágico MZ no topo e todos os campos necessários do cabeçalho EXE. A investigação cuidadosa do cabeçalho do arquivo infectado mostra imediatamente a origem do programa pelo hacker: vários campos possuem valores que não podem ser encontrados em programas comuns. Primeiro de todos os campos HeaderSize (Paragraphs in Header) mantém zero, ou seja, isso significa que não há bytes no cabeçalho EXE (mas há pelo menos dois – 'M' e 'Z'). O segundo campo suspeito é "CS na entrada" com o valor -100h (FFF0h) armazenado em. Usar ambos os campos no mesmo cabeçalho EXE força o DOS a carregar tal arquivo EXE como arquivo COM padrão: os bytes de 0000 até 00FFh são ocupada pelo Prefixo do Segmento do Programa, os bytes de 0100h até o final da memória alocada são para a imagem do arquivo, e o primeiro byte do arquivo é colocado no deslocamento 0100h. No caso de arquivos COM COM, a imagem do arquivo não pode se sobrepor a um segmento (64K), no caso de arquivos EXE do DOS, a imagem carregável pode ser de qualquer tamanho que preencha um bloco de memória livre.

Usando o truque COM-> EXE, o vírus é capaz de infectar arquivos COM de qualquer tamanho, após a conversão, eles não perdem a funcionalidade se o tamanho do arquivo ultrapassar a limitação de 64K ao infectar. Lembre-se do tamanho do vírus – sem converter para o formato EXE, o vírus não seria capaz de infectar arquivos COM de tamanho superior a 32Kb. Outro efeito importante do truque é a maneira fácil de retornar o controle ao programa host – o vírus não faz nada, apenas restaura os primeiros 4Fh de bytes do cabeçalho do arquivo e salta para lá.

Assim, o código do vírus é carregado na memória, começando dos primeiros bytes (carimbo "MZ") até o último, e o controle é passado para o endereço que é apontado pelo cabeçalho EXE. No caso deste vírus, o código de entrada é colocado muito perto do topo do arquivo – no endereço 0020h. Essa rotina usando instruções i386 de 32 bits obtém o deslocamento do código principal do vírus (esse deslocamento é armazenado no endereço 001Ch no cabeçalho), converte-o para o segmento de 16 bits: formato de deslocamento e salta para lá. A rotina de entrada também conecta INT 24h para impedir a mensagem de erro padrão do DOS durante a gravação em volumes protegidos contra gravação, não tenho idéia do motivo pelo qual o autor do vírus o colocou aqui, mas não no código de vírus principal.

Quando o código principal do vírus recebe o controle, ele verifica a presença do Windows. Se não houver nenhuma execução do Windows, ou se a versão do Windows for menor que 4.0 (Windows95), o vírus restaurará os bytes do programa de host original em sua parte superior e retornará o controle para lá. Se o Windows for executado, o vírus cria o arquivo C: MYLENE.EXE, grava o dropper Win32, fecha o arquivo e o executa. O conta-gotas assume o controle e o vírus retorna em seu nível de infecção.

Execução de arquivo PE infectado

Quando um arquivo PE infectado é executado, a rotina polimórfica do vírus assume o controle, descriptografa o código do vírus e salta para a rotina principal. Esta rotina não é a mesma que no caso do arquivo COM. É um programa de 32 bits que opera com memória e recursos do Windows, mas o objetivo dessa rotina é o mesmo que no caso do arquivo COM: ele cria e executa o conta-gotas de vírus.

Para acessar a função do Windows, o vírus tem que importá-los usando a Tabela de Importação do PE ou obter seus endereços verificando o kernel do Windows. O vírus seleciona o segundo caminho: ele presta atenção ao ambiente (Windows95 / 98 ou Windows NT – o vírus usa os desvios corretos em ambos os casos), analisa o KERNEL32 e procura por funções CreateFileA, WriteFile, CloseHandle e WinExec. O procedimento de vírus em arquivos PE infectados é bastante simples e não precisa de mais, mas apenas dessas quatro entradas. // Aqui está um bug no código do vírus que interrompe sua propagação no WindowsNT.

O vírus, então, da mesma maneira que no caso de um arquivo DOS COM infectado cria o arquivo C: MYLENE.EXE, grava o código do dropper, fecha e executa esse arquivo. O conta-gotas assume o controle e esse algoritmo de vírus do ramo PE retorna de volta à raiz.

Carga útil

Antes de chamar rotinas de anti-vírus e infecções, o vírus chama a rotina do gatilho. Essa rotina é executada com uma probabilidade de 1/8, dependendo do contador de tempo do sistema, e altera a imagem de fundo do Windows (WallPaper). O vírus simples cria o arquivo C: MYLENE.BMP, grava uma imagem do Mylene Farmer (?), Converte-o para o formato BMP e declara como uma imagem do Windows WallPaper:

Ao fazer isso, o vírus acessa o visualizador JPEG instalado a partir do registro do sistema:


HKEY_LOCAL_MACHINESOFTWAREMicrosoftFerramentas compartilhadasGraphics FiltersImportJPEG
O vírus carrega a biblioteca correspondente na memória, obtém o endereço e chama a rotina ImportGr. O vírus realiza essa conversão apenas para diminuir seu tamanho: o resultado da imagem BMP é de 160K, de modo que o vírus mantém em seu código a variante JPEG de 16K da mesma imagem. Como imagem do WallPaper, o Windows95 aceita apenas o formato BMP, portanto, o vírus precisa converter a fonte JPEG em BMP.

Em seguida, a imagem resultante é salva no mesmo arquivo C: MYLENE.BMP que é registrado como a imagem do papel de parede para a área de trabalho do Windows:


HKEY_CURRENT_USERPainel de controle do painel
O único ponto menor nesta conversão é que eu tenho tudo o que é necessário no meu computador de teste, mas o vírus falhou ao atualizar meu papel de parede.

Ação Direta, mas Residente na Memória?

Antes de infectar cada arquivo, o vírus chama a função de API padrão do Windows Sleep e atrasa sua atividade por 3 segundos. Este é o mesmo (talvez o mais) bloco importante de código de vírus. Apenas uma chamada faz com que o vírus seja rotulado como "residente na memória".

O resultado desta instrução sonolenta o código do vírus pode permanecer na memória do sistema por muito tempo. Vamos lá são 1000 arquivos COM e EXE no computador. O vírus vai dormir por 3 segundos antes de infectar cada um deles, então ele permanecerá na memória por 50 minutos (3000 segundos).

O vírus é residente na memória: ele permanece na memória do sistema por um longo período e outro aplicativo pode ser executado enquanto a rotina de infecção por vírus está ativa. Apesar disso, é um vírus de ação direta (como os vírus residentes que não são de memória) – ele procura por arquivos na árvore de subdiretórios e os infecta, e nenhum evento é conectado.

Mesmo assim, os criadores de vírus tentam seguir o mesmo caminho conservador do DOS: eles criam o Windows VxD que engancha a API do IFS, semelhante ao DOS TSR, enganchando o INT 21h. Esta é a decisão mais popular para criar a memória residente do Windows nos dias de hoje. Talvez o vírus Libertine seja o primeiro vírus com recurso de semi-residente, e no futuro veremos mais vírus desse tipo – isso é muito mais fácil de depurar aplicativos do Windows do que o Windows VxD ou o driver NT.


Link para o original