Creando ransomware para Android.

Que es un ransomware según wikipedia.

“Un ransomware (del inglés ransom, ‘rescate’, y ware, por software) es un tipo de programa informático malintencionado que restringe el acceso a determinadas partes o archivos del sistema infectado, y pide un rescate a cambio de quitar esta restricción.1​ Algunos tipos de ransomware cifran los archivos del sistema operativo inutilizando el dispositivo y coaccionando al usuario a pagar el rescate.”

En esta guía veremos como crear un ransomware, con la ayuda del algoritmo de encriptación AES el cuál permitirá encriptar todos los archivos.

Es deseable poseer conocimientos de Java y Android.


Comenzando el laboratorio.

Lo primero que debemos hacer es abrir Android Studio y crear un nuevo proyecto, creamos un EmptyActivity con su clase:

Underc0de - AndroidStudio

Creamos un EditText y dos botones con el siguiente código:

Tendremos como resultado:

Underc0de - Resultado botones

A partir de aquí, comienza la diversión; debemos prestar mucha atención a los “detalles”.

Debemos obtener permisos en el manifest y en tiempo de ejecución, utilizando la versión de Marshmallow, vamos a la carpeta y hacemos doble clic en el archivo AndroidManifest.xml modificando lo siguiente:

Vamos a la clase que hemos creado junto al EmptyActivity (la utilizada se llama MainActivity) y pedimos permisos ejecución:

fuera del método OnCreate definimos la función PedirPermisos:

Como debemos conocer la respuesta del usuario, crearemos una versión propia de la función onRequestPermissionResult, indicará si el usuario brindo los permisos o no.

Como resultado parcial, debido que aún no finalizamos; obtendremos lo siguiente:

Underc0de - onRequestPermissionResult

Procedemos a crear la función encriptar(), detalle – necesita una clave de parámetro-, es la clave que utiliza para cifrar los archivos, tiene que ser de 16bytes.

A modo práctico utilizaremos tr3D0ctaOlajESzU y una dirección, es la ubicación del archivo.

Y la  función desencriptar():

Al haber realizado las funciones encriptar() y desencriptar() queda desarrollar una función recursiva que recorra todas las carpetas del dispositivo para encriptar los archivos:

Al haber desarrollado las funciones principales, resta programar los botones encriptar y desencriptar. Para poder realizar esto; primero utilizamos el código desarrollado donde verifica los permisos y creamos el evento OnClickListener para cada botón, al ser clickeados los botones, ejecutarán una acción:

Debemos identificar la clave que ingresan para encriptar o desencriptar, con el EditText solicitamos al usuario que realice el input:

Para luego leer la clave:

Esto se inyecta en el evento OnClickListener del botón encriptar para que al presionar el botón, realice el trabajo.

Luego del trabajo realizado, toca crear la Apk.


Instalando la apk, encriptando y desencriptando.

Luego de crear la Apk, procedemos a instalarla en el equipo objetivo.

Creamos una carpeta docs que contiene un archivo de texto, música e imagen.

Underc0de - laboratorio parte 2

 

Lanzamos la Apk y pulsamos el botón encriptar:

Underc0de - encriptando

Al momento de intentar realizar alguna acción con los archivos, el dispositivo movil no reconoce el formato de los archivos impidiendo ejecutarlas.

Volvamos a la Apk, y pulsamos el botón desencriptar:

Underc0de - desencriptando

Palabras finales.

Un reflexión que arribe al desarrollar el PoC, ¿Por qué no utilizar de manera propia?

Qué ocurre cuando nos roban el Smartphone, ¿dejamos a libre albedrio nuestra privacidad e información?


Agradecimiento.

Agradecemos a user_en1gm4 por éste inmenso trabajo realizado.

Posts Relacionados

Comments

comments

One comment

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">