EL RETO DE LOS VIRUS POLYRANSOM THE CHALLENGE OF POLYRANSOM VIRUSES
Ing. Miguel Ángel Méndez Gil Ing. Jesús Villabrille Castillo Segurmática, Cuba,
[email protected],
[email protected]
RESUMEN: Los ransomware son programas malignos que restringen el acceso a determinadas partes o archivos del sistema infectado, y piden al usuario un rescate a cambio de quitar esta restricción. Algunos tipos de ransomware cifran los archivos del sistema operativo inutilizando el dispositivo y coaccionando al usuario a pagar el rescate. Estos códigos generalmente se transmiten como troyanos o gusanos. La familia de programas malignos conocidos como Win32.Polyransom posee la funcionalidad de ransomware y además infecta los archivos insertando en ellos una copia íntegra de su propio código, debido a lo cual adquiere la clasificación de virus informático. Además su código varía de una infección a otra, por lo que esta familia de virus es reconocida como ransomware polimórfico que se auto reproduce. El presente artículo muestra un análisis del funcionamiento general de la familia de virus Win32.Polyransom, haciendo énfasis en las variantes F y C por ser dos de los ejemplos más representativos en cuanto a la forma de manifestarse este código malicioso. Se analiza el método de infección utilizado por los creadores de estos programas malignos, y además se exponen aspectos básicos a tener en cuenta por los desarrolladores de productos de software antivirus para poder identificar y descontaminar de forma efectiva los archivos infectados por esta familia de virus polimórficos. Palabras Clave: ransomware, virus polimórficos, polyransom, VirLock.
ABSTRACT: The ransomware are malicious programs that restrict access to certain parts or infected system files, and ask the user for a ransom to remove this restriction. Some types of ransomware encrypt the operating system files and disabling the device coercing the user to pay the ransom. Generally these codes are transmitted as Trojans or worms. The family of malicious programs known as Win32.Polyransom has ransomware functionality and also infects files by inserting a complete copy of its code. Because it takes computer virus classification. Additionally, his code varies from one infection to another, so this family of viruses is known as polymorphic ransomware that self-reproducing. This paper presents an analysis of the overall functioning of the Win32.Polyransom family virus, emphasizing variants F and C to be two of the most representative in terms of how to manifest this malicious code examples. The infection method used by the creators of these malicious programs is discussed, and further exposed basics to keep in mind the developers of antivirus software products to identify and effectively decontaminate infected files by this family of polymorphic virus. KeyWords: ransomware, polymorphic viruses, Polyransom, VirLock.
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
2.1 Características principales de la familia de virus W32.Polyransom.
1. INTRODUCCION Un ransomware (del inglés ransom rescate y ware, software) es un tipo de programa maligno que restringe el acceso a determinadas partes o archivos del sistema infectado, y pide un rescate a cambio de quitar esta restricción. Algunos tipos de ransomware cifran los archivos del sistema operativo inutilizando el dispositivo y coaccionando al usuario a pagar el rescate. Los ransomware se hicieron populares en Rusia y su uso creció internacionalmente en junio del 2013. La empresa McAfee señaló que sólo en el primer trimestre del 2013 había detectado más de 250.000 tipos de ransomwares únicos. Generalmente un ransomware se transmite tanto como un troyano como un gusano, infectando el sistema operativo, por ejemplo, con un archivo descargado o explotando una vulnerabilidad del sistema. En este punto, el ransomware se iniciará y cifrará los archivos del usuario con una determinada clave, que sólo el creador del ransomware conoce y proveerá al usuario que la reclame a cambio de un pago. Hace algunos meses fue descubierto un nuevo comportamiento en este tipo de programa maligno, el virus conocido internacionalmente como Win32.Polyransom.F ó Win32/VirLock, que es un ransomware que bloquea la pantalla y después no sólo cifra los archivos existentes, sino que además los infecta insertando en ellos una copia íntegra de su código, debido a lo cual adquiere la clasificación de virus. Win32/VirLock, es reconocido como el primer ransomware polimórfico que se autoreproduce. Hasta la fecha se han detectado varias variantes de este virus. En el presente artículo se muestra un análisis del funcionamiento general de la familia de virus Win32.Polyransom, haciendo énfasis en las variantes F y C por ser dos de los ejemplos más representativos en cuanto a la forma de manifestarse este código malicioso. Se analizará el método de infección utilizado por los creadores de estos programas malignos, y además se expondrán aspectos básicos a tener en cuenta por los desarrolladores de productos de software antivirus para poder identificar y descontaminar de forma efectiva los archivos infectados por esta familia de virus polimórficos.
Un archivo no ejecutable al ser infectado se convierte en un fichero Win32 PE con extensión EXE que contiene el código del virus y además el fichero original cifrado, el cual se almacena en una posición aleatoria en cada fichero infectado (Fig. 1). Cuando se ejecuta un archivo contaminado con este virus, se descifra el archivo original integrado en su cuerpo, lo coloca en el directorio actual y lo abre. Seguidamente el virus se instala colocando dos instancias con nombres aleatorios de sí mismo en los directorios “%userprofile%” y “%allusersprofile%” (no son copias, cada instancia es única ya que el virus es polimórfico), y agrega entradas en las llaves de registro Run de HKCU y HKLM para garantizar su ejecución en cada reinicio del sistema. Este código malicioso además se instala como un servicio del sistema utilizando un nombre aleatorio. El virus contiene un hilo de ejecución con la funcionalidad de bloqueo de pantalla, utilizando las medidas protectoras típicas, como el cierre de explorer.exe, el Administrador de Tareas, etc. Después de algunos minutos de haber ejecutado el código maligno, el virus bloquea el acceso al sistema operativo, y para poder tener acceso nuevamente se informa al usuario que debe pagar cierta cantidad de dinero a través del servicio Bitcoin. Con este fin el virus muestra una pantalla de rescate (Fig. 2).
Fig. 1. Esquema general de un fichero infectado con un virus de la familia W32.Polyransom.
2. CONTENIDO “XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
El código ofuscado es aquél código que, aunque se tiene el código fuente, ha sido enrevesado específicamente para ocultar su verdadera funcionalidad. La rutina de descifrado de esta variante de Polyransom en cada ciclo se va armando y desarmando combinando una tabla de instrucciones y una tabla de palabras, donde sólo una instrucción de la rutina es la efectiva y el resto son instrucciones “garbage”. Además la instrucción efectiva de la rutina de descifrado se ejecuta entre 500000 y 800000 veces, lo cual hace inoperante la utilización de un emulador de instrucciones para realizar este descifrado.
Fig. 2. Pantalla de rescate mostrada por el virus W32.Polyransom.F. El mensaje de rescate es suficientemente claro, se exige el pago del rescate en Bitcoin. El bloqueador de pantalla les permite a las víctimas utilizar un navegador de Internet y el Notepad. El importe del rescate puede variar entre 150 y 250 USD. El virus posee además otro hilo de ejecución que se encarga de la infección de los archivos. Polyransom.F busca ficheros que le sirvan para alojarse en unidades locales y extraíbles, e incluso en redes compartidas, para incrementar su propagación. Las extensiones de archivos que intenta infectar difieren entre las distintas versiones de Polyransom. Generalmente incluye entre otras las siguientes extensiones: *.EXE, *.DOC, *.XLS, *.ZIP, *.RAR, *.PDF, *.PPT, *.MDB, *.MP3, *.MPG, *.PNG, *.GIF, *.BMP, *.P12, *.CER, *.PSD, *.CRT, *.PEM, *.PFX, *.P7B, *.WMA, *.JPG y *.JPEG.
2.2 Método de Infección W32.Polyransom.F.
del
virus
Desde el punto de vista técnico, lo más interesante de estos códigos malignos es el hecho de que W32.Polyransom es una familia de virus polimórficos, es decir, en cada variante del virus su cuerpo será diferente en todos los archivos infectados y también cada vez que se ejecute. Antes de adentrarnos en el análisis de las variaciones en su código ejecutable, vamos a atender primeramente las múltiples capas de cifrado que utiliza, las cuales poseen gran variabilidad. La variante F de esta familia de virus polimórficos posee un alto nivel de ofuscamiento en las capas de cifrado.
Cuando se carga en memoria un archivo infectado, el único código que no se encuentra cifrado es el correspondiente a la rutina de descifrado, tanto el resto del código, como los datos y el archivo original están cifrados. El código del virus comienza con un polimorfismo de salto en el punto de entrada que generalmente se encuentra al inicio de la primera sección “.text” en la dirección 401000. Siguiendo la secuencia de los saltos en el código del virus se llega al final de esta sección donde se encuentra un algoritmo de descifrado basado en una operación XOR de byte. Este es el último código ejecutable de la sección “.text”, pero no es final de los datos de la sección. Detrás de este código ejecutable Polyransom.F tiene 4 secuencias separadas y bien definidas de colas de datos que son: Código ejecutable cifrado que controla el descifrado y construcción de la máquina de ejecución Tabla de instrucciones cifradas Tabla de punteros cifrados Rutina plantilla cifrada. Estas 3 últimas secuencias son controladas por el código ejecutable cifrado. Ese primer descifrado al final de la sección “.text” tiene como finalidad descifrar la secuencia del código ejecutable cifrado y copiarlo en la sección “.data”. Seguidamente el control se transfiere al inicio de esta sección “.data”. Esta porción de código posee un elevado nivel de ofuscamiento creando una máquina de ejecución independiente donde se ejecutan las reales instrucciones del virus. El código de la máquina de ejecución se construye a partir de la plantilla cifrada y la instrucción viral que se ejecuta en cada paso se obtiene a partir de la secuencia de punteros cifrados y la tabla de instrucciones cifrada. Este código viral que se ejecuta en la máquina de ejecución independiente se encarga de descifrar el
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
resto del cuerpo del virus mediante una operación de XOR de doble palabra a partir de una dirección de memoria cercana al inicio de la sección “.text” (generalmente la dirección 401400), utilizando una clave de doble palabra, y una vez realizada esta operación se le cede el control a este código descifrado. Toda la información necesaria para el descifrado de esta capa, es decir, dirección de inicio, cantidad de bytes a descifrar y clave de descifrado, se encuentra codificada en la tabla de instrucciones cifrada. Este código descifrado (por lo general a partir de la dirección 401400) contiene rutinas de chequeo de integridad, rutinas de descifrado y de cifrado de fragmentos del propio código (Fig. 3). Antes ejecutar cada fragmento del código el virus realiza un chequeo de integridad, y en caso de no coincidir la ejecución cae en un estado de espera o lazo infinito (Fig. 3). En caso de coincidir, el virus descifra la zona de código que va a ejecutar y luego la cifra nuevamente. Este cifrado es variable ya que la llave de cifrado varía, por lo cual el resultado del chequeo de integridad también varía.
que esta fase es ignorada y la ejecución continúa con la infección de otros archivos del usuario.
2.2.1 Identificación y descontaminación del virus W32.Polyransom.F. Para identificar los archivos infectados con la variante F del virus Polyransom el antivirus debe tomar como patrón las instrucciones básicas que conforman la rutina de descifrado que se encuentra en el punto de entrada del fichero infectado teniendo en cuenta el polimorfismo existente en esta rutina (instrucciones “garbage”, cambio de registros, etc). Para lograr obtener los patrones de identificación adecuados es necesario analizar una batería de ficheros contaminados. Para descontaminar un fichero infectado con esta variante del virus Polyransom el antivirus debe determinar la zona donde se encuentran los datos necesarios para descifrar el nombre del fichero original (en unicode) y los datos almacenados en el fichero. Estos datos son: la posición inicial, la cantidad de bytes a descifrar, la llave de descifrado y las operaciones de descifrado que deben ser ejecutadas.
Fig. 3. Primera capa del código descifrado del virus. Contiene la rutina de control de integridad del código del virus.
Una vez realizado todo el funcionamiento viral se procede a la restaura del fichero original que se encuentra cifrado junto con su nombre al final de los datos del cuerpo del virus. Para esto se hace uso de una estructura de datos que contiene los parámetros necesarios para realizar esta operación (Fig. 4). La rutina de descifrado de esta capa (Fig. 5) al igual que cada fragmento del código del virus se encuentra cifrada por lo que el virus antes de ejecutarla verifica su primeramente su integridad, y si es correcta entonces la descifra y ejecuta el descifrado final del archivo original. En caso de que el código maligno sea el dropper no existe fichero para restablecer, por lo
Fig. 4. Estructura de datos con la información necesaria para restaurar el fichero original.
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
Fig. 5. Rutina de descifrado del nombre y los datos del fichero original.
Fig. 6. Fragmento de código ofuscado en la variante W32.Polyransom.C.
2.3.1 Identificación y descontaminación del virus W32.Polyransom.C. 2.3 Características principales de la variante W32.Polyransom.C. La variante C de la familia de virus Polyransom difiere de la analizada anteriormente (variante F) en cuanto al método de infección de los archivos. El archivo original se encuentra cifrado y además comprimido dentro del fichero ejecutable infectado. El virus Polyransom.C contiene 9 bloques de datos. El bloque número 8 contiene la información del tipo del archivo original, mientras el bloque número 9 contiene el fichero original comprimido, ofuscado y cifrado. Los 9 bloques de datos del Polyransom.C poseen un alto nivel de ofuscamiento. La ofuscación binaria se realiza habitualmente para impedir o hacer más difícil los intentos de ingeniería inversa y desensamblado del código binario. Uno de los métodos de ofuscamiento empleados por esta variante del virus consiste en la utilización de los argumentos inmediatos de más de 8000 instrucciones del tipo “mov eax,valor” para almacenar el código cifrado de la siguiente capa (Fig. 6).
Para identificar los archivos infectados con la variante C del virus Polyransom de forma similar a la variante F el antivirus debe tomar como patrón las instrucciones básicas que conforman la rutina polimórfica de descifrado que se encuentra en el punto de entrada. Para descontaminar un fichero infectado con esta variante el antivirus debe implementar entre otras funcionalidades el desofuscamiento del contenido del bloque número 8 que contiene la información del tipo del archivo original. Como resultado de esta operación se obtiene la posición, la cantidad de bytes, el algoritmo de descompresión utilizado y la extensión del fichero original. Para completar la descontaminación del archivo infectado es necesario realizar las operaciones de desofuscar, descifrar y descomprimir (en ese orden) del bloque número 9 que contiene el fichero original comprimido, cifrado y ofuscado. Para realizar la descompresión del fichero original se debe emplear un algoritmo de descompresión similar al utilizado por esta variante del virus (Fig. 7), para lograr finalmente restaurar el fichero original con su tamaño, datos y extensión original.
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
del fichero infectado, es necesario obtener varias muestras infectadas en las que se conozca el contenido del fichero original. Con este propósito para el caso especifico de este virus, de acuerdo a los tipos de archivos que es capaz de infectar, se deben crear ficheros cebos de diferentes formatos (DOC, PDF, XLS, PPT, JPG, etc), con diferentes tamaños y con patrones específicos conocidos, por ejemplo, todos los bytes en “0”, en “1”, en “FF”, bytes consecutivos “1…8”, etc, y después proceder a infectarlos en una microcomputadora asilada y habilitada para esta función.
Fig. 7. Algoritmo de descompresión utilizado en la variante W32.Polyransom.C.
2.4 Otras variantes de la familia de virus Polyransom. En la variante E de este virus el fichero original se encuentra comprimido dentro del fichero ejecutable infectado al igual que la variante C, pero a diferencia de las variantes F y C el fichero original y parte del código del virus se encuentran dentro el área de recursos del fichero infectado. La variante B no comprime el fichero original cuando es infectado, pero de forma similar a las variantes anteriores posee múltiples capas de cifrado y un alto nivel de ofuscamiento y variabilidad. También han sido reportadas al Laboratorio Antivirus de la empresa Segurmatica las variantes A, H e I de esta familia de virus polimórficos.
2.5 Reto para los analistas de programas malignos y desarrolladores de productos de software antivirus. Las diferentes variantes de virus Polyransom representan un gran reto para los analistas de programas malignos y desarrolladores de productos de software antivirus. El análisis de códigos malignos es una labor imprescindible en un Laboratorio Antivirus. Su trabajo fundamental se basa en hacer ingeniería inversa del código ejecutable de estos programas. En el caso de los programas malignos como la familia de virus Polyransom, que tienen la característica de almacenar el fichero original cifrado dentro
Seguidamente comienza el análisis del código hexadecimal de los ficheros cebos infectados con ayuda de herramientas de software desensambladores y debuggers, prestando especial atención a los ciclos de descifrado correspondientes a cada una de las capas de cifrado del código del virus hasta llegar a obtener los datos del fichero original. Estos datos comprenden, entre otros, la posición dentro del fichero infectado donde se encuentran el nombre, el tamaño y los datos originales cifrados, la llave de descifrado y la cantidad de bytes, con el objetivo de poder descifrarlo, extraerlo y asignarle su nombre original. El analista también debe ser capaz de reconocer las instrucciones “garbage” dentro del código maligno (instrucciones que no cumplen ninguna función en la ejecución del código del virus), y debe detectar las trampas antidebuggers y antiemuladores utilizadas por los creadores de virus y lograr traspasarlas con el objetivo de poder realizar un estudio minucioso del código malicioso. Para llevar a cabo este estudio el analista debe dominar además, entre otros aspectos, las estructuras lógicas de los diferentes formatos de los archivos, así como las funciones internas de los Sistemas Operativos.
3. CONCLUSIONES El análisis de la família virus W32.Polyransom es de gran interés por sus características técnicas de infección rápida y polimorfismo con múltiples capas de cifrado y un alto nivel de ofuscamiento y variabilidad. En el presente artículo no se ha agotado toda la información técnica acerca de esta familia de códigos malignos, nos hemos enfocado básicamente en los principales mecanismos de su funcionamiento, así como en la forma de detectarlo, descontaminarlo y cómo prevenir a los usuarios finales de ser contaminados. Una forma de evitar esto último es tener siempre el antivirus actualizado y activada la Protección Permanente.
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”
Méndez Gil, Miguel Ángel; Villabrille Castillo, Jesús | EL RETO DE LOS VIRUS POLYRANSOM
La Empresa de Consultoría y Seguridad Informática (Segurmatica) ha desarrollado productos de software antivirus de diferentes tipos como identificadores, descontaminadores, preventores, detectores genéricos, recuperadores, filtros de correo electrónico y otros para diversos sistemas operativos, los cuales identifican y descontaminan la familia de virus W32.Polyransom, así como los restantes programas malignos que han sido detectados en el país hasta la fecha. La aparición de programas malignos que utilizan técnicas de alta complejidad es cada vez más frecuente. En la actualidad existen muchos de ellos que combinan varias técnicas de infección, los cuales representan un gran reto para los analistas de programas malignos y desarrolladores de productos de software antivirus, quienes deben tener en cuenta cada uno de los aspectos analizados en este artículo con el objetivo de ofrecer a los usuarios finales una respuesta rápida y eficiente que pueda satisfacer sus necesidades en el enfrentamiento diario a los ataques producidos por los códigos malignos.
4. REFERENCIAS BIBLIOGRÁFICAS sitio: http://www.segurmatica.cu sitio: http://www.informaticahabana.com/index_q_esnode16.html Peter Szor, “The Art of Computer VirusResearch and Defense”.
5. SÍNTESIS CURRICULAR DE LOS AUTORES Miguel Angel Méndez Gil es graduado de Ingeniería Electrónica en el año 1985 en el ISPJAE. A partir de 1992 es miembro de la Comisión Nacional de Protección de Datos y del Laboratorio Latinoamericano para la Protección contra los Virus Informáticos. Desde 1995 trabaja en el Laboratorio Antivirus de la empresa Segurmática como analista de programas malignos y desarrollador de productos de software antivirus, donde ocupa el cargo de Especialista Superior en Seguridad Informática. Ha impartido cursos, talleres y conferencias en universidades, centros laborales y eventos de seguridad informática en Cuba, Venezuela y Perú. Ha participado como ponente desde 1994 en cada una de las ediciones del Seminario Iberoamericano de Seguridad en las Tecnologías de la Información, celebrado como parte de la Convención y Feria Internacional Informática. En el año 2000 obtuvo la categoría docente de Asistente Adjunto de la Universidad de La Habana. Ha publicado hasta la fecha un total de 10 artículos en la revista de computación GIGA, editada en Cuba, relacionados con el tema de los programas malignos y la seguridad informática.
“XII Seminario Iberoamericano de Seguridad en las Tecnologías de la Información”