|
Como avanzamos al describir los rasgos generales del
virus, Girigat es capaz de mutar sus características
básicas de funcionamiento, o, en una palabra, su
comportamiento. Esto quiere decir que pone en juego
una serie de rasgos "vitales" de los que dispone y,
mediante un generador de números pseudoaleatorios,
decide cuáles de esos rasgos estarán activos en sus
próximas generaciones, creando así un virus distinto
en cada ordenador que pisa. Ya destacamos antes que
estos factores de los que hablamos son:
- Modo de acción.
- Runtime (acción directa, sin residencia).
- API hooking (residencia por proceso).
- Zonas de acción.
- Directorio donde está corriendo la aplicación.
- Directorio donde está ubicado Windows9x/NT.
- Vehículos portadores.
- Ficheros CPL (paneles de control).
- Ficheros EXE (estándar de formato PE).
- Ficheros SCR (salvapantallas).
- Payloads (probabilidad del 50% de que se activen).
- Cambio del diseño del escritorio.
- Movimiento aleatorio del cursor.
- Mensaje de alerta tipo "Acerca de Windows".
- Apertura y cierre de la bandeja del CD.
Salvo en la elección del payload, la cual pasaremos
a describir más adelante, la activación de uno de los
demás factores no es excluyente de la activación de
otro de los factores pertenecientes al mismo grupo. Es
decir, que se pueden dar generaciones de Girigat en
las que el virus funcione por residencia y por acción
directa, y que infecte CPL, EXE y SCR tanto en el
directorio actual como en el de Windows.
En el caso opuesto cabría pensar que existe una mínima
posibilidad de que el virus no funcione... es decir,
que el azar podría haber decidido que los valores que
le tocasen en suerte a la nueva generación de Girigat
fuesen tales que el virus, por ejemplo, no infectase
ningún tipo de ejecutables, o que no fuese ni runtime
ni residente por proceso. Desafortunadamente esto no
es posible, ya veremos por qué.
Quizás lo más importante de esta característica del
virus sea el hecho de que este tipo de mutaciones se
produce tan sólo cuando el virus salta de un ordenador
a otro, aunque muchos se podrán preguntar cómo es
capaz el virus de comprobar esto. Probablemente si
el virus fuese específico para DOS se habría basado
en la etiqueta o en el número de serie del volumen,
y en Win32 la cosa no difiere en exceso: cada vez que
se ejecuta, Girigat emplea la API GetComptuerName.
Esta función tiene por misión devolver en un búfer
previamente definido el nombre del ordenador actual,
ese nombre establecido por el usuario en el momento
de la identificación de su máquina durante el proceso
de instalación de Windows. Así, mediante la función
API lstrcmp, el virus compara el nombre devuelto
por GetComputerName con uno previamente almacenado
en otra variable, obtenido en alguna llamada a dicha
API efectuada en anteriores ejecuciones del virus.
En caso de que los nombres coincidan, Girigat se
estará ejecutando en el mismo ordenador, y su forma
seguirá siendo la misma. Por el contrario, si los
nombres son distintos, el virus asumirá que también
el ordenador es distinto, por lo que procederá a
almacenar el nombre del nuevo ordenador y a mutar
su comportamiento.
La rutina encargada de esto fue bautizada por su
autor como Chromatos (adaptación al alfabeto
latino de la expresión griega que significa "de
color", en clara relación con el nombre del virus,
que pasaremos a explicar más adelante), y su
funcionamiento es bastante sencillo: en un primer
momento selecciona cinco de los siete factores a
mutar, dejando aparte los relacionados con la
infección de ficheros CPL y SCR. Ahora, mediante
un simple bucle, obtiene un número aleatorio entre
un rango de cero a diez, y, en caso de que el
valor devuelto sea mayor o igual que cuatro, procede
a activar el flag correspondiente al factor que
esté procesando. Tras haber procedido con los
cinco primeros pasa a ocuparse de los dos que se
había dejado atrás mediante el mismo procedimiento,
sólo que cambiando la probabilidad de activación
del flag correspondiente del casi 65% anterior
a un 50% exacto. Y el proceso no acaba aquí, ya
que, una vez que todos los valores necesarios han
sido obtenidos, el virus pasa a comprobar si se
han activado unos "mínimos" necesarios para que
el virus funcione, y, en caso de que no lo estén,
fija por defecto la propagación runtime en el
directorio actual y la infección de ficheros EXE.
El resultado de esta engine es nada menos que
un monstruo de 63 cabezas, o, lo que es lo mismo,
63 virus diferentes dentro de uno solo. El efecto
deseado, o al menos lo que parece ser la consecuencia
más peligrosa a raíz del empleo de una engine de
estas características, es que se puede llegar a dar
el caso de que un usuario hable de, por ejemplo, un
virus que ha infectado su ordenador y que tan sólo
afecta a los ficheros EXE del directorio actual, y
que se activa moviendo el cursor, mientras que otro
hablará de un infector de EXE y SCR residente en
memoria y que se activa abriendo y cerrando la
bandeja del CD... ambos usuarios estarán hablando
de un mismo virus, la confusión está sembrada.
|