Solución solución # 40: invertir una aplicación de Android

Comparando la solución al tema de ESET #40, en el caso de los que quieren hacer una aplicación para saber dónde está la bandera. Además, informe quiénes fueron los tres ganadores de una licencia de ESET Mobile Security para Android

El 17 de junio publicamos el informe ESET # 40 en el que los participantes deben analizar un archivo APK para descubrir un mensaje abierto. En esta oportunidad, con el fin de presentar la solución al problema, anunciaremos quiénes estarán entre los participantes que podrán resolver el tiempo y ganar una licencia de ESET Mobile Security para Android:

  1. Everth Gallegos Puma
  2. Rextco
  3. Miguel Báez

Los Ganadores deberán comunicarse vía mensaje privado a algunas de nuestras redes sociales, Facebook, Gorjeo en Instagram, indicando tu nombre y dirección de la dirección por la que queremos entrar en la prima. Desde allí agradecemos a todos los que participan y dedican parte de su tiempo en solucionar el problema. A continuación presentamos la solución a la red.

Resolución ESET #40

La solución se puede aplicar resueltamente solo al análisis estético. Sin embargo, para algunas personas el resultado de la rápida ejecución del código, por lo que el uso de Genymotion para mostrar la aplicación de la aplicación al final de la etapa. Al instalar la aplicación en el área de virtualización, se inicia una actividad que revelará la presencia del código antianálisis.

Imágenes 1

Necesitamos ver el código para entender que tipo de pruebas se están implementando. Para él, abramos el APK con jadx. Instantáneamente encontramos la clase Login, que sigue al AndroidManifest, el cual se puede encontrar al momento de iniciar la aplicación. El método onCreate() llama a los métodos de la clase f: mientsras chke (Context context) intenta detectar un emulador comparando algunas propiedades del sistema contra las cadenas ofuscadas de la klase d, chk() comprueba si hay algún depurador adherido adherido.

Por otro lado, podemos usar un módulo anti-antimulación con algún agente arenque Xposed, podemos editar el código APK para pasar por alto la validacion Dado que la segunda también resuelve el problema de la depuración, modificaremos los métodos de la klase f para que siempre devuelvan falso.

Para los principiantes, una herramienta intuitiva para editar un código pequeño es APKStudio, que está equipado con un botón para el comando para iniciar el nuevo APK. Además, escriba una publicación sobre LazyDroid, un script para "analistas" que intenta automatizar frecuencias frecuentes como esta. En la última línea, tenemos la multiherramienta APK que contiene la línea sugerida. No estoy seguro de que todas estas herramientas estén actualizadas en el campo porque personalmente prefiero usar herramientas simples con estos comandos:

java -jar apktool_2.4.0.jar d -f -o

java -jar apktool_2.4.0.jar b -o

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore

El código final se muestra en la siguiente imagen.

Imágenes 2

Queremos iniciar la aplicación y ahora tenemos un cuadro de texto donde debemos ingresar una clave.

Imágenes 3

Analice el código de inicio de sesión, sabemos que el método de verificación de la contraseña compara el SHA-256 de este contraste con "f99503075f30f6b162b7e979c154131c9c9e4bbec3368cb519012599353f3bba" y, para corregirlo correctamente. Antes de calcular el hash, se calcula que la clave tiene 6 caracteres y se compila mediante una combinación de números y caracteres en minúsculas.

En este caso lo primero que podemos hacer es intentar romper el hashtag online con alguien como CrackStation, pero sabemos que no estamos disponibles.

Imágenes 4

Procesamos un fuerza bruta el contraste con un script de Python es similar a lo que vemos como continuidad. También tenemos tiempo para el proceso con la clave que es "c3rs31".

Imágenes 5

Ingrese la clave y presione el botón "¡Iniciar!" le notificaremos: "¡Respuesta correcta!"; pero que quieres mas La aplicación sigue el método c.chkwb pasándole por parámetro un texto descifrado que es la URL del post sobre interceptación de tráfico. Esto insinúa que necesitamos configurar este proxy para resolver la siguiente etapa.

El método chkwb utiliza Jsoup para encontrar una etiqueta HTML "got", que no se encuentra en el sitio web original. Luego, verifique que el contenido de ese elemento sea un texto con 11 secciones separadas por “-”, donde el hash de cada sección debe coincidir con los hash almacenados en el archivo strings.xml.

Imágenes 6

La novedad de estos hashes es MD5, por lo que podemos averiguarlo online. Volveremos a CrackStation y te daremos el resultado resultante.

Imágenes 7

Entones, el componente HTML debe estar formateado ¿que_le_decimos_al_dios_de_la_muerte?_ALGO_ALGO . Aquellos que están con Game of Thrones definitivamente reconocerán la respuesta. Para aquellos que no lo hagan, incluya una imagen en la publicación final que solicite la aplicación. Entonces, “not” y “today” son las secciones que nos faltan para completar el texto, cosa que podemos corroborar calculando si el SHA-256 de cada palabra es igual al que se encuentra almacenado en strings.xml.

El método chkwb tiene otra pequeña trampita: llama a isWalkingWithShame para comprobar que, tras haberte descubierto analizando la aplicación, estás kumpliendo tu penitencia en la peregrinación de la vergüenza en King's Landing. Deberemos configurar las coordenadas GPS del emulador para que sean las correctas, o editar nuevamente el codigo smali.

Imágenes 8

Ahora necesitamos agregar la etiqueta en el HTML que intercepta el tráfico de la aplicación.

Imágenes 9

Imágenes 10

Sabemos que el código es la cadena “nottoday” y la pasamos como parámetro del método visorion que se encuentra en los libros con el código JNI. Una alternativa al proxy es recompilar el APK para ver la versión con un cuadro de texto hardcodeadao llamar al método con alguna herramienta como Frida.

Si todo se ejecuta correctamente, creemos en el registro que un mensaje dice: "La bandera está en la memoria".

Imágenes 11

Ahora podemos usar alguna herramienta como Fridump para extraer la bandera, que es desafio_eset_Dr4cArY5.

Imágenes 12

Imágenes 13

Alternativamente, podemos simplemente analizar con un muestreador como radar2, Hydra, IDA para incluir este servicio en línea, cuyas instrucciones son implementadas por native-lib. Creemos que calcular la bandera opera sobre los valores ordinarios de los caracteres en "nottoday", o bien, realizar un coro con caracteres codificados.

¡Aquí está el lugar del desafío! Un muy largo, muy hermoso. Espero que ella la haya cuidado y esté cerca de él. Valar morghulis.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
error: Content is protected !!