Muy bien, chicos, ¿estáis listos para descubrir qué es nuestra misteriosa herramienta de ingeniería inversa?
Desde luego que sí.
Y el arma secreta de la que hablo es Android guard.
Así que Android tiene su marco de ingeniería inversa, y usted podría pensar, espere, ¿qué lo hace tan especial?
Así que, Andrew, Dios tiene un montón de características infravaloradas y esas características pueden venir muy bien si
tienes que lidiar con aplicaciones altamente ofuscadas.
Pero antes de profundizar demasiado en esto, volvamos al principio.
Entonces, ¿qué es Andrés Dios?
Andrew God es un framework y está escrito en Python, por lo que hay varios módulos que puedes utilizar de Andrew
God.
Y para ser sincero, no utilizo la mayoría de ellos.
Sólo utilizo dos módulos especiales.
Pero para hacer un diseño bonito tengo que incluir tres terminales.
Ahora también hablamos del módulo Analizar.
Luego tenemos el módulo de borrador del núcleo, que es muy útil si tienes que trabajar con aplicaciones ofuscadas.
Y tenemos el módulo Decompile, que también es asombroso como descubrirán en unos minutos o dentro de la próxima sección
donde finalmente echaremos un vistazo al desafío CTF.
De acuerdo.
Además de estos módulos, regard es capaz de manejar más, pero centrémonos ahora sólo en estos tres.
El módulo Analyze es una especie de análisis estático de un binario.
Así que podemos utilizar este binario y cargarlo en nuestro módulo de análisis.
Y este módulo analyze nos proporciona ahora un shell python AI.
Y con un python ya podemos navegar por esta aplicación.
Podemos hacer muchas tareas, pero estamos familiarizados con todas ellas porque lo hemos hecho manualmente.
Podemos, por ejemplo, conseguir todas esas actividades.
Podemos inspeccionar la aplicación basada en la propia aplicación, podemos navegar a través de las clases,
los métodos y más cosas.
De acuerdo.
Así que esto no fue tan emocionante, supongo.
Pero ahora vamos al grano.
Hablemos ahora de las características más interesantes de Android.
Y uno de ellos se llama gráfico y el gráfico de carbón es súper sorprendente.
Si tienes que lidiar con binarios ofuscados, ¿qué hay en Choreograph?
Así que vamos a suponer que tenemos una función que está profundamente enterrado en este código de aplicación y gráfico de llamada es
el camino a esta función.
En este caso tenemos este campo de nombre de usuario y contraseña y si pulsamos el botón de inicio de sesión que no está disponible allí,
pero en la aplicación del mundo real, sería, a continuación, estos parámetros se van a insertar en
una función que llama a otra función.
Este código es otra función y esta llamada otra función.
Y finalmente está este último método que carga este archivo encriptado en la memoria y comienza a desencriptarlo.
Después, compara esos hashes y averigua si la contraseña que hemos introducido es correcta
o no.
Así que obtenemos una visión gráfica que nos muestra cómo podemos llegar a este punto, qué métodos tenemos que llamar,
y también qué parámetros tenemos que proporcionar para terminar allí.
Y esto es lo que yo llamo gráfico hace y ya se ha mencionado si usted tiene que tratar con binarios ofuscado,
esto viene super útil.
Imaginemos que tenemos esta aplicación ofuscada y el código de la aplicación que nos interesa está más profundo en este
código de la aplicación.
Y ahora miramos los métodos y el nombre de la clase que consiste en a, B, a, B, a CD, A, B, D y así sucesivamente.
Te volverías loco si intentaras analizar esto mirando este código ofuscado.
Por lo tanto, tenemos que dividirlo, y al dividirlo hacemos trozos individuales y podemos seguirlos.
Y sí, esto nos lleva a la función final que tenemos que llamar, y ahora también sabemos qué parámetros tenemos que
proporcionar.
Esto también es super útil si usted tiene que lidiar con un certificado de detección de enrutamiento pinning extraños métodos de
cifrado de ofuscación o descifrado y otro tipo de cosas.
Así que el gráfico de llamada que te voy a mostrar un ejemplo después es super increíble.
Y si tienes que lidiar con binarios realmente duros, esto viene muy bien y debería estar definitivamente en tu caja de
herramientas.
Y finalmente tenemos este gráfico de flujo.
El diagrama de flujo suena parecido al diagrama de llamada, pero son diferentes.
Un gráfico de llamada se refiere al nombre del método.
Así que el método uno llamaba al método dos, al método tres y así sucesivamente.
Obtenemos un resumen gráfico al respecto.
Super agradable.
Un gráfico de flujo se refiere ahora a una única función.
Supongamos que tenemos una función que contiene toneladas de sentencias if y cláusulas y también algunas instrucciones
Trump van a cambiar los casos y todas estas cosas.
Supongamos que hay unos 40 y que sólo hay un camino específico hacia una solución en la que tenemos que
conseguir mirar este binario e intentar resolverlo te volvería loco.
Por lo tanto, podemos proporcionar un gráfico de llamadas, pero sólo para este único flujo de funciones.
Y este es nuestro gráfico de flujo.
Y déjame dibujar esto aquí muy rápido.
Así que tenemos este nombre de usuario y contraseña y ahora nos centramos sólo en un único código de función
y este nombre de usuario y contraseña va a sí, algunos realmente extraño flujo de control en esta aplicación.
Por lo tanto, empezamos con un caso if y este f k también tiene alguna instrucción de bifurcación realmente extraña.
Y finalmente llegamos al punto en el que sabemos, vale, esta es nuestra solución.
Tenemos que llegar a este punto.
Y ahora imaginemos que tenemos este gráfico multiplicado por 20 o 30.
Intentar resolver esto mirando el código será, como mínimo, bastante difícil.
A lo mejor no es posible porque tienes montones de llaves y sería super difícil resolverlo
así.
Tampoco sabes qué parámetros tienes que proporcionar en un momento determinado para llegar a la solución.
Así que tienes que hacerlo, sí, de arriba abajo y tienes que entrar en cada rama hasta que finalmente encuentres
tu solución.
Por lo tanto, hacemos este planteamiento al revés.
Así que vamos a nuestra solución y luego trazamos hacia atrás y al trazar hacia atrás sabemos qué camino tenemos que tomar y por lo
tanto sólo podemos centrarnos en estas instrucciones de señal y proporcionar la solución correcta.
Si esto no le parece complicado, no se preocupe.
Voy a mostrarte cómo puedes hacerlo.
Y es súper fácil.
Y también verás el beneficio de esto resolviendo esta desviación de captura realmente difícil.
Y por cierto, no voy a estropear ninguna solución.
Sólo quiero mostrarte mi enfoque sobre cómo resolver esto.
Tienes que resolver este reto por tu cuenta, pero después de este curso, serás definitivamente
capaz de resolver todos los retos que hay.
No porque yo te haya proporcionado esta solución, sino porque yo te proporciono los conocimientos y las habilidades
sobre cómo hacerlo.
En la siguiente sección, echamos un vistazo al proceso de instalación de esta herramienta, que también es
súper fácil, y luego creamos nuestro primer gráfico de llamada y nuestro gráfico de flujo en relación con este reto tan difícil de capturar
la bandera.
Así que espero verte en la próxima sección.