¿De qué está hecho el malware?

Esta pregunta puede contestarse fácilmente: ¡DE MALDAD! Esta larga historia se comienza a escribir en el lejano 1971 con Creeper, prueba de seguridad diseñada para comprobar si era posible crear un programa capaz de replicarse entre equipos. El autor, Bob Thomas Morris de BBN Technologies, empleó el naciente “Sistema Operativo” TENEX (TEN-EXtended) que “infectaba” ordenadores DEC PDP-10. Los conceptos de virus e Internet aún no eran empleados; de hecho, era el periodo de vida de la ARPANET.

Tras esta macabra pero interesante idea surge en 1974 Rabbit (o Wabbit), que dada la velocidad de replicación impulsó el empleo del término “virus”. Le sigue la creación de ANIMAL en 1975, que se escribió en ensamblador para ejecutarse en las plataformas UNIVAC 1100 series, y al ir acompañado de PREVADE (un programa host donde se ejecutaba ANIMAL y a su vez dentro de un programa que ejecutaba acciones sin la aprobación del usuario), nos lleva a reconocer el primer “troyano”.

Es en 1986 cuando nace el virus BRAIN, el primero creado para IBM PC compatible (diseñado en ensamblador), siendo una plataforma similar al computador original pero capaz de ejecutar en computadoras x86 con sistemas operativos Microsoft (DOS y Windows), así como IBM OS/2, Linux o incluso BSD. En 1988 el Morris Worm, escrito en C, fue ampliamente difundido por la compatibilidad de ejecución en plataformas con VMS, BSD y SunOS.

Aunque podríamos seguir dando innumerables ejemplos de malware, lo que deseamos hacer notar con esta breve introducción es que el diseño de malware ha ido evolucionando con las tecnologías disponibles en el momento de liberación y con las capacidades de compatibilidad o procesamiento, así como de la posibilidad o imposibilidad de ser analizado a través de ingeniería inversa (proceso a través del cual se busca la reconstrucción del código de un programa a través de entender su funcionamiento, configuración, interacciones, componentes y estructura).

Es de esperarse que como la mayor parte de la tecnología que consumimos los usuarios se construye alrededor de la World Wide Web y del sistema operativo Windows, un hacker interesado en intervenir páginas y aplicaciones tendrá que aprender en primera instancia los lenguajes con los que se construyen u operan. A la par, conocer a profundidad los sistemas operativos para buscar y aprovechar sus vulnerabilidades para que sus artefactos se aprovechen de éstas y funcionen como él lo espera; esto es, conocer lenguajes de programación tales como: “Ensamblador”, “Python”, “C/C++”, “Ruby”, “Swift”, “HTML”, “PHP”, “JavaScript”, “SQL”.

Bueno, al menos estos lenguajes son aquellos a los que ya nos “estábamos acostumbrando”, pero la mala noticia para todos es que los actores y diseñadores de amenazas están volteando a ver lenguajes más “exóticos” que, además de no ser muy conocidos, les permiten evadir mejor los mecanismos de seguridad tradicionales, complicar el análisis y multiplicar el esfuerzo necesario de la ingeniería inversa.

Lenguajes tales como Go, Rust, Nim y Dlang se hacen presentes, y los expertos reconocen que los binarios escritos en estos lenguajes pueden parecer de más complejidad y laboriosos cuando se desmontan. Se observa además que se suman capas de ofuscación aprovechando que son relativamente nuevos y podrían evadir la seguridad en los endpoints.

“A principios de este año, la empresa de seguridad empresarial Proofpoint descubrió un nuevo malware escrito en Nim (NimzaLoader) y Rust (RustyBuer) que, según dijo, se estaba utilizando en campañas activas para distribuir e implementar Cobalt Strike y cepas de ransomware a través de campañas de ingeniería social. De manera similar, CrowdStrike observó el mes pasado una muestra de ransomware que tomó prestadas implementaciones de las variantes anteriores de HelloKitty y FiveHands, mientras usaba un empaquetador Golang para cifrar su carga útil principal basada en C ++.”

Entre las amenazas detectadas que han sido escritas en estos lenguajes tenemos:
Dlang: DShell, Vovalex, OutCrypt, RemcosRAT
Go: ElectroRAT, EKANS (también conocido como Snake), Zebrocy, WellMess, ChaChi
Nim: Cargadores Cobalt Strike basados en NimzaLoader, Zebrocy, DeroHE, Nim
Rust: Convuster Adware, RustyBuer, TeleBots Downloader y Backdoor, NanoCore Dropper, PyOxidizer

En resumen, los atacantes están empleando las mismas técnicas maliciosas pero con el uso de nuevos idiomas que presentan barreras en el tiempo de detección, a diferencia de aquellas escritas en lenguajes con gran madurez y reconocimiento por las diversas soluciones de seguridad. Podemos echar un vistazo al top 50 de lenguajes de programación más empleados según IEEE y ser conscientes del gran abanico de posibilidades del que se pueden asir los atacantes para el diseño de malware.

Referencias:

http://www.textfiles.com/virus/braininf.vir
https://www.cs.purdue.edu/homes/ajajoo/papers/morris-worm_term-paper.pdf
http://ftp.cerias.purdue.edu/pub/doc/morris_worm/
https://www.ee.ryerson.ca/~elf/hack/iworm.html
https://www.pcrisk.es/guias-de-desinfeccion/10298-electrorat-malware-mac
Juan Manuel Harán. (2018). Malware of the 1980s: Looking back at the Brain Virus and the Morris Worm. Julio 2021, de ESET, spol. s r. o. Sitio web:
https://www.welivesecurity.com/2018/11/05/malware-1980s-brain-virus-morris-worm/
Ravie Lakshmanan. (July 27, 2021). Hackers Turning to “Exotic” Programming Languages for Malware Development. Julio, 2021, de © The Hacker News Sitio web:
https://thehackernews.com/2021/07/hackers-turning-to-exotic-programming.html
Stephen Cass. (2021). Top Programming Languages. Julio, 2021, de IEEE Spectrum s Sitio web: