ESTE SERVICIO PUEDE CONTENER TRADUCCIONES DE GOOGLE. GOOGLE NIEGA CUALQUIER RESPONSABILIDAD RELACIONADA CON LAS TRADUCCIONES, EXPRESA O IMPLÍCITA, INCLUYENDO CUALQUIER RESPONSABILIDAD ACERCA DE LA PRECISIÓN, LA CONFIABILIDAD Y CUALQUIER RESPONSABILIDAD IMPLÍCITA DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR Y DE NO INFRACCIÓN.

Por su comodidad, se ha traducido el sitio web de Kaspersky Lab utilizando un software de traducción de Google Translate. Se hicieron unos esfuerzos razonables para proporcionar una traducción precisa; no obstante, las traducciones automáticas no son perfectas y no hay ninguna intención de sustituir el trabajo de los traductores. Se proporcionan estas traducciones como un servicio para los usuarios del sitio web de Kaspersky Lab y se han publicado tal "como es". No hay ninguna garantía, expresa o implícita, acerca de la precisión, la confiabilidad o exactitud de cualquier traducción desde el inglés a cualquier otro idioma. La traducción de algunos contenidos (imágenes, videos, Flash, etc) podrían no ser totalmente fiel debido a las limitaciones del software de traducción.

Virus.DOS.DarkParanoid

Clase Virus
Plataforma DOS
Descripción

Detalles técnicos

Este es un virus polimórfico parasitario residente en la memoria. Engancha INT 1, 21h y se escribe al final de EXE y al comienzo de los archivos COM.

Este virus utiliza una forma extracompleja de cifrado sobre la marcha: en cualquier momento cuando se ejecuta el código de virus, la única instrucción se presenta en forma no encriptada, todos los demás códigos de virus están encriptados. El virus lo hace mediante el uso de trucos con el modo de rastreo INT 1. Cuando el código de virus recibe el control, engancha INT1 y después de la ejecución de cualquier instrucción de virus (excepto varios códigos de operación especiales, consulte "Guía del usuario Intel 80×86") se invoca INT1. El virus engancha esta llamada, descifra el código a continuación de la instrucción actual y encripta el código anterior.


instrucción previa – encriptada
instrucción actual – limpio
siguiente instrucción – encriptado
Después de ejecutar "instrucción actual", el virus toma el control mediante el gancho INT 1, encripta "instrucción actual" y descifra "siguiente instrucción". Como resultado, en cualquier momento, todo el código de virus está encriptado, o solo una instrucción se presenta en limpio. Además, el virus encripta / descifra no exactamente el código de la instrucción anterior / siguiente, pero algunos bytes / palabras en varios desplazamientos desde la dirección de la instrucción actual. Como resultado, el flujo de instrucciones del virus parece una "mancha" móvil con una instrucción "limpia" en el medio del punto, un código parcialmente encriptado en el resto del punto y un código completamente encriptado fuera del punto.

Hay tres bloques de código que no se pueden cifrar de esa forma: son el controlador INT 1 (en / descifrador), el código de inicio en los archivos infectados y el controlador INT 21h en la copia TSR del virus. Ambos inician el código en archivos y el manejador INT 21h engancha INT1 cuando reciben control, cambian al modo de rastreo y pasan el control a las rutinas principales: rutina de instalación en archivos y código principal del manejador INT 21h en la copia TSR del virus.

La rutina de enganche INT 1 y, por supuesto, el controlador INT 1 en sí mismo no están encriptados, son simplemente polimórficos: el virus usa un motor polimórfico bastante fuerte para generar código de INT 1 hooker en el punto de entrada de los archivos infectados, así como para su INT 1 y 21h manejadores.

Código de virus en archivo infectado:


Entrada: + ————- +
| INT 1 hooker | – polimorfo
| – – – – – – – |
| Manejador INT 1 | – polimorfo
| – – – – – – – |
| Virus principal | – Encriptado por INT 1
| código: TSR |
| instalador, |
| etc |
+ ————- +
Código de virus en la memoria:

INT 21h + ————- +
entrada: | INT 1 hooker | – polimorfo
| – – – – – – – |
| Manejador INT 1 | – polimorfo
| – – – – – – – |
| Virus principal | – Encriptado por INT 1
| código: INT 21h |
| manejador, |
| etc |
+ ————- +
Como resultado, todas las "entradas" al código del virus (dirección de inicio en archivos infectados, controlador INT 1 y código de inicio del controlador INT 21h) son polimórficas y el código del virus principal está encriptado: esta es una tarea bastante importante para los investigadores antivirus. procedimientos para ese tipo de virus.

Motor polimórfico

La diferencia entre los motores polimórficos ordinarios y el motor de "DarkParanoid" es el hecho de que en este virus no existe un ciclo de descifrado en el código polimórfico, simplemente engancha INT1 y comienza a rastrear el código principal. Este código en diferentes archivos infectados puede aparecer en diferentes formas: al generar este código, el virus selecciona aleatoriamente los registros, comandos, modos de acceso a datos, etc.

