Red de conocimiento informático - Aprendizaje de código fuente - Cómo detectar y eliminar virus basados ​​en archivos

Cómo detectar y eliminar virus basados ​​en archivos

Cuando se infecta este tipo de virus, el código del virus se añade al programa normal y se conservan algunas o todas las funciones del programa original. Según las diferentes formas de agregar el código del virus, los virus parásitos se pueden dividir en cuatro tipos: "parasitismo de cabeza", "parasitismo de cola", "inserción media" y "utilización de orificios":

"parasitismo de cabeza" :

Hay dos formas de colocar el código del virus al principio del programa. Una es copiar la parte frontal del programa original al final del programa y luego sobrescribir el encabezado del archivo. código de virus; el otro es generar un nuevo archivo, primero escribir el código de virus en el encabezado, luego colocar el archivo ejecutable original detrás del código de virus y luego reemplazar el archivo original con el nuevo archivo para completar la infección. Los virus que utilizan el método de "parasitismo de cabeza" básicamente infectan virus por lotes y archivos en formato COM. Debido a que estos archivos no necesitan ser reubicados cuando se ejecutan, la ubicación del código se puede cambiar arbitrariamente sin errores.

Por supuesto, a medida que mejora el nivel de producción de virus, muchos virus que infectan archivos EXE en sistemas DOS y EXE en sistemas Windows también utilizan el método de parasitismo de cabeza, de modo que los archivos infectados aún puedan ejecutarse normalmente. , antes de ejecutar el programa original, el virus restaurará los archivos originales no infectados para su ejecución normal. Una vez completada la ejecución, se infectará nuevamente para garantizar que los archivos en el disco duro estén infectados y los archivos ejecutados sean normales.

"Parasitismo de cola":

Dado que el parasitismo en la cabeza inevitablemente encontrará el problema de la reubicación, el método de parasitismo más simple y más comúnmente utilizado es adjuntar directamente el código del virus al final. del programa ejecutable. Para archivos ejecutables COM en un entorno DOS, dado que el archivo COM es un código binario simple sin ninguna información estructural, puede adjuntar directamente el código del virus al final del programa y luego cambiar los primeros 3 bytes del archivo COM para saltar Instrucción:

JMP [dirección de inicio del código de virus]

Para archivos EXE en entorno DOS, hay dos formas de procesarlos. Una es convertir el formato EXE al formato COM y. luego procese la infección, otro tipo de encabezado de archivo que requiere modificación del encabezado del archivo EXE, generalmente modifica las siguientes partes del encabezado del archivo EXE:

La dirección inicial del código

La longitud del archivo ejecutable

p>

El valor de verificación CRC del archivo

El puntero del registro de pila también se puede modificar.

Para los archivos EXE en sistemas operativos Windows, el encabezado del archivo también debe modificarse después de la infección por virus. Esta vez, se modifica el encabezado de PE o NE en comparación con el encabezado de los archivos EXE. DOS, este El trabajo es mucho más complicado. Requiere modificar la dirección de entrada del programa, la dirección de inicio del segmento, los atributos del segmento, etc. Debido a la complejidad de este trabajo, muchos virus incluirán algunos pequeños errores al escribir. El código de infección, lo que hace que estos virus infecten. Algunos archivos tendrán errores y no podrán continuar, lo que afortunadamente evita que estos virus se propaguen a gran escala.

Los virus que infectan controladores de dispositivos (archivos .SYS) en un entorno DOS ingresarán al sistema inmediatamente después de que se inicie DOS y, para cualquier software (incluido el software antivirus) cargado posteriormente, todas las operaciones con archivos (incluidos posibles operaciones de verificación y eliminación de virus) están todas bajo control de virus. En este caso, es básicamente imposible eliminar el virus de forma limpia.

"Parásito de inserción":

El virus se inserta en el programa infectado. Puede insertarse en una sección completa o dividirse en muchas secciones. Algunos virus comprimen el código original. , manteniendo sin cambios el tamaño del archivo infectado. También se requieren las operaciones básicas, como cambiar el encabezado del archivo, que se analizaron anteriormente. Para la inserción intermedia, se requiere que la escritura del programa sea más rigurosa.

Por lo tanto, hay relativamente pocos virus que utilicen este método. Si se utiliza este método, muchos virus no se han vuelto realmente populares debido a errores de programación.

"Explotación hueca":

Para archivos ejecutables en el entorno de ventana, existe un método más inteligente. Dado que la estructura del programa de ventana es muy compleja, generalmente hay muchos vacíos. archivos en él. La parte utilizada suele ser un segmento vacío, o la última parte de cada segmento. El virus busca estas partes no utilizadas y luego dispersa el código del virus en ellas, logrando así una infección indetectable (el famoso virus "CIH" utilizó este método).

Los virus parásitos comprenden con precisión la definición de virus: "parasitan el programa host y no destruyen las funciones normales del programa host. Por lo tanto, la intención original del diseño del virus parásito es preservar completamente el original". Por lo tanto, a excepción de algunos virus que no se pueden restaurar debido a errores de programación, los virus parásitos básicamente se pueden eliminar de forma segura.

