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.DOS.DarkParanoid

Classe Virus
Plataforma DOS
Descrição

Detalhes técnicos

Este é um vírus polimórfico parasita residente na memória. Ele conecta INT 1, 21h e se escreve para o final do EXE e para o início dos arquivos COM.

Esse vírus usa uma maneira extra-complexa de criptografia instantânea – a qualquer momento, quando o código do vírus é executado, a única instrução apresentada em forma não criptografada – todos os outros códigos de vírus são criptografados. O vírus faz isso usando truques com o modo de rastreamento INT 1. Quando o código do vírus recebe o controle, ele conecta o INT 1 e após a execução de qualquer instrução de vírus (exceto vários códigos de operação especiais – consulte "Guia do usuário do Intel 80×86") O INT 1 é invocado. O vírus intercepta essa chamada, descriptografa o código abaixo da instrução atual e criptografa o código acima.


instrução prev – criptografada
instrução atual – limpa
próxima instrução – criptografada
Depois de executar a "instrução atual", o vírus assume o controle pelo gancho INT 1, criptografa a "instrução atual" e descriptografa a "próxima instrução". Como resultado, a qualquer momento, todos os códigos de vírus são criptografados ou apenas uma instrução é apresentada como limpa. Além disso, o vírus criptografa / descriptografa não exatamente o código da instrução anterior / próxima, mas alguns bytes / palavras em vários deslocamentos do endereço da instrução atual. Como resultado, o fluxo de instruções do vírus parece um "local" em movimento com uma instrução "limpa" no meio do código spot, parcialmente criptografado no resto do local, e código completamente criptografado fora do local.

Existem três blocos de código que não podem ser criptografados dessa forma – eles são manipulador INT 1 (en / decryptor), código inicial em arquivos infectados e manipulador INT 21h em cópia TSR de vírus. Ambos iniciam o código em arquivos e INT 21h handler hook INT 1 quando recebem o controle, alternam para o modo de rastreamento e passam o controle para as rotinas principais – a rotina de instalação nos arquivos e o código principal do manipulador INT 21h na cópia TSR do vírus.

A rotina de hooking INT 1 e, claro, o manipulador INT 1 em si não são criptografados, eles são apenas polimórficos – o vírus usa um mecanismo polimórfico bastante forte para gerar código de INT 1 hooker no ponto de entrada em arquivos infectados, assim como para sua INT 1 e 21h manipuladores.

Código de vírus no arquivo infectado:


Entrada: + ————- +
INT 1 prostituta | – polimórfico
| – – – – – – – |
| Manipulador INT 1 | – polimórfico
| – – – – – – – |
Principal vírus | – criptografado pela INT 1
código: TSR |
| instalador |
| etc |
+ ————- +
Código de vírus na memória:

INT 21h + ————- +
entrada: | INT 1 prostituta | – polimórfico
| – – – – – – – |
| Manipulador INT 1 | – polimórfico
| – – – – – – – |
Principal vírus | – criptografado pela INT 1
código: INT 21h |
| manipulador |
| etc |
+ ————- +
Como resultado, todas as "entradas" para código de vírus (endereço inicial em arquivos infectados, manipulador INT 1 e código de inicialização do manipulador INT 21h) são polimórficas, e o principal código de vírus é criptografado – tarefa bastante forte para os pesquisadores de antivírus elaborarem a detecção procedimentos para esse tipo de vírus.

Motor polimórfico

A diferença entre os motores polimórficos comuns e o mecanismo "DarkParanoid" é o fato de que neste vírus não há um loop de descriptografia no código polimórfico – ele apenas conecta a INT 1 e começa a rastrear o código principal. Este código em diferentes arquivos infectados pode aparecer de forma diferente – enquanto gera este código, o vírus seleciona aleatoriamente os registros, comandos, modos de acesso a dados e assim por diante.

Semelhante para o manipulador INT 1 que contém rotina de criptografia / descriptografia on-the-fly. Este código em arquivos diferentes também é diferente – mais de dez funções de criptografia são selecionadas aleatoriamente do conjunto: ADD, SUB, XOR, NEG, NÃO, ROR, ROL, bem como acesso de byte e palavra. Também são usados ​​registros aleatórios e o deslocamento do manipulador INT 1 é selecionado aleatoriamente dentro de alguns limites.

Instalação e Manipulador INT 21h

