Classe principal: VirWare
Vírus e worms são programas maliciosos que se auto-replicam em computadores ou através de redes de computadores sem que o usuário esteja ciente; cada cópia subsequente de tais programas maliciosos também é capaz de se auto-replicar. Programas maliciosos que se espalham através de redes ou infectam máquinas remotas quando são ordenados pelo “proprietário” (por exemplo, Backdoors) ou programas que criam múltiplas cópias que não podem se auto-replicar não fazem parte da subclasse Vírus e Worms. A principal característica usada para determinar se um programa é ou não classificado como um comportamento separado dentro da subclasse Vírus e Worms é como o programa se propaga (ou seja, como o programa malicioso espalha cópias de si mesmo via recursos locais ou de rede). como arquivos enviados como anexos de email, através de um link para um recurso web ou FTP, através de um link enviado em uma mensagem ICQ ou IRC, via redes de compartilhamento de arquivos P2P, etc. Alguns worms são distribuídos como pacotes de rede; estes penetram diretamente na memória do computador, e o código do worm é então ativado. Os worms usam as seguintes técnicas para penetrar em computadores remotos e iniciar cópias de si mesmos: engenharia social (por exemplo, uma mensagem de email sugerindo que o usuário abre um arquivo anexado), explorando erros de configuração de rede (como copiar para um disco totalmente acessível) e explorando lacunas na segurança do sistema operacional e do aplicativo. Os vírus podem ser divididos de acordo com o método usado para infectar um computador: vírus de arquivo vírus do setor de inicialização vírus de macro vírus de script Qualquer programa dentro dessa subclasse pode ter funções adicionais de cavalo de Tróia. Também deve ser notado que muitos worms usam mais de um método para distribuir cópias via redes. As regras para classificar objetos detectados com múltiplas funções devem ser usadas para classificar esses tipos de worms.Classe: Virus
Os vírus replicam nos recursos da máquina local. Ao contrário dos worms, os vírus não usam serviços de rede para propagar ou penetrar em outros computadores. Uma cópia de um vírus só chegará aos computadores remotos se o objeto infectado, por algum motivo não relacionado à função de vírus, estiver ativado em outro computador. Por exemplo: ao infectar discos acessíveis, um vírus penetra em um arquivo localizado em um recurso de rede, um vírus se copia para um dispositivo de armazenamento removível ou infecta um arquivo em um dispositivo removível que um usuário envia um email com um anexo infectado.Plataforma: DOS
No platform descriptionDescrição
Detalhes técnicos
Esta é uma família de vírus parasitas muito perigosos, polimórficos e furtivos. Esses vírus têm mais de 7K de comprimento, são muito complexos e talvez sejam os vírus DOS mais complexos. Esses vírus infectam arquivos EXE, OBJ e LIB e anexam os arquivos COM a arquivos ZIP, ARJ e RAR. Os vírus contêm as cadeias de texto internas:
Terminação anormal do programaO vírus / DOS 0.54 Copyright (c) 1995 Zhengxi LtdAtenção! Este programa apenas para uso interno!
Instalação
O código do vírus recebe o controle de pontos diferentes dependendo do modo de infecção, mas em todos os casos o destino é a rotina de decriptação polimórfica. Nos arquivos EXE (anexando) a rotina de descriptografia recebe o controle imediatamente quando um arquivo EXE é carregado na memória para execução, em arquivos EXE (inseridos) - do código do carregador (veja infecção EXE), nos arquivos vinculados ao OBJ / infectado Arquivos LIB - da instrução CALL (consulte infecção OBJ / LIB), os droppers COM têm instrução JMP em seus inícios, que o JMP traz o controle para a rotina de descriptografia.Sendo descriptografado, a rotina de instalação do vírus recebe o controle. O vírus prende INT 1 (One Step Tracing) e rastreia INT 21h. Durante o rastreamento, o vírus procura por algum código específico no manipulador INT 21h (esse código está presente no DOS 5.xe no DOS 6.x). Se esse código for encontrado, o vírus verificará várias condições e terminará a instalação em alguns casos.
O vírus termina a instalação se:
- MS Windows está instalado
- unidade de inicialização é A: ou B:
- INT 8, 13h, 28h aponta para o mesmo segmento (para sair da instalação se o monitor antivírus estiver instalado?)
- dia do arquivo de host (data e hora) é o mesmo ou perto do dia atual (dois bits mais altos do dia atual número XORed com dia do arquivo é igual a zero)
Manipulador INT 21h:... ...+ ------- 2E FF 1F ???? CALL FAR CS: Int25 � C7 06 ???? ; mundo magico? � Int25: ???? ???? ???? ???? ; longe addr de INT 25h � ... ... � +> Manipulador INT 25h:+ -------- EA ???? ???? JMP FAR VirusHandler � ... ... � +> Manipulador de vírus:2E 8F 06 ... POP CS: Caller_IP... ...Como resultado, o vírus tem o mesmo manipulador para interceptar as chamadas INT 21h e INT 25h. Para separar essas chamadas, o vírus verifica o endereço do chamador (Caller_IP). Se a chamada for do manipulador INT 21h, o vírus passará o controle para a rotina do manipulador Vírus INH 21h, em outro caso, o manipulador Vírus INT 25h receberá o controle.
A rotina de instalação está completa, mas o vírus pode mover seu código para outros blocos de memória (veja a análise do manipulador INT 21h). Assim, a cópia TSR do vírus não ocupa os mesmos blocos da memória do sistema, mas pode mover-se para outros endereços, incluindo os do UMB.
Em seguida, o vírus retorna o controle para o programa host. Existem três variantes diferentes de tal retorno, elas dependem do método de infecção. No caso de conta-gotas COM, o vírus exibe apenas a mensagem:
Terminação anormal do programae retorna ao DOS com a função Terminate (INT 21h, AH = 4Ch). No caso do método de infecção de anexação EXE, o vírus restaura o cabeçalho do arquivo original usando o mecanismo polimórfico (gera uma rotina de descriptografia polimórfica e executa-a para restaurar o cabeçalho original, ver infecção por EXE abaixo). No caso da maneira de inserir EXE, o vírus simplesmente retorna ao programa hospedeiro porque o carregador de vírus inserido no arquivo restaura o código original sozinho. No caso do arquivo OBJ / LIB, o vírus também retorna ao programa host (veja infecção por OBJ / LIB abaixo).
Manipulador INT 21h
O vírus intercepta 18 das funções INT 21h:3Dh, 6Ch - Abrir / Criar Arquivo3Eh - Fechar Arquivo3Fh - arquivo lido42h - Lseek4Bh - executar arquivo41h - Excluir arquivo11h, 12h - FindFist / Próximo FCB4Eh, 4Fh - FindFist / Next ASCII00h, 4Ch - Terminar31h - Fique TSR67h - Definir contagem de identificadores48h, 49h, 4Ah - funções de gerenciamento de memória (alocar, liberar, redimensionar)As funções Set Handle Count, Execute File e Memory Management são usadas pelo vírus para esconder seu código na memória do sistema - o vírus manipula com blocos MCB para não ficar visível no mapa da memória enquanto estiver usando utilitários de navegação de memória.
Ao interceptar as funções Terminate, Stay TSR e FreeMemory, o vírus move seu código para um novo endereço na memória do sistema. O vírus aloca novo bloco da memória (que pode ser convencional ou bloco de memória UMB) e copia a si mesmo para lá. Portanto, embora a instalação do vírus não afete os blocos UMB para colocar sua cópia TSR, ela pode se mover para o UMB e se ocultar lá.
Enquanto arquivo abrindo o vírus executa várias chamadas diferentes. Primeiro, o vírus verifica o modo de abertura e, se o arquivo estiver aberto para gravação, o vírus desinfecta o arquivo.
Antes da desinfecção, o vírus verifica se o arquivo é acessado e o programa que acessa esse arquivo (chamador). O vírus compara o nome do programa de acesso (chamador) com a lista de nomes (veja abaixo), e não desinfecta o arquivo acessado se o nome do programa de acesso for daquela lista. Os nomes dos arquivos são:
UUENCODE.EXE, PKLITE.EXE, LZEXE.EXE, NDD.EXE, DIET.EXE, AFD.EXE, SD.EXE,SPEEDDSK.EXE, DEFRAG.EXE, TLINK.EXE, LINK.EXENo caso da função AH = 3D00h (Open ReadOnly), o vírus executa algumas ações estranhas. Ele verifica o código do chamador e corrige o código. Parece patch de algum scanner anti-vírus. Felizmente, o vírus tem o bug e esse ramo nunca é executado.
Ao abrir o arquivo, o vírus também traz o controle para a rotina do stealth - o vírus substitui o comprimento do arquivo pelo original.
Ao ler o arquivo, o vírus chama a rotina stealth. Em caso de leitura do cabeçalho do arquivo infectado, o vírus lê, descriptografa e copia o cabeçalho original no buffer de leitura.
No caso da função Lseek, o vírus traz o controle para outra rotina furtiva do vírus - o vírus não permite buscar o tamanho original do arquivo.
Ao excluir o arquivo infectado, o vírus o desinfecta.
Ao procurar os arquivos com chamadas FindFirst / Next, o vírus substitui o comprimento do arquivo pelo original, caso o arquivo esteja infectado.
As chamadas ASCII FindFist / Next também são usadas pelo vírus para capturar os arquivos para infecção. O vírus salva o nome de qualquer arquivo que é acessado com a função FindFirst e aproximadamente cada quinto arquivo (com probabilidade 3/16) acessado com a função FindNext. O vírus tem apenas um buffer para o nome do arquivo, então cada nome seguinte sobrescreve o anterior.
Durante o fechamento de qualquer arquivo, o vírus verifica e infecta o arquivo com o nome que está armazenado no buffer. O vírus também infecta o arquivo que está fechado, mas o faz com probabilidade 1/4 (pelo resultado do gerador aleatório do vírus)
Infecção
Antes de infectar o arquivo, o vírus verifica várias condições:- o arquivo não é "apenas cria", comparando o número do dia atual com o carimbo de data e hora do arquivo (o mesmo da instalação)
- o arquivo é local e não em A: ou B: drive
- o nome do arquivo não é *.? V? (* .OVL?)
- há espaço livre em disco suficiente (verifica com INT 21h, AH = 36h)
Infecting Arquivos EXE
O vírus infecta o EXE por três métodos diferentes - anexando, inserindo e infectando arquivos em arquivos auto-extraíveis.Primeiro, o vírus verifica a estrutura do arquivo e, se for um arquivo EXE de extração automática (criado pelo ZIP2EXE, por exemplo), o vírus infecta o arquivo anexado (ZIP, ARJ, RAR) pelo método descrito abaixo - cria o conta-gotas COM e adiciona-o ao conteúdo do arquivo.
Em seguida, o vírus verifica o comprimento do arquivo e não infecta os arquivos com o comprimento menor que 400h (1024) bytes. Se o comprimento do módulo carregável (nota: não o tamanho do arquivo) for maior que 32K, o vírus inserirá o carregador no meio do arquivo. Em outro caso, o vírus infecta o arquivo adicionando o método.
Ao infectar os arquivos, anexando o método, o vírus lê o cabeçalho do arquivo, criptografa e salva-o no final do arquivo. Em seguida, o vírus executa seu gerador polimórfico e salva o corpo do vírus criptografado e os loops polimórficos no final do arquivo. Para terminar a infecção, o vírus aumenta o comprimento do arquivo para o valor que está sendo dividido por 9Dh, o resto 25h (para detectar arquivos já infectados, é o selo "ID" do vírus) e modifica os campos de cabeçalho EXE (registros e tamanho do módulo).
Observação: o vírus criptografa o cabeçalho original do arquivo host com o loop de criptografia polimórfico e esse loop é diferente da rotina usada durante a criptografia do corpo do vírus. Ou seja, o vírus chama o mecanismo polimórfico duas vezes - enquanto criptografa o cabeçalho EXE original e ao mesmo tempo criptografa o corpo principal.
Durante a execução do arquivo EXE infectado, os loops de descriptografia restauram o corpo do vírus principal, mas não o cabeçalho do arquivo original. Para retornar ao programa host, o vírus precisa descriptografar os dados do host, mas o mecanismo gera loops aleatórios com funções de criptografia selecionadas aleatoriamente. Para resolver esse problema, o vírus armazena os valores iniciais do gerador aleatório enquanto criptografa os dados do host e executa o gerador polimórfico com os mesmos valores ao descriptografar esses dados. Como resultado, o gerador traz o mesmo código que foi usado durante a criptografia dos dados do host e, sendo executado, essa rotina o descriptografa.
Infecting Arquivos EXE (Inserção)
Se o tamanho do arquivo for maior que 32K, o vírus procurará o início do módulo principal EXE (logo após o cabeçalho EXE), lerá 6K do código e procurará as rotinas C / Pascal lá. Normalmente, as rotinas C / Pascal começam no mesmo "cabeçalho" que salva o registrador BP, e move o ponteiro da pilha SP para BP.O vírus varre o código para esses "cabeçalhos" e se tal código for encontrado, o vírus varre os próximos 54h de código para instruções RET ou CALL FAR para evitar a sobreposição da próxima sub-rotina ou o endereço realocado. Se tal código (RET ou CALL FAR) for encontrado, o vírus sairá da rotina de infecção.
Em seguida, o vírus lê 54h bytes dessa rotina, substitui-o pelo código do carregador de vírus, depois criptografa o corpo principal do vírus com o mecanismo polimórfico e o salva no final do arquivo. Em seguida, o vírus criptografa com a função SUB simples o código original da sub-rotina e a segunda parte do carregador, e salva-o no final do arquivo. Em seguida, o vírus grava no final do arquivo os dados aleatórios da mesma maneira que o método de infecção "anexado".
Não infectado infectado------------ --------+ -------------- + + -------------- +HeadExe Header � �Exe Header � + -------------- � + -------------- � �Meu código EXE � �Meu código EXE � � -------------- � � -------------- � SuC / Pascal subr � - Carregador de vírus � Parte 1, 52h bytes, não criptografados � -------------- � � � -------------- � � � � �Meu código EXE � � � � � (continuação) � + -------------- + � + -------------- � � �Virus � criptografado com loops polimórficos � � -------------- � � �Virus loader � Parte 2, criptografada com o comando SUB � � -------------- � 70 bytes+ -> �Código salvo � Código original da sub-rotina patched, � -------------- � 52h bytes, criptografados com SUB � Dados aleatórios � tamanho do arquivo / 9Dh, o resto é de 25h+ -------------- +Sendo executado, o carregador procura o nome do arquivo host usando campos PSP, abre os arquivos, procura o final do arquivo, lê, descriptografa e executa a segunda parte do conta-gotas. Essa parte restaura a sub-rotina corrigida, aloca a memória do sistema (convencional ou UMB), lê o corpo do vírus principal e passa o controle para o loop polimórfico de decriptografia. Esse loop descriptografa o corpo do vírus e passa o controle para a rotina de instalação.
Essa é uma maneira muito insidiosa de infecção. O código do vírus está oculto no arquivo e não há entrada direta no código do vírus no cabeçalho do arquivo. A sub-rotina substituída pelo carregador de vírus pode ser "raramente executada". Por exemplo, a sub-rotina que exibe a mensagem de erro. Assim, o vírus pode "dormir" nesses arquivos por um longo tempo, e então pular e infectar o sistema sob algumas condições limitadas.
Infecting Archives
Em caso de arquivo, o vírus cria na memória a imagem do conta-gotas infectado e anexa-o ao arquivo. Que os droppers de COM sempre começam com instruções JMP seguidas por dados aleatórios, código de vírus criptografado e loop polimórfico de decriptografia. A instrução JMP traz o controle para o loop de descriptografia.O nome do conta-gotas é selecionado aleatoriamente e finalizado com extensão .COM, por exemplo:
HAIF.COM, UCM.COM, DOO.COM, VLG.COM e assim por diante.Ao processar os campos de arquivamento, o vírus não usa nenhum utilitário externo, mas preenche todos os campos necessários. O vírus não empacota o conta-gotas, mas usa o método "armazenado" - o vírus é armazenado no arquivo "como está". Ao infectar o vírus, verifica o conteúdo dos arquivos e não os infecta duas vezes.
Infecção de arquivos OBJ e LIB
Ao infectar os módulos OBJ / LIB, o vírus verifica os campos do arquivo, cria e insere lá novos registros de objetos contendo o código de vírus que é criptografado com loops polimórficos.Durante a verificação do arquivo objeto, o vírus verifica o código desse arquivo para a sub-rotina C / Pascal "cabeçalho", bem como durante a inserção em arquivos EXE, e infecta os arquivos somente se esse código for encontrado. Mas no caso do módulo OBJ ou LIB o vírus não coloca o código do carregador nele, mas sobrescreve o cabeçalho C / Pascal com a instrução CALL (E8xxxx).
Sendo ligado ao arquivo executável que CALL traz o controle para o loop de descriptografia polimórfica do vírus. Esse loop descriptografa o código de vírus e passa o controle para a rotina de instalação de vírus.
Assim como nos arquivos EXE (inserções), o CALL talvez nunca receba o controle, e o vírus pode dormir por um longo tempo. Mas sob algumas condições, o vírus pode pular e infectar o sistema.
Manipulador INT 25h
Este manipulador realiza a rotina stealth no nível INT 25h. Ao acessar as entradas de diretório, o vírus substitui o tamanho do arquivo por arquivos originais, enquanto lê o cabeçalho do arquivo infectado que o vírus restaura e traz a forma original.O vírus não percebe 100% stealth no nível INT 25h, é claro. Existem maneiras de contornar a rotina do stealth. Mas, se algum programa antivírus ler o conteúdo do arquivo pelas funções INT 21h do DOS, ler a estrutura do diretório e, em seguida, o conteúdo do arquivo por chamadas INT 25h absolutas, o vírus não ficará visível.
Rotina de Trigger
Se, ao processar arquivos ZIP, o vírus encontrar algum registro que esteja compactado com o método "armazenado", ele verificará o registro de data e hora do arquivo ZIP. Se o ano da última modificação desse arquivo for 1996 ou mais, o vírus procura todos os arquivos de todos os diretórios de todos os discos de C: till Z: e, em seguida, exclui os arquivos e a árvore de subdiretórios inteiros.Saiba mais
Descubra as estatísticas das vulnerabilidades que se espalham em sua região statistics.securelist.com