Este es el segundo artículo
sobre el tema de los virus de macro, donde se describen un poco más con
énfasis en las contramedidas existentes. Definiremos virus de macro como un virus escrito en el
lenguaje de macros de Microsoft Office, esto es Word Macro o Visual Basic para
Aplicaciones, la definición no es 100% correcta pero servirá para el propósito
de nuestra explicación que se centrará en estos virus en el entorno de equipos
PC con Windows 9X
Los documentos generados hasta el Word 6.0 pueden llevar
virus de Word Macro y desde el Word 97 en adelante los virus están escritos en
VBA, un documento infectado con un virus Word Macro se propagará al abrirse con
Word 97 o superior, uno que contenga un virus escrito en VBA no funcionará al
abrirse con Word 6.0 o versiones anteriores. Es decir que si usamos la versión
6.0 de Word la mayoría de los macros modernos serán automáticamente
detectados. Más aún, si nuestro trabajo consiste en la creación de documentos
sencillos que no requieren de las características avanzadas de procesamiento de
texto, podemos usar el Wordpad, que ocupa una fracción de memoria del Word y
produce documentos sencillos en el mismo formato que Word 6.0, es decir que
pueden ser leídos por todas las versiones de Word.
Los virus de macro atacan a cualquiera de las siguientes
aplicaciones: Word, Excel, Outlook, Outlook Express, Access, PowerPoint,
Project, Corel Draw! También existen los virus multiaplicación, que infectan y
se desarrollan en todas las aplicaciones antes nombradas indistintamente.
¿Por que las aplicaciones Microsoft son particularmente
inseguras? hay dos razones principales para esto, la primera es que Microsoft ha
diseñado un lenguaje muy sofisticado para la escritura de macros (VBA y VB
Script) que permite métodos comunes a todas las aplicaciones a través del uso
del Modelo de Objetos de Microsoft. Este lenguaje presenta un potencial enorme
que está cambiando de manera dramática la programación de aplicaciones, pero
también es el soporte que permitió la aparición de estos virus. La otra
razón es la gran sencillez de VBA que permite a cualquiera con conocimientos
básicos crear y difundir sus propios virus.
Existe también un efecto que puede explicarse mejor en
términos botánicos. Una selva tropical, con miles de especies distintas
conviviendo en intrincados biosistemas locales se defiende mucho mejor de las
plagas e infecciones que una inmensa extensión plantada de un solo cultivo.
Todo agricultor conoce bien el problema de un solo brote de enfermedad que puede
arrasar con miles de hectárea de monocultivo. Algo parecido ocurre con la
estandarización del software, donde un simple virus puede causar enormes daños
en una organización que tenga cientos o miles de estaciones de trabajo con las
mismas aplicaciones y sistema operativo. Si consideramos la cantidad de
computadores que usan el Outlook Express como cliente de correo electrónico en
Internet, o el Word como procesador de texto en el mundo, veremos el inmenso
riesgo de propagación que existe cuando un virus llega a atacar a alguna de
esas aplicaciones.
¿Que puede hacer un virus de macro? el daño potencial
abarca toda la gama de acciones que podamos lograr usando comandos del DOS,
puede desde luego borrar y corromper archivos (haciéndolos imposibles de leer),
formatear el disco duro, corromper la FAT y una amplia gama de acciones dañinas
o desagradables para el usuario. Hasta el momento la mayoría de los virus de
macro han sido casi inocuos, pero no hay nada que impida la creación de virus
mucho más malignos. En verdad es igual de difícil (o fácil) programar un viru
inofensivo que uno extremadamente maligno, se diferencian en una o dos líneas
de código, nada más.
Los virus de macro se diferencian de los tradicionales en
un aspecto muy importante. Para que un virus tradicional se "active"
debería existir un programa ejecutable huésped, tal como un juego o una
aplicación. Bastaba entonces tener buen cuidado sobre los ejecutables que usábamos
y eso daba un grado razonable de protección. Los virus de macro sin
embargo se incrustan en los propios documentos o productos de las aplicaciones,
no en la aplicación misma. Un virus VBA puede venir en un documento del Word o
en una hoja de cálculo de Excel, no en el Word o en el Excel mismo sino en los
documentos que estos generan. Del mismo modo un virus puede incrustarse en un
mensaje de e-mail (no en el Outlook Express o en el cliente que usemos para
nuestro correo). como el intercambio de documentos es algo usual y necesario, la
detección y prevención se hacen mucho más difíciles en estos casos.
Para entender bien los virus debemos tener en cuenta que,
hasta el momento (y probablemente siempre será así) todo virus necesita
contener un Elemento Activo (EA), este EA es un trozo de código ejecutable escrito en algún lenguaje de programación. En los virus tradicionales el EA se
escribía en Assembler y se guardaba en los espacios vacíos que quedan al final
de los programas huésped (un juego por ejemplo, recuerdese que la información
en PC se guarda en cluster completos así es que al final normalmente queda algo
de espacio desocupado). Así los archivos .exe quedaban "infectados"
ya que eran modificados por el virus para que antes de ejecutarse, pasaran el
control al código malicioso.
Las modernas versiones de Office permiten que los propios
documentos, además de contener texto y datos, podían llevar incrustadas
instrucciones, de manera que la aplicación las ejecute al cargarse el
documento. Por ejemplo podemos escribir una carta en Word que incluya un
formulario, y además agregar instrucciones para que el que cargue esa carta en
su computador pueda llenar el formulario con facilidad. Esta posibilidad de
agregar "inteligencia" a los documentos, permite también agregarles
virus con gran facilidad. Así, para saber si un documento de Office contiene un
virus a no, bastaría determinar si tiene EA y si este es malicioso o un
macro "normal"
Algunos Virus Conocidos
El primer virus de macro
"Concept" apareció en 1995 junto con el lanzamiento de Windows 95, en
1996 aparece el primer virus macro de Excel llamado "Laroux", en 1997
aparece el "Share Fun" que infecta mails generados por Outlook
Express, en 1998 aparece "AccesV" que infecta bases de dato Access y
"Attach" que infecta presentaciones de Power Point, en 1999 el virus
"Gala" que infecta archivos de Corell Draw y "Corner" que
infecta documentos del Project. Sobre los virus multiaplicación el mas conocido
es "Triplicate" que infecta a documentos de Word, Excel y Power Point
y además es el primero en incluír técnicas Sthealt que lo hacen invisible a
muchos detectores. Tenemos además los muy conocidos "Melissa", "Worm",
"Love" y "wahaha"
Se estima que entre el 50% y el
70% de los nuevos virus son del tipo "Virus de macro en VBA"
Contramedidas para los virus
tradicionales
-
Escanear el disco con un
antivirus: los programas de escaneo revisan programas y documentos del
Office buscando "virus signatures" (firmas de virus) que son
trozos de código distintivo de cada virus conocido. Uno de los
inconvenientes clásicos de esta protección es que debe actualizarse periódicamente la base de datos que contenga estas "firmas" ya
que deben ser incorporadas por el propio fabricante del antivirus. Otro
problema es que sirve solo para virus ya conocidos pero no ofrece
protección para los virus nuevos que aún no han sido agregados a la base
de datos (por el fabricante primero y luego por el propio usuario). Otro
problema es que ciertos virus (Melissa por ejemplo) son polimorficos
es decir cambian su código por lo que requieren una firma diferente para
cada una de sus variantes. Por último escanear un disco grande es un
proceso lento y se hace normalmente solo cuando hay sospecha de infección
lo que limita también su capacidad de protección
-
Monitoreo antivirus en
tiempo real, es una variante del método anterior solo que el escaneo se
produce automáticamente cada vez que se carga un programa lo que elimina la
necesidad de escanear periódicamente todo el disco. Por otra parte tiene
todos los demás inconvenientes del método anterior, a los que se suma que
tener un antivirus cargado constantemente empobrece el desempeño de las
aplicaciones y del sistema en general, además que crea a veces conflictos
con los programas que se están ejecutando.
-
Chequeo de integridad: se
trata de chequear los valores de CRC (códigos de redundancia cíclica) para
verificar que los archivos no hayan sufrido cambios, este método tiene
varios problemas ya que muchos archivos sufren cambios como parte habitual
de su funcionamiento
-
Inmunizadores contra virus,
que son una variante de los métodos 1 y 2 con la diferencia que avisan que
un archivo se ha infectado o previenen la infección, tiene los mismos
problemas del método 2
Un nuevo enfoque, los
bloqueadores de comportamiento
Todas las medidas antivirus que
se enumeraron arriba tienen un problema común, es muy difícil distinguir si un
código se trata realmente de un virus o es parte del funcionamiento normal del
programa o documento. Podría en teoría disponerse de un virus
"heuristico" que busca código probable de virus) muy avanzado, pero
nos daría la molestia de preguntarnos a cada rato si debe tratar la situación
como un ataque de virus o si se trata de algo normal.
El nuevo enfoque de bloquear
comportamientos sospechosos sigue un poco la idea de los antivirus heuristicos.
Para ponerlo más claro, cada vez que detecta que desde un programa o un
documento se intentará formatear el disco duro advertirá de esto al usuario,
poniéndolo sobre la pista de un posible ataque de virus. Este enfoque, también
conocido como "sandbox" (caja de arena) da una buena protección
incluso contra virus desconocidos. El problema es que el propio sistema
operativo o algunos programas utilitarios muchas veces tienen comportamiento
similar a un virus y se requiere conocimiento de parte del usuario para
discriminar si se trata de una operación legítima o el intento de un virus.
Para los virus de macro existe
otra gama de contramedidas, para mencionar algo simple podríamos grabar en la
plantilla Globa.bas una rutina como:
Sub Autoexec()
DisableAutoMacros
MsgBox "Auto macros deshabilitados"
End Sub
Aunque no sería una protección
perfecta, protegería contra todos los virus de macro que se activan
automáticamente al abrir un documento. Con un poquito más de código
podríamos poner excepciones que incluyan a nuestros propios macros (si los hay)
que sabemos que son seguros.
Algunos antivirus específicos
contra virus de macro son AVP Office Guard (muy bueno) y Sophos (bueno).
Finalmente recordemos que todo virus necesita de un elemento activo, o sea un
código, si bien los virus de macro tienen la fuerza de ser muy fáciles de
programar e incluso independientes del sistema Operativo (existe Office para Mac
y Windows por ejemplo) también tienen una debilidad: su código es relativamente
fácil de descubrir. Cualquier documento de Office que contenga alguno de estos
patrones:
Winword/Concept 57573649 6e666563 746f7206 06646f02 6904734d 65240c67
Winword/Nuclear 63e6e5e5 ee8fe6e3 e48fefe3 fd87b1c9 8aeaad8c a7918c93
Winword/Nuke-b 6f616464 6e0467c2 80673b80 0506076a 083a5061 794c6f61
Winword/DMV 740c6c01 0064521a 1d646452 1d690770 72657365 6e740c6c
Winword/Colours d2cfd0c3 f2efc8d5 d2c7caca c3c2a3cf a7cfa0b8 c2c9a58a
Winword/Hot a1869dad 889d8ca7 86cde58e 0369ec8e ee69ec8e e868ecef
Winword/Atom c9cbb4ca a7a6c2c8 aec1e0a6 c2bcbbc2 8fcfa2e7 d2c9cbc3
Winword/Xos 88ea938b e788c0e1 d8e7fcaa 83e784f9 e7e0e7e0 e7fdfafc
Winword/Impost 05690169 126c0000 126c0000 060c6a03 444d561e 646f0269
Winword/FormatC adb2beab ffbce5ff f0aabb8d b8f25fb8 315fdab5 d89c9092
Ami/GreenStripe 302c302c 342b3130 32342c22 69747322 2c226974 27732229
Word2/Offnen 6572f666 666e656e 1107126a 01110518 0a001106 1107126a
Podemos afirmar que tiene un
virus, lo mismo de un mail que contenga código VB Script o VBA sin
justificación aparente o documentos del Word que contengan macros que no estén
justificados por el contenido (ningún documento simple por ejemplo necesita
contener macros). Es relativamente fácil chequear esto, cuando tenemos un
documento sospechoso simplemente vamos a "Herramientas" y "Editor
de Visual Basic" y examinamos si hay código. El código puede estar
abierto (lo que nos da una idea de lo que hace) o protegido (lo que seria
altamente sospechoso de que sea un virus)