Además de cambiar el encabezado del archivo e insertarse en el programa infectado, el virus parásito también utilizará algunos métodos para ocultarse: si el archivo infectado es un archivo de solo lectura, el virus primero cambiará los atributos del archivo durante la infección deben ser legibles y grabables, y luego infectados. Una vez completada la infección, el atributo vuelve a ser de solo lectura. Cuando el virus está infectado, se mostrará la fecha del último acceso al archivo. A menudo se registra. Una vez completada la infección, el archivo se volverá a cambiar a la fecha original, de modo que el usuario no detecte que el archivo se ha modificado mediante el cambio de fecha.

Según si la información del archivo infectado se pierde después de la infección del virus, dividimos la infección por virus en dos tipos básicos, infección destructiva e infección no destructiva, siempre que el virus infecte. Si el software antivirus comprende claramente los principios básicos de la infección por virus, es posible una restauración precisa. En este caso, decimos que el virus se puede eliminar. En el caso de infecciones destructivas, dado que el virus elimina o sobrescribe todo o parte del archivo original, el virus no se puede eliminar, solo se puede eliminar o sobrescribir el archivo infectado con el archivo original que no está infectado.

Los archivos COM y EXE en el entorno DOS tienen estructuras completamente diferentes, por lo que los métodos de infección de virus también son completamente diferentes. Algunos virus determinan si están infectando archivos COM o EXE basándose en el nombre del sufijo del archivo, mientras que otros. Un método más preciso es comparar el encabezado del archivo para ver si cumple con la definición de un archivo EXE. La infección basada en la extensión del archivo a menudo causa errores. Uno de los ejemplos más típicos es un archivo en el directorio del sistema de Windows 95. La extensión muestra que es un archivo COM, pero el archivo con un tamaño de más de 90 K es en realidad un EXE. archivo. Los virus que infectan según las extensiones de archivos causarán daños en el archivo una vez que lo infecten. Es por eso que muchos usuarios no pueden abrir el cuadro de DOS en Windows. Este virus realmente no tiene un punto de entrada, pero cuando se ejecuta el programa infectado, no salta inmediatamente al código del virus para iniciar la ejecución. En otras palabras, no se coloca ninguna instrucción de salto al principio del archivo COM, ni se cambia el punto de entrada del programa del archivo EXE. El código de virus se esconde silenciosamente en el programa infectado y puede activarse para iniciar su ejecución en condiciones muy accidentales. Los virus infectados de esta manera están muy ocultos y es difícil para el software antivirus detectar partes aleatorias del programa. ¡Hay algunos códigos de virus que se ejecutarán durante la ejecución del programa!

Luego, este virus debe modificar ciertas instrucciones en el programa original para poder saltar al código del virus cuando el programa original se esté ejecutando. Sabemos que las instrucciones de las máquinas x86 no tienen la misma longitud, lo que significa que es imposible determinar dónde comienza una instrucción válida y ejecutable. Cambiar esta instrucción a una instrucción de salto puede cambiar al código del virus.

Los creadores de virus inteligentes nunca se dejan perplejos ante problemas tan triviales y han encontrado una serie de formas de hacerlo:

Una gran cantidad de archivos ejecutables están escritos en lenguaje C o Pascal, programas escritos en estos lenguajes. ​tiene tal característica, el programa utilizará algunas funciones básicas de la biblioteca, como procesamiento de cadenas, entrada y salida básica, etc. Antes de iniciar el programa desarrollado por el usuario, el compilador agregará algunos códigos a la biblioteca para inicializar el virus. Puede buscar un código de inicialización específico, luego usar el inicio del código modificado para saltar al código del virus y luego realizar el trabajo de inicialización habitual después de ejecutar el virus. El virus "Nukere Hill" utiliza este método para infectarse.

La parte de infección del virus incluye un pequeño software de desmontaje. Durante la infección, el archivo infectado se carga en la memoria y luego se desmonta uno por uno cuando se cumple una determinada condición, cuando el virus así lo cree. Es seguro cambiar el código, reemplace la instrucción original con una instrucción de salto para saltar al código del virus. Los virus "CNTV" y "infección intermedia" utilizan este método para insertar instrucciones de salto en el virus.

Existe otro método que solo es aplicable a los programas TSR. El virus modifica el código de servicio de interrupción del programa TSR, de modo que cuando se interrumpa el sistema operativo, saltará al código del virus. (Por ejemplo, modifique el número de interrupción 21H para que cualquier llamada de DOS se realice primero a través del virus)

El programa TSR (Terminal Still Resident) es un programa muy importante en el sistema operativo DOS. Una categoría grande. de programas, incluidos todos los sistemas operativos chinos en entornos DOS (CCDOS, China Dragon, etc.), son programas TSR. La característica de este tipo de programa es que una parte todavía reside en la memoria después de que se ejecuta el programa. La parte residente es básicamente una rutina de servicio de interrupción, que puede completar tareas específicas de servicio de interrupción.

