Frida es una de las herramientas que más me ha sorprendido, no solo por ser multiplataforma, sino también por la facilidad con la que permite inyectar código en las llamadas a funciones dentro de una aplicación.
En esta publicación, ejecutaremos Frida en un entorno Windows.
En la siguiente entrega, mostraremos un ejemplo sencillo de cómo utilizarla en entornos Android y cómo es posible interceptar y manipular los mensajes enviados a través de Telegram.
Preparación del entorno
Para empezar, será necesario instalar y configurar los siguientes elementos:
- Instalar Python 3 en Windows.
- Instalar Android SDK Platform Tools en Windows.
- Añadir los directorios de python3 y platform-tools a la variable de entorno PATH de Windows.
- Instalar Android Studio en Windows.
- Emular un dispositivo con Android 11.
- Instalar la aplicación Telegram en el dispositivo Android emulado.
Podemos verificar que todo funciona correctamente ejecutando una terminal PowerShell y escribiendo:
$env:Path
adb --version
pip --version
Instalación Frida!
Para instalar las herramientas de Frida, utilizaremos el sistema de gestión de paquetes pip
:
pip install -U frida-tools
Ejecución Frida!
Para ejecutar Frida dentro del emulador, es necesario descargar el binario del servidor correspondiente a la plataforma en la que se va a instalar; en nuestro caso, Android x86_64
.
Una vez descargado, lo renombraremos como frida-server
. A continuación, será necesario ejecutar el servidor dentro de Android con permisos de administrador:
adb root
adb push .\frida-server /data/local/tmp
adb chmod +x /data/local/tmp/frida-server
adb shell "/data/local/tmp/frida-server &"
Una vez se haya iniciado Frida
en nuestro dispositivo, podremos visualizar todos los servicios y aplicaciones presentes mediante el siguiente comando:
frida-ps -Uai
En nuestro caso, podremos comprobar que Telegram
aparece en la lista.
Captura y modificación de mensajes en Telegram
Una vez tengamos todo preparado, vamos a crear el script que nos permitirá capturar los mensajes. Para ello, crearemos el siguiente archivo JavaScript
con el nombre hook.js
:
Java.perform(function () {
var SendMessagesHelper = Java.use("org.telegram.messenger.SendMessagesHelper");
var SendMessageParams = Java.use("org.telegram.messenger.SendMessagesHelper$SendMessageParams");
SendMessagesHelper.sendMessage
.overload('org.telegram.messenger.SendMessagesHelper$SendMessageParams')
.implementation = function (params) {
try {
var originalText = params.message.value;
var modifiedText = "hacked " + originalText;
params.message.value = modifiedText;
console.log("Modified:", modifiedText);
} catch (e) {
console.log("Error:", e);
}
return this.sendMessage(params);
};
});
Una vez hecho esto, solo nos queda ejecutar el script:
frida -U -n Telegram -l hook.js
Y podrás observar cómo se capturan y modifican los mensajes.