Haskell, Delphi y Phix: lenguajes raros se convierten en escudo contra los antivirus

Haskell, Delphi y Phix: lenguajes raros se convierten en escudo contra los antivirus

El análisis estático no puede hacer frente al código escrito en lenguajes no tradicionales.

image

Los ciberdelincuentes eligen cada vez más lenguajes de programación exóticos para dificultar el análisis de su código malicioso. Según una nueva investigación, lenguajes poco comunes como Haskell, Delphi o Phix ofrecen nuevas formas de evadir los sistemas de análisis estático — el método que estudia el código sin ejecutarlo.

Los investigadores analizaron casi 400 000 archivos ejecutables para Windows con el fin de entender por qué el malware escrito en lenguajes raros es más difícil de detectar. Descubrieron que compiladores y lenguajes no convencionales reducen significativamente la precisión de los sistemas de detección. El efecto es especialmente notable al utilizar compiladores poco comunes como Embarcadero Delphi, Tiny C o Pelles C. Según los autores, la elección del compilador influye más en la evasión del análisis que el propio lenguaje.

Tradicionalmente, el malware se desarrolla en C o C++ y se compila con Microsoft Visual Studio. Estos binarios son bastante homogéneos, lo que facilita la labor de los antivirus: los bytes del shellcode suelen estar dispuestos de forma secuencial o en intervalos predecibles, permitiendo métodos basados en firmas. En cambio, con Rust, Lisp, Haskell y otros lenguajes, la estructura de memoria es mucho menos predecible. Los bytes maliciosos pueden estar dispersos por todo el binario, lo que dificulta enormemente su detección automática.

El uso de lenguajes inusuales también conlleva un mayor número de llamadas indirectas, múltiples hilos paralelos y lógica de ejecución compleja. Todo esto incrementa el esfuerzo necesario para hacer ingeniería inversa, complicando la labor de los analistas y aumentando las probabilidades de una ofensiva exitosa.

Ejemplos prácticos confirman la creciente adopción de lenguajes exóticos por parte de grupos conocidos. APT29 utilizó Python en el backdoor Masepie y una combinación de Delphi, Go, C# y Python en Zebrocy. El ransomware Akira cambió de C++ a Rust, BlackByte sustituyó C# por Go, y Hive fue reescrito completamente en Rust. Estas transiciones dificultan el análisis del código y lo vuelven menos reconocible para las herramientas automatizadas.

Este enfoque puede considerarse una especie de "ofuscación por desconocimiento": cuanto menos especialistas e instrumentos entienden el formato del código, mayor es la probabilidad de que el malware pase desapercibido. Esto es especialmente cierto para lenguajes con modelos de ejecución inusuales, como Haskell o Lisp, o entornos con bibliotecas estándar voluminosas como Dart y Go.

Entre los lenguajes menos conocidos, hay algunos que generan especial preocupación entre los investigadores. Por ejemplo, Visual Basic 6 ha sido durante mucho tiempo una pesadilla para los expertos por la dificultad de su análisis. Y el malware Grip utilizaba un intérprete integrado de Brainfuck para complicar el estudio de sus funciones clave.

En conclusión, los investigadores subrayan que la seguridad no debe limitarse a vigilar los lenguajes populares. Las tecnologías poco utilizadas brindan a los atacantes margen adicional para maniobrar, por lo que es esencial ampliar las herramientas de análisis también a estos casos atípicos. Solo así se podrá mantener la delantera frente a quienes aprovechan la creatividad y la rareza técnica con fines maliciosos.

¿Tu Wi-Fi doméstico es una fortaleza o una casa de cartón?

Descubre cómo construir una muralla impenetrable