Además, existe otro método relativamente raro para obtener el control del programa a través de la tabla de reubicación del archivo EXE. Este virus no cambia el archivo infectado, sino que lo reemplaza con el archivo infectado que crea. un archivo complementario (el archivo de virus) de modo que cuando ejecute el archivo infectado, en realidad se ejecute el archivo de virus.

Uno de los virus complementarios aprovecha una característica de los archivos ejecutables de DOS. Cuando hay archivos con el mismo nombre y sufijo .COM y archivos con el sufijo .EXE, se ejecutará primero. con el sufijo COM Por ejemplo, el sistema operativo DOS viene con un programa XCOPY.EXE. Si un archivo llamado XCOPY.COM en el directorio de DOS es un virus, cuando escribe "XCOPY (retorno de carro, avance de línea)" en. esta vez lo que realmente se ejecuta es el archivo de virus.

Otro método complementario es cambiar el nombre del archivo original, por ejemplo, cambiar XCOPY.EXE a XCOPY.OLD y luego generar un nuevo XCOPY.EXE (en realidad un archivo de virus), para que escriba al ingresar "XCOPY (retorno de carro y avance de línea)", el archivo de virus también se ejecuta y luego el archivo de virus carga el programa original para su ejecución.

Otro método complementario utiliza la ruta de búsqueda del sistema operativo DOS o Windows. Por ejemplo, el sistema Windows buscará primero en el directorio del sistema donde está instalado el sistema operativo, para que el virus pueda buscar primero en el directorio. almacena archivos con el mismo nombre que los archivos infectados. Al ejecutar un archivo ejecutable, primero ejecutará el archivo de virus. El último virus "Nimda" utiliza este método para infectar a una gran cantidad de personas.

Gusanos de archivos:

Los gusanos de archivos son muy similares a los virus que los acompañan, pero no utilizan prioridad de ruta ni otros medios para ejecutarse. El virus solo genera un archivo con "INSTALL.BAT". " o "SETUP" .EXE" y otros nombres (que son copias de archivos de virus), lo que induce a los usuarios a ejecutar los archivos después de verlos.

También hay algunos gusanos que utilizan tecnologías más avanzadas, principalmente para archivos comprimidos. Estos virus pueden encontrar archivos comprimidos en el disco duro y luego agregarse directamente al paquete comprimido admitido. virus Principalmente ARJ y ZIP, probablemente la razón principal es que estos dos formatos de compresión tienen la información más completa y los algoritmos de compresión también son públicos, por lo que los virus pueden implementar fácilmente sus propios métodos de compresión/aumento.

También existen virus dirigidos al procesamiento por lotes. El virus agregará declaraciones para ejecutar el virus en el archivo por lotes que termina en BAT, logrando así la propagación del virus. El número de estos virus es relativamente pequeño, pero existe un virus del "Directorio 2" (DIRII) particularmente famoso en China. El virus no genera un archivo de virus especial en el disco duro, sino que se esconde en algún lugar del sistema de archivos. El virus "Directorio 2" se esconde en el último grupo de la unidad y luego modifica la tabla de asignación de archivos para que el directorio. El grupo inicial de archivos en la zona apunta al código del virus. La característica de este método de infección es que solo hay una copia del virus en cada unidad lógica.

Clúster: dado que el tamaño de cada sector en el disco duro generalmente es de solo 512 bytes, si un archivo se distribuye en muchos sectores, es necesario representar completamente los sectores ocupados por el archivo en la asignación de archivos. table. El área utilizará mucho espacio de directorio. Por ejemplo, un archivo de 1 M requerirá 2 K bytes de espacio para representar los sectores ocupados por el archivo. Por lo tanto, todos los sistemas de archivos han introducido el concepto de clúster. Un clúster es una serie de sectores, pero combinados como la unidad más pequeña de asignación de archivos, el tamaño del clúster es 4K, 16K, 32K, etc.

En los sistemas operativos Windows NT y Windows 2000, existe un nuevo virus de enlace. Este virus sólo existe en el disco lógico del sistema de archivos NTFS y utiliza la secuencia oculta del sistema de archivos NTFS para almacenar el virus. .Code, después de ser infectado por este virus, es difícil para el software antivirus encontrar el código del virus y eliminarlo de forma segura. El número de estos virus es muy pequeño y el número total probablemente no exceda de 10. El virus infecta los archivos objeto intermedios (archivos OBJ) generados por el compilador o los archivos de biblioteca (.LIB) utilizados por el compilador, porque No se puede acceder directamente a estos archivos. Los archivos de ejecución, por lo que el virus no se pueden infectar directamente después de infectar estos archivos. El enlace OBJ o LIB infectado debe usarse para generar un programa EXE (COM) para completar el proceso de infección. el virus.

Los virus del código fuente modifican directamente el código fuente y agregan contenido de virus a los archivos del código fuente. Por ejemplo, busque todos los archivos con el sufijo ".C". " se encuentra dentro de String, luego agregue el código del virus después de esta línea, para que el archivo compilado incluya el virus