The Information Systems and Computer Applications examination covers material that is usually taught in an introductory college-level business information systems course.

Aside
 
 
Tal y como avanzamos en el anterior post de esta serie sobre ‘crypters’, los Antivirus, en adelante AVs, escanean los archivos en el disco del ordenador y no en la memoria RAM y este comportamiento es el que aprovechan los ‘crypters’ para evadir la detección de los AVs. Veamos como lo hacen.

Cifrado

Los ‘crypters’ utilizan técnicas de ‘cifrado‘ para ocultar los archivos maliciosos. Repasemos rápidamente en qué consiste un cifrado. Un cifrado es un procedimiento que utiliza un algoritmo y unaclave para transformar un mensaje legible en otro indescifrable.
 
Veámoslo con un ejemplo: vamos a ‘cifrar’ el mensaje “HOLA” con el algoritmo de cifrado ROT (también conocido como cifrado César) y la clave de cifrado será “1”. Este algoritmo lo que hace es, para cada caracter del alfabeto, avanza tantas posiciones como el valor de la clave de cifrado establecida, en este caso “1”. Así pues, tras aplicar el algoritmo, la letra “A” se transforma en la “B”, la “B” en la “C” y así sucesivamente. Por tanto el mensaje “HOLA” se transforma en “IPMB”. De este modo hemos ocultado nuestro mensaje y para que alguien pueda descifrarlo, necesitará conocer tanto el algoritmo empleado (ROT) como la clave de cifrado (1). Obviamente este es un algoritmo muy sencillo y una clave igualmente sencilla, lo cual permitiría llevar a cabo ataques con el propósito de deducir el algoritmo y la clave, sin embargo, existen infinidad de algoritmos de cifrado enormemente complejos que pueden utilizarse y son utilizados para cifrar ‘malware’.

 

Cifrando malware

La idea básica que subyace en el concepto de ‘crypter’ es la siguiente: si se cifra un archivo malicioso, éste será transformado en un archivo ‘ininteligible’ para el AV y por tanto no será detectado. Lo cual es cierto, pero claro, existe un pequeño problema, y es que el archivo malicioso cifrado no funciona, no puede ejecutarse, así que es necesario encontrar una solución, una técnica que se encargue de descifrar y ejecutar el archivo malicioso. Esta pieza de software se denomina ‘stub‘.

 

‘Crypter’ y ‘stub’

Por regla general un ‘crypter’ consiste en dos elementos: el ‘crypter‘ y el ‘stub‘. Esta última es la pieza más importante del conjunto.

El ‘crypter’ consiste generalmente en un programa que permite buscar y seleccionar en el sistema de archivos del ordenador el ejecutable a cifrar (generalmente un archivo malicioso, pero es posible cifrar cualquier archivo que se desee). Algunos, permiten adicionalmente introducir la contraseña de cifrado de forma manual o generarla aleatoriamente. Y en ocasiones, algunos permite activar cierta medidas anti-forenses, pero esto es otra historia que trataremos más adelante.
 
Una vez seleccionado el archivo a cifrar y pulsado el botón de ‘cifrar’ (Build en el ejemplo de la imagen) nos generará un ‘nuevo ejecutable‘, el cual en realidad consiste en una composición del ‘stub’ y un ‘payload’, que no es más que el malware cifrado.
 
 
 
Crypter (malware) = Stub + [malware cifrado]
 
 

Como puede observarse, ‘crypter’ y ‘stub’ están relacionados, ya que el ‘crypter’ se encarga de ejecutar el algoritmo de ‘cifrado’ y el ‘stub’ se encarga de ejecutar el algoritmo de ‘descifrado’. Para que el ‘stub’ pueda descifrar el malware necesita conocer la clave utilizada en el proceso de cifrado. En algunos casos, el programador del ‘crypter’ no da opción al usuario a elegir una clave, sino que la ha definido de antemano en su código, y en otras sí permite elegirla o generarla aleatoriamente, en cualquier caso, al generar el ‘nuevo ejecutable’ el ‘crypter’ ha de almacenar la clave en el algún lugar para que el ‘stub’ pueda encontrarla y descifrar el malware.

Si se observa en detalle este ‘nuevo ejecutable’, lo que vemos es una configuración bastante habitual, en la que tras el archivo ejecutable que constituye el ‘stub’, se añaden unos separadores de delimitan el lugar en el que se encuentra la almacenada la clave y a continuación se añade elmalware cifrado. Obviamente cada programador puede organizar esta distribución como más le guste y en ocasiones, en lugar de añadir directamente el malware cifrado tras el stub, lo introducen en un recurso del ejecutable  PE.

 
Cuando este ‘nuevo ejecutable’, valga la redundancia, es ejecutado, el ‘stub‘ se encarga de copiar a la ‘memoria RAM’ el malware cifrado, descifrarlo allí mismo, y a continuación ejecutar dicho ‘malware’ ya descifrado. Trataremos este punto en detalle en el siguiente artículo de la serie.

Artículo cortesía de Abraham Pasamar

Comments are closed.