Similar para el controlador INT 1 que contiene la rutina de cifrado / descifrado sobre la marcha. Este código en diferentes archivos también es diferente: más de diez funciones de encriptación se seleccionan aleatoriamente del conjunto: ADD, SUB, XOR, NEG, NOT, ROR, ROL, así como el acceso de bytes y palabras. También se utilizan registros aleatorios, y el desplazamiento del controlador INT 1 se selecciona al azar dentro de algunos límites.

Instalación y controlador INT 21h

El virus "DarkParanoid" reside en la memoria, por lo que cuando se ejecuta el archivo infectado, el virus se instala en la memoria del sistema. Para hacerlo, engancha INT1 para activar su rutina de encriptado / encriptado, asigna un bloque de memoria del sistema en la memoria convencional de DOS o en los bloques de memoria superiores, si hay cantidad necesaria de memoria libre (aproximadamente 7.5K). El virus luego copia su código allí, engancha INT 21h y devuelve el control al programa host.

Al instalar la memoria residente, el virus también ejecuta su motor polimórfico para generar rutinas de descifrado para usarlas al infectar archivos. El virus ya no llama a este motor y, como resultado de la instalación, el virus arrojará el mismo código polimórfico a los archivos hasta el próximo reinicio y reinstalación. Eso puede engañar a un usuario y a los investigadores de virus: el virus trata de hacer que estén seguros de que este es solo un virus cifrado pero no polimórfico, por lo que es posible detectarlo solo con un patrón hexadecimal.

El controlador de virus INT 21h intercepta FileOpen / Create calls (AH / AX = 3Ch, 5Bh 6C00h), FileClose call (AH = 3Eh) y Get Allocation Strategy (AX = 5800h).

La última función (Obtener estrategia de asignación) se usa como "¿Estás aquí?" llamada. Esta llamada la realiza el virus mientras instala la memoria residente. Antes de esta llamada, el virus ingresa el CX registrando el número del año actual más los números actuales del mes y día (Obtenga la fecha actual en INT 21h con AH = 2Ah, luego CX = CX + DX, luego INT 21h llame con AX = 5800h).

La copia del virus residente en la memoria lo intercepta, obtiene la fecha y el año actuales y compara su adición con el registro CX. Si son iguales, la copia TSR del virus no devuelve el control a la copia del virus activo, sino que lo pasa al programa host por sí mismo. Parece ser un truco bastante eficaz contra la depuración: si el virus ya reside en la memoria, una llamada ordinaria como GetAllocationStrategy no regresa al depurador.

Cuando se abre un archivo, el virus compara su extensión de nombre con "COM" y "EXE", y en el caso de estas extensiones guarda el identificador del archivo para infectarlo cuando se cierre el archivo. Como resultado, solo los archivos ejecutables se contagian cuando se abren (por ejemplo, cuando se escanean en busca de virus mediante un programa antivirus o se guardan en una copia de seguridad) o se copian.

Antes de infectar un archivo, el virus verifica el nombre del archivo y no infecta varios programas antivirus y utilidades. No infecta archivos con nombres que comienzan con las letras AV, SC, CL, GU, NO, FV, TO, TB (AVP , AVG, SCAN, CLEAN, GUARD, TBAV, etc.)

El virus escribe su código al final de los archivos EXE y modifica los campos necesarios en el encabezado del archivo EXE. En el caso del archivo COM, el virus escribe su código al principio del archivo y guarda el archivo original que comienza al final del archivo.

Mientras que infectar el virus aumenta el tamaño del archivo por número de variable, escribe en el archivo 5297 bytes de código de virus real (encriptado) así como el número seleccionado al azar (hasta 1001 bytes) de datos de la dirección seleccionada al azar en la memoria del sistema. El virus también alinea la longitud de los archivos EXE con el párrafo (16 bytes) antes de la infección y no infecta los archivos COM con una longitud superior a 60K. Para separar los archivos COM y EXE, el virus comprueba el encabezado del archivo (sello EXE MZ / ZM).

Para separar el archivo infectado y el no infectado, el virus usa un truco estándar con el sello de fecha y hora del archivo: después de infectar un archivo, el virus establece su marca de tiempo en 2 segundos y verifica este valor antes de la infección.

Trigger Routine

La rutina de desencadenamiento es ejecutada por el virus según su contador aleatorio. Al infectar cada archivo, el virus con probabilidad 1/4000 muestra el texto "DaRK PARaNOiD" en el medio de la pantalla, luego los ruidos por el parlante de PC y sacude la pantalla utilizando VGA características de la tarjeta.

El virus también contiene el texto dentro del código de su motor polimórfico:


MOTOR DE ENCRIPTACIÓN ETERNA


Enlace al original