Una macro en informática es una regla o patrón que especifica cómo una determinada secuencia de entrada (a menudo una secuencia de caracteres) debe asignarse a una secuencia de entrada de reemplazo (a menudo también una secuencia de caracteres) de acuerdo con un procedimiento definido.
Una macro se utiliza para definir variables o procedimientos , [1] para permitir la reutilización de código o para diseñar lenguajes específicos de dominio .
Las macros se pueden dividir en varios tipos:
Las macros pueden resultar muy útiles para los usuarios de software, ya que simplifican las acciones que se utilizan con regularidad (código repetitivo para un programador o una secuencia de acciones en un programa) de modo que se aumenta la productividad del usuario. Sin embargo, existen muchos problemas que se abordarán más adelante.
Existen algunos peligros en las macros de sustitución de texto, como las macros de C. El preprocesador de C es una herramienta poderosa que puede aportar claridad al código o, por el contrario, oscurecerlo. [3]
Si una macro como la función común max se define como
#define máx(a,b) (((a) > (b)) ? (a) : (b))
Entonces, una de las dos, a o b, se evaluará dos veces cuando se utilice, aunque al leer el código de llamada esto puede no resultar obvio. Si estas entidades son constantes, esto es inofensivo; si son llamadas de función, la evaluación repetida puede consumir recursos. Peor aún, si son funciones con efectos secundarios, una segunda evaluación puede generar resultados inesperados.
No poner entre paréntesis los argumentos puede dar lugar a resultados inesperados. Por ejemplo,
#define doble(x) 2 * x
tiene como objetivo producir el doble del argumento. Pero double(x + 1) producirá 2 * x + 1 en su lugar. La solución es poner entre paréntesis los argumentos:
#define doble(x) (2 * (x))
Estos fallos son completamente diferentes de los anteriores: el principal problema en las macros de tipo VBA son los virus. Los virus de macro son relativamente recientes, el primero llamado Concept, [4] fue creado en junio de 1995. [5]
La razón principal de esto es que los lenguajes de alto nivel utilizados para escribir código de macro son potentes y fáciles de usar, lo que aumenta considerablemente el grupo de posibles escritores de virus, y los documentos que contienen las macros pueden difundirse rápidamente y ampliamente por correo electrónico . [6]
Los fallos de macro pueden propagarse rápidamente y volverse muy destructivos.
Macro de sistema significa macros que interactúan con operadores básicos en un documento de Word (como funcionalidades de uso frecuente como FileSave, FileSaveAs que son macros). La fortaleza, y a la vez la debilidad de un documento de Word es que este tipo de macros pueden ser redefinidas por los usuarios. Esto le permite al usuario una gran flexibilidad, pero también es una falla que los piratas informáticos pueden explotar para tomar el control del documento y la computadora donde se abre el documento de Word. Este tipo de virus utilizan macros automáticas y semiautomáticas, que pueden iniciarse por cualquier acción o evento sin el conocimiento o consentimiento del usuario. Por ejemplo, un documento de Word tiene las siguientes macros: AutoExec, AutoNew, AutoClose, AutoOpen, AutoExit, por lo que es fácil para un pirata informático reemplazar estas funcionalidades básicas por un virus de macro que tenga el mismo nombre que la funcionalidad original. [6] Además, una combinación de teclas de acceso directo se puede asociar con un comando del sistema (como Ctrl+B para configurar la fuente en negrita) y el usuario puede cambiarlas, reemplazándolas por macros personalizadas. De esta forma, un hacker puede modificar y crear macros que el usuario activará mediante el uso de la tecla de acceso directo. Dichas macros también pueden activarse mediante un botón de macro, como el botón "Haga clic aquí para obtener más información", que parece común e inocuo. [6]
Un tipo de virus de macro que corta y pega el texto de un documento en la macro. La macro se puede invocar con la macro de apertura automática para que el texto se vuelva a crear cuando se abra el documento (vacío). El usuario no notará que el documento está vacío. La macro también puede convertir solo algunas partes del texto para que sea menos visible. Eliminar macros del documento manualmente o mediante un programa antivirus puede provocar una pérdida de contenido en el documento. [5] : 609–610
Los virus polimórficos cambian su código de forma fundamental con cada replicación para evitar ser detectados por los escáneres antivirus. [7]
En WordBasic (primer nombre del lenguaje Visual Basic ), los virus polimórficos son difíciles de detectar. De hecho, el polimorfismo
de las macrosdepende del cifrado del documento. Sin embargo, los piratas informáticos no tienen control sobre la clave de cifrado .
Además, el cifrado es ineficiente: las macros cifradas sólo están en el documento, por lo que la clave de cifrado también lo está y cuando una macro polimórfica se replica a sí misma, la clave no cambia (la replicación afecta sólo a la macro, no al cifrado).
Además de estas dificultades, una macro no puede modificarse a sí misma, pero otra macro sí. WordBasic es un lenguaje potente, que permite realizar algunas operaciones con las macros:
Por lo tanto, para implementar macrovirus que puedan cambiar su contenido, los hackers tienen que crear otra macro que cumpla la tarea de modificar el contenido del virus. Sin embargo, este tipo de macrovirus no está muy extendido. De hecho, los hackers con frecuencia optan por crear macrovirus porque son fáciles y rápidos de implementar. Crear una macro polimórfica requiere un gran conocimiento del lenguaje WordBasic (requiere las funcionalidades avanzadas) y más tiempo que un macrovirus "clásico". Incluso si un hacker creara una macro polimórfica, el polimorfismo debe realizarse, por lo que el documento debe actualizarse y la actualización puede ser visible para un usuario. [5] : 610–612
Durante la replicación, una macro puede crear macros que no hacen nada. Pero esta idea se puede combinar con macros polimórficas, por lo que las macros no son necesariamente de tipo "no hacen nada"; cada macro invoca a la siguiente, por lo que se pueden organizar en cadena. En tal caso, si no se eliminan todas durante una desinfección, se activa alguna carga útil destructiva. Un ataque de este tipo puede hacer que el procesador winword se bloquee con un error interno. Desde Winword 6.0 , la cantidad de macros por plantilla está limitada a 150, por lo que el ataque también es limitado, pero aún puede ser muy molesto. [5] : 623
Los virus de macro pueden, en algunos casos, interactuar entre sí. Si dos virus se ejecutan al mismo tiempo, ambos pueden modificar el código fuente del otro.
Por lo tanto, se obtiene un nuevo virus que no puede ser reconocido por el software antivirus. Pero el resultado es totalmente aleatorio: el virus de macro puede ser más o menos infeccioso, dependiendo de qué parte del virus haya sido modificada.
Sin embargo, cuando el "apareamiento" no es intencional, el virus de macro resultante tiene más posibilidades de ser menos infeccioso.
De hecho, para replicarse, debe conocer los comandos en el código fuente, pero, si se modifica con un esquema aleatorio, el macro no puede replicarse.
Sin embargo, es posible hacer tales macros intencionalmente (es diferente de los virus de macro polimórficos que deben usar otra macro para cambiar su contenido) para aumentar la infectividad de los dos virus.
En el ejemplo del artículo, [5] : 612–613 el macro virus Colors [8] infectó un documento, pero otro infectó el sistema del usuario antes: el macro virus Concept .
Ambos virus usan el comando AutoOpen , por lo que, al principio, se detectó el macro virus Colors pero el comando AutoOpen en él era el comando del macro virus Concept .
Además, cuando Concept se duplica a sí mismo, no está cifrado, pero el comando en el virus Colors estaba cifrado (Colors cifra sus comandos).
Por lo tanto, la replicación del macro virus Concept da como resultado la hibridación de este macro virus (que había infectado primero el sistema del usuario) y Colors .
El "híbrido" podría replicarse a sí mismo solo si AutoOpen no se ejecutara; de hecho, este comando proviene de Concept , pero el cuerpo del híbrido es Colors , por lo que crea algunos conflictos.
Este ejemplo muestra el potencial de los macrovirus de apareamiento: si se crea un par de macrovirus de apareamiento, será más difícil detectar ambos macrovirus (en esta hipótesis, solo hay dos virus que se aparean) por parte de los escáneres específicos de virus y puede reforzar la virilidad de los virus.
Afortunadamente, este tipo de macrovirus es poco común (más que los macrovirus polimórficos, puede que ni siquiera exista uno); de hecho, crear dos (o más) que puedan interactuar entre sí y no reducir la virilidad (más bien reforzarla) es complicado.
Uno de los peores escenarios en el mundo de los virus sería el de una herramienta que permitiera crear un nuevo virus modificando uno ya existente. Para los archivos ejecutables, es difícil crear este tipo de herramienta, pero es muy sencillo para los virus de macro, ya que las fuentes de macros siempre están disponibles. Basándonos en la misma idea de las macros polimórficas, una macro puede realizar modificaciones en todas las macros presentes en el documento. Teniendo esto en cuenta, basta con realizar unas pocas modificaciones a la macro para convertirla en un mutador de virus de macro. Por lo tanto, es fácil crear generadores de virus de macro y, por lo tanto, crear rápidamente varios miles de virus conocidos. [5] : 613–614
La mayoría de los macrovirus son independientes; no dependen de otras macros (para la parte infecciosa del virus, no para la replicación en algunos virus), pero algunos macrovirus sí lo hacen. Se denominan macros parásitas. [5] : 614–615 Cuando se ejecutan, comprueban otras macros (virus o no) y les añaden su contenido. De esta forma, todas las macros se convierten en virus. Pero este tipo de macro no se puede propagar tan rápidamente como las macros independientes. De hecho, depende de otras macros, por lo que, sin ellas, el virus no se puede propagar. Por lo tanto, las macros parásitas a menudo son híbridas: son independientes y pueden infectar otras macros. Este tipo de macrovirus plantea problemas reales a los antivirus específicos de virus ; de hecho, modifican el contenido de otros virus, por lo que no es posible una detección precisa.
Existen diferentes tipos de antivirus (o escáneres), uno de ellos es el antivirus de análisis heurístico
que interpreta o emula macros.
De hecho, para examinar todas las ramas de macros se requiere una complejidad NP-completa [5] : 605 (usando backtracking ), por lo que en este caso, el análisis de un documento (que contiene macros) llevaría demasiado tiempo. Interpretar o emular una macro daría lugar a errores de falsos positivos o a virus de macro no detectados.
Otro tipo de antivirus, el antivirus verificador de integridad , en algunos casos no funciona: solo verifica documentos con extensiones DOT [9] o DOC (de hecho, algunos productores de antivirus lo sugieren a sus usuarios), pero los documentos de Word pueden residir en otras extensiones que esas dos, y el contenido del documento tiende a cambiar a menudo. [5] : 605
Entonces, al igual que el análisis heurístico , esto puede conducir a errores de falsos positivos , debido al hecho de que este tipo de antivirus verifica el documento completo.
El último tipo de antivirus que veremos será el escáner específico de virus . [5] : 608 Busca la firma de los virus, por lo que el tipo de antivirus es más débil que los anteriores.
De hecho, los virus detectados por los escáneres específicos de virus son solo los que conocen los productores de software (por lo que se necesitan más actualizaciones que en otros tipos de escáneres). Además, este tipo de antivirus es débil contra los virus que se transforman (véase la sección anterior). Si un virus de macro cambia su contenido (es decir, su firma), los escáneres específicos de virus ya no pueden detectarlo , incluso si es el mismo virus que realiza las mismas acciones. Su firma no coincide con la declarada en el escáner de virus.
Además de la responsabilidad del antivirus, está la del usuario: si se detecta un posible virus de macro, el usuario puede elegir qué hacer con él: ignorarlo, ponerlo en cuarentena o destruirlo, pero esta última opción es la más peligrosa.
El antivirus puede activar algunos virus de macro destructivos que destruyen algunos datos cuando son eliminados por el antivirus.
Por lo tanto, tanto los escáneres de virus como los usuarios son responsables de la seguridad y la integridad de los documentos/ordenador.
Además, incluso si el antivirus no es óptimo en la detección de virus, la mayoría de los virus de macro se detectan y la progresión en la detección de virus mejora, pero con la creación de nuevos virus de macro.
{{cite book}}
: |work=
ignorado ( ayuda )