Viernes, 5 de Septiembre de 2008
Win32.Girigat: Automutación
· Generalidades
· Inicialización
· Automutación
· Activaciones gráficas
· Residencia por proceso
· Búsqueda por acción directa
· Infección del formato PE
· Nombre del virus
· Conclusión
· Girigat1.jpg
· Girigat3.jpg
· Presentación

Volver al indice de articulos
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.