Resultados 1 al 2 de 2

Anlisis del cdigo fuente de un ransomware escrito en Python

  1. #1 Anlisis del cdigo fuente de un ransomware escrito en Python 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicacin
    Spaa
    Mensajes
    5.177
    Descargas
    191
    Uploads
    251
    Analizamos el cdigo fuente de un ransomware escrito en Python bajo el nombre de deteccin: Python/Filecoder.AX. Esta variante, que ya no est activa, s lo estuvo durante los aos 2017 y 2018 y fue distribuida empaquetada en un ejecutable .exe mediante PyInstaller, con lo cual ser necesario descompilarlo para obtener su cdigo fuente en texto plano. El proceso de descompilacin es sencillo y fue explicado paso a paso en el post: cmo descompilar un ejecutable malicioso (.exe) escrito en Python.

    Una vez obtenido el cdigo fuente nos encontraremos con muchas funciones y variables que deberemos ir leyendo detenidamente para poder comprender las actividades maliciosas realizadas. Es una buena idea comenzar a analizar el cdigo desde el entry point; es decir, desde la primera instruccin que ser ejecutada. De esta manera es ms fcil seguir el flujo de ejecucin y se evita estudiar funciones basura o residuales (presentes en el cdigo, pero nunca utilizadas).

    En este caso, la amenaza comienza ejecutando este fragmento de cdigo:
    La finalidad de este cdigo ser ejecutar la funcin “run_crypt” para cada una de las unidades de almacenamiento presentes en la computadora o para una especfica pasada como parmetro al momento de ejecutar el malware. De esta observacin se deduce que “run_crypt” ser el componente principal de la amenaza. Adems de llamar a dicha funcin, este cdigo tambin se encargar de generar un cdigo para identificar la computadora de la vctima y que ms adelante, luego de ser hasheado, ser utilizado como clave para cifrar los archivos. Uno de los valores utilizados para generar este cdigo se pasa al ransomware como un parmetro al momento de ser ejecutado, lo cual sugiere que, como parte de un ataque, esta amenaza muy probablemente sea ejecutada por otra.

    Analizando las funciones


    Como se mencion anteriormente, la funcin “run_crypt” es el componente central de la amenaza.
    Esta funcin itera uno por uno sobre todos los archivos presentes en la unidad con algunas excepciones:

    • Omite todos los archivos cuya ruta comience con “C:\Windows” es decir, no cifra los archivos del sistema para no afectar la estabilidad de este y permitir que la vctima pueda leer el mensaje de rescate.
    • Omite todos los archivos que se encuentran en la papelera de reciclaje, lo cual tiene sentido dado que se supone que son archivos que la vctima no desea.
    • Omite los archivos ya cifrados (.RQUILT).
    • Omite los archivos donde escribe el mensaje de rescate para la vctima (RECOVER.txt).
    • Omite el ejecutable de s mismo.
    • Omite los archivos .bak o aquellos cuyo nombre o ruta contenga la palabra “backup”. Estos son eliminados directamente.
    • Omite los archivos que no tienen una extensin considerada valida o relevante para el ransomware (basndose en la lista contenida en la variable valid_extension).


    Luego, todos los archivos que pasen los controles previamente enunciados sern cifrados mediante la funcin “createAdamantium” y el archivo original no cifrado ser eliminado inmediatamente.


    Aqu podemos observar tres elementos interesantes:


    • Variable “valid_extension”
    • Funcin “createAdamantium”
    • Funcin “grandpaSlacks”


    valid_extension


    Esta variable contiene una lista donde se definen todas las extensiones de archivo que sern consideradas validas o relevantes y, por ende, que sern cifradas por este ransomware.
    En esta lista podemos observar formatos muy variados asociados a:

    • Documentos: .pdf, .doc, .docx, .odt, .xls, .xlsx, etc.
    • Cdigo fuente: .php, .py, .cpp, .vbs, .java, .asp, .asm, .pas, etc.
    • Bases de datos: .sqlitedb, .sqlite3.
    • Archivos comprimidos: .tar, .zip, .rar, etc.
    • Wallet de criptomonedas: wallet.dat
    • Etc


    Muchos de los formatos apuntados son encontrados en la mayora de las computadoras, por ejemplo, imgenes, videos, documentos, archivos comprimidos, etc. Sin embargo, esta lista contiene muchos otros formatos asociados a software muy especfico como .unity3d (software profesional de diseo de videojuegos) o asociados a bases de datos y a cdigo fuente de programas, entre otros. Esto sugiere que la amenaza podra estar dirigida principalmente a organizaciones, apuntando a los archivos de mayor valor cuya perdida podra representar un serio inconveniente econmico u operativo.


    grandpaSlacks


    Esta funcin es muy simple dado que su nico objetivo es aplicar una funcin de hash (SHA3 de 256 bits) al valor recibido como parmetro y devolver el resultado. Dentro del contexto del cdigo, esta funcin procesar el identificador de la computadora de la vctima y devolver su hash. Luego, este hash ser la clave que utilizar el ransomware para cifrar los archivos.
    createAdamantium

    Esta funcin se encarga de cifrar el archivo pasado como parmetro utilizando la clave tambin pasada como parmetro (hash SHA3 del identificador de la PC de la vctima). Para almacenar el archivo cifrado se crea un nuevo archivo con el mismo nombre que el original pero aadiendo la extensin correspondiente a los archivos cifrados por este ransomware: “.RQUILT”.

    Luego, para cifrar el archivo se utiliza el algoritmo de cifrado AES 256 en modo CBC. Este modo de cifrado requiere el uso de un vector de inicializacin, el cual es generado aleatoriamente. Antes de escribir el contenido cifrado se escribe el tamao del archivo original seguido por el valor del vector de inicializacin. Estos dos datos sern necesarios para poder descifrar el archivo, por lo que el cibercriminal los almacena dentro del mismo.


    Finalmente, una vez inicializado AES y resguardados los datos para descifrar, se comienza a iterar el contenido del archivo original, cifrando cada bloque (chunk) y guardando el resultado en el nuevo archivo.

    Pedido del dinero de rescate

    Dentro de la funcin “run_crypt” podemos observar un fragmento de cdigo encargado de escribir el mensaje de rescate dentro de un archivo llamado “readme.txt”. Parte del contenido del mensaje se encuentra cifrado mediante el algoritmo de sustitucin ROT-13, especficamente, aquellos fragmentos que contienen informacin vinculada con el cibercriminal como su direccin de email y las direcciones de la billetera de bitcoin donde se enviar el dinero de rescate.
    Luego de descifrar los fragmentos que estaban cifrados podemos observar la totalidad del mensaje:
    Aqu se le solicita a la vctima que enve el equivalente de 700 dlares en bitcoin a la direccin indicada (hay dos direcciones, pero solo se le mostrar una elegida en forma aleatoria). Adems, el atacante tambin pide que se le enve por email el identificador y un archivo cualquiera para demostrarle a la vctima que sus archivos pueden ser descifrarlos y transmitirle seguridad a la hora de pagar el rescate.

    Un detalle interesante es que el atacante aclara que ese monto se corresponde a la devolucin del acceso a los archivos de una nica computadora, pero tambin le da a la vctima la posibilidad de enviar el equivalente a 5000 dlares a cambio de devolverle el acceso a todas las computadoras infectadas en su red. Esto sugiere que este ransomware puede haber sido distribuido por una amenaza de tipo gusano con una presencia ms extendida.


    Por la forma en que est escrito el mensaje puede concluirse que el ingls no es el lenguaje nativo del cibercriminal, dado que contiene muchos errores gramaticales. De hecho, en el cdigo fuente hay una variable no utilizada llamada garbage (basura, en ingls), la cual almacena una string que contiene un fragmento escrito en chino.

    Tambin puede observarse otro fragmento interesante “im doing this to pay for my student loans”, en espaol: “estoy haciendo esto para pagar mis prstamos estudiantiles”.

    Por otro lado, si analizamos el historial de transferencias de las billeteras de bitcoin podemos notar que ambas billeteras han recibido transferencias por un monto total de 1.24 bitcoins.

    Luego de cada transferencia recibida el dinero es enviado a otras billeteras, dando un balance final de 0 bitcoins. Esto sugiere que algunos usuarios han sido vctimas de este ransomware y han pagado el dinero del rescate al cibercriminal.

    Pagar o no pagar?


    Se ha hablado mucho sobre los riesgos que acarrea pagar el dinero correspondiente al rescate ya que nunca se tiene una garanta de que el cibercriminal cumpla con su promesa al recibir el dinero. Hay muchos casos donde estos realmente descifran los archivos de la vctima, pero tambin hay muchos casos donde no es as y la victima termina perdiendo sus archivos y el dinero.

    Es difcil saber si este cibercriminal devolver o no los archivos al usuario luego del pago. En principio, no hay ningn fragmento del cdigo del ejecutable malicioso que haga referencia al descifrado, con lo cual el atacante debera enviarle a la vctima otro ejecutable que realice esta funcin. El problema es que no sabemos si el atacante querr entregarlo a la vctima, con lo cual el pago del rescate sigue siendo muy arriesgado.


    Descifrar archivos


    Como vimos anteriormente, la clave con la que se cifra cada archivo est formada por el id de la computadora de la vctima (fcil de obtener) y un valor arbitrario pasado como argumento al ejecutable del ransomware (podra ser fcil de obtener si se tiene acceso al ejecutable que lo lanz). A su vez, el vector de inicializacin aleatorio utilizado al momento de cifrar cada archivo se encuentra escrito dentro de cada uno de ellos. Por lo tanto, todos los datos necesarios para poder descifrar los archivos se encuentran en la computadora de la vctima y pueden obtenerse sin la intervencin del cibercriminal, incluso de manera offline. Luego, programar un script que extraiga dichos datos de cada archivo y descifre su contenido sera sencillo.

    Conclusin


    Hemos visto un ejemplo prctico en el cual descompilar el ejecutable malicioso para obtener su cdigo fuente puede ser de mucha utilidad, tanto para comprender en detalle el funcionamiento interno de la amenaza como para mitigar y revertir su accionar. Esto tambin se extiende a otras familias de ransomware donde, segn como estn diseadas, realizar un anlisis en profundidad podra permitir desarrollar un script para recuperar los archivos sin la necesidad de pagar un rescate.
    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  2. #2  
    Iniciado Avatar de yisuscraist
    Fecha de ingreso
    Feb 2017
    Mensajes
    45
    Descargas
    0
    Uploads
    0
    Cojonudo, muchas gracias por el post, gran anlisis!
    Y enhorabuena a Daniel Kundro por el trabajo
    Citar  
     

Temas similares

  1. El cdigo fuente de ZeuS
    Por LUK en el foro MALWARE
    Respuestas: 1
    ltimo mensaje: 11-05-2011, 21:06
  2. ayuda, codigo fuente
    Por trini1970 en el foro PROGRAMACION WEB
    Respuestas: 10
    ltimo mensaje: 01-11-2010, 18:16
  3. Codigo Fuente
    Por CLF en el foro WINDOWS
    Respuestas: 3
    ltimo mensaje: 26-08-2005, 02:52
  4. Codigo Fuente
    Por sonic en el foro GENERAL
    Respuestas: 2
    ltimo mensaje: 20-05-2005, 22:04
  5. necesito un codigo fuente
    Por darkid en el foro GENERAL
    Respuestas: 11
    ltimo mensaje: 07-01-2005, 08:24

Marcadores

Marcadores