Viernes, 5 de Septiembre de 2008
Pusher.374: Infección
· Generalidades
· Inicialización
· Residencia
· En memoria
· Infección
· Polimorfismo
· Conclusiones

Volver al indice de articulos
De la rutina de infección se podría decir más o menos lo mismo que de la de residencia. El hecho de que un gran porcentaje del virus sea un compendio de técnicas nuevas o cuando menos poco usuales propicia cierta decepción cuando se procede al estudio de sus rutinas de residencia en memoria y de infección de ficheros, ya que utilizan procedimientos completamente estándar, y bastante lejos de poder presumir de cierto nivel de optimización.

Antes de proceder a abrir el fichero "víctima", el virus "Pusher" se encarga de eliminar cualquier problema de accesibilidad que pueda surgir en torno a los atributos del fichero. El siguiente paso es comprobar si dicho fichero ya ha sido previamente infectado. La marca del virus "Pusher", a la cual accede por medio del servicio 57h (obtener fecha y hora del fichero), consiste en la operación lógica (FECHA and 1Fh)-1. En caso de que el resultado de esta operación sea cero, el virus habrá dilucidado que el fichero que está procesando ya está infectado, por lo que saltará directamente al vector original de la interrupción 21h (el cual había almacenado en su código antes de ponerse residente en memoria) para que ésta procese correctamente la ejecución del programa en cuestión.

Por el contrario, si el fichero resulta no haber sido todavía infectado, el virus "Pusher" pasará a leer los tres primeros bytes de su víctima, guardándolos en un búfer interno, dentro del cuerpo vírico. Comparará entonces el primero de estos bytes con "M", con la intención de comprobar si se trata de un fichero de formato EXE (caracterizados por la firma "MZ", presente en los dos primeros bytes de la cabecera). Sólo en caso de que el programa en cuestión no posea este formato, y asumiendo que se trata, por consiguiente, de un fichero COM, el virus llama a su rutina de infección.

Lo único que hace esta rutina, básicamente, es situar el puntero al final de la víctima y escribir ahí una copia del cuerpo del virus, previamente encriptada por medio del algoritmo polimórfico empleado por "Pusher". Lo único que queda, a la vuelta de esta rutina, es restaurar los atributos del fichero, activar la marca de infección del virus, y ceder el control al "handler" original de la interrupción 21h. Aquí es donde finaliza el trabajo del protagonista de este análisis.