O vírus "DarkParanoid" é residente na memória, portanto, quando o arquivo infectado é executado, o vírus se instala na memória do sistema. Para fazer isso, ele conecta INT 1 para ativar sua rotina de en / decryption on-the-fly, aloca um bloco de memória do sistema na memória DOS convencional ou em Upper Memory Blocks, se houver quantidade necessária de memória livre (cerca de 7,5K). O vírus então copia seu código para lá, conecta INT 21h e retorna o controle para o programa host.

Ao instalar a memória residente, o vírus também executa seu mecanismo polimórfico para gerar rotinas de descriptografia para usá-las enquanto infecta arquivos. O vírus não liga mais para esse mecanismo e, como resultado, ele é instalado e o vírus descarta o mesmo código polimórfico para os arquivos até a próxima reinicialização e reinstalação. Isso pode enganar um usuário e pesquisadores de vírus – o vírus tenta garantir que isso seja apenas um vírus criptografado, mas não polimórfico, de modo que é possível detectá-lo apenas por um único padrão hexadecimal.

O manipulador de vírus INT 21h intercepta chamadas FileOpen / Create (AH / AX = 3Ch, 5Bh 6C00h), chamada FileClose (AH = 3Eh) e Get Allocation Strategy (AX = 5800h).

A última função (Get Allocation Strategy) é usada como "Are You Here?" ligar. Essa chamada é executada pelo vírus durante a instalação da memória residente. Antes desta chamada, o vírus coloca no registro CX o número do ano atual mais os números atuais de mês e dia (Obter data atual por INT 21h com AH = 2Ah, depois CX = CX + DX e, em seguida, INT 21h com AX = 5800h).

A cópia do vírus residente na memória intercepta-a, obtém a data e o ano atuais e compara sua adição com o registro CX. Se eles forem iguais, a cópia do TSR do vírus não retornará o controle para a cópia ativa do vírus, mas passará para o programa host sozinho. Parece ser um truque anti-depuração bastante eficaz – se o vírus já estiver residente na memória, uma chamada comum como GetAllocationStrategy não retorna ao depurador.

Quando um arquivo é aberto, o vírus compara sua extensão de nome com "COM" e "EXE", e no caso dessas extensões salva o identificador do arquivo para infectá-lo quando o arquivo será fechado. Como resultado, somente arquivos executáveis ​​são infectados, quando são abertos (por exemplo, quando são verificados quanto a vírus por um programa antivírus ou salvos no backup) ou copiados.

Antes de infectar um arquivo, o vírus verifica o nome do arquivo e não infecta vários programas e utilitários antivírus – ele não infecta arquivos com nomes que começam com letras AV, SC, CL, GU, NÃO, FV, TO, TB (AVP , AVG, SCAN, CLEAN, GUARD, TBAV, etc)

O vírus grava seu código no final dos arquivos EXE e modifica os campos necessários no cabeçalho do arquivo EXE. No caso do arquivo COM, o vírus grava seu código no início do arquivo e salva o arquivo original, começando no final do arquivo.

Ao infectar o vírus aumenta o tamanho do arquivo por número variável – ele grava no arquivo 5297 bytes de código de vírus real (criptografado), bem como número aleatório selecionado (até 1001 bytes) de dados do endereço selecionado aleatoriamente na memória do sistema. O vírus também alinha o comprimento de arquivos EXE ao parágrafo (16 bytes) antes da infecção e não infecta arquivos COM com comprimento superior a 60K. Para separar arquivos COM e EXE, o vírus verifica o cabeçalho do arquivo (carimbo MZ / ZM EXE).

Para separar o arquivo infectado e não infectado, o vírus usa um truque padrão com o registro de data e hora do arquivo – depois de infectar um arquivo, o vírus define seu registro de tempo como 2 segundos e verifica esse valor antes da infecção.

Rotina de Trigger

A rotina de disparo é executada pelo vírus dependendo do seu contador aleatório – enquanto infecta cada arquivo o vírus com probabilidade 1/4000 exibe o texto "DaRK PARaNOiD" no meio da tela, depois ruídos pelo alto-falante do PC e sacode a tela usando VGA características do cartão.

O vírus também contém o texto dentro do código do seu mecanismo polimórfico:


MOTOR DE CRIPTOGRAFIA ETERNA


Link para o original