Ransomware en mi teléfono… ¿Y ahora?

El auge del ransomware ha ciertamente marcado un antes y un después en la historia del malware, determinando un nuevo rumbo en el modelo económico del cibercrimen. Esta amenaza ha evolucionado en los últimos años, expandiéndose a dispositivos de IoT –adquiriendo el nombre de jackware–, incorporando verdaderos centros de atención a la víctima y mutando lentamente hacia nuevas formas de extorsión masiva.



Los teléfonos y tabletas inteligentes no quedan exentos de contraer este tipo de infecciones. La mayor parte del ransomware para Android funciona simplemente como bloqueador de pantalla, es decir, sin cifrar los archivos del equipo. No obstante, las variantes basadas en algoritmos criptográficos causan grandes estragos.

Quienes vean su teléfono afectado pueden caer en la tentación de efectuar el pago del rescate para recuperar sus datos; sin embargo, corren el riesgo de acabar sin su dinero ni sus archivos. Afortunadamente, para la mayor parte del ransomware móvil existe una tercera opción: obtener las claves a través de ingeniería reversa.

A lo largo de este artículo veremos algunos ejemplos de cómo obtener las claves de descifrado partiendo del APK que infectó el terminal, de modo que cualquiera con sencillos conocimientos de programación pueda recuperar sus datos. ¡Manos a la obra!

Ransomware con claves dinámicas

El ransomware para Android usualmente cifra los archivos utilizando AES, un sistema de cifrado simétrico que –como tal– usa la misma clave para cifrar y descifrar los archivos. En algunas variantes, esta clave es única para cada equipo y se genera aleatoriamente cuando la aplicación maliciosa se ejecuta por vez primera.

Un ejemplo de este esquema de funcionamiento es Android/Lockerpin.A, sobre el cual basaremos nuestro análisis. Al ejecutar la muestra en un emulador, podremos ver cómo este malware finge ser una actualización del sistema, requiere permisos de administrador, realiza una petición web a un sitio de pornografía e inmediatamente muestra una falsa advertencia al usuario, indicando en nombre del FBI que se han visitado sitios de pornografía infantil y zoofilia. Finalmente, solicita el pago de una multa.

Mientras, los archivos que se encontraban en la unidad de almacenamiento externo han sido cifrados. Por cada archivo se ha creado un fichero extra de extensión .crypted_gaza.

Ahora abriremos el APK en cuestión con jadx. En la barra de herramientas notarás un icono dedicado a la búsqueda de determinadas cadenas de texto entre el código. Al hacer clic se abrirá un cuadro de diálogo. Fíjate de tener activada la casilla de Code.

Esta herramienta tiene una intuitiva interfaz gráfica y te permitirá encontrar rápidamente líneas de código con palabras clave, como nombres de clases o métodos necesarios para operaciones de cifrado –como ser SecretKeySpec, Cipher o doFinal, entre otros–. De este modo, podrás buscar el momento en que la clave es creada y partir desde allí para identificar cómo se construye.

Si escribimos “AES” en el cuadro de texto, notaremos algunas ocurrencias; la segunda de ellas, inicializando la clave.

Al hacer doble clic, serás dirigido al segmento de código en cuestión. Dentro del método aes256Crypt() veremos una llamada a generateKey, donde la clave se inicializa de manera aleatoria e unívoca para cada equipo donde el malware se instala. Luego, el método putString() guardará esa clave en el archivo de Shared Preferences.

A continuación vemos la información del archivo, con la clave recientemente generada.

Lo único que resta es copiar al computador todos los archivos que han sido cifrados y correr un script como el siguiente sobre dicha carpeta. Deberemos descifrar los datos utilizando ECB ya que es el modo de cifrado por defecto para AES en Android.

Para el ver artículo original: noticiasseguridad.com/vulnerabilidades/ransomware-en-mi-telefono-y-ahora