Intercepta y manipula los mensajes de Telegram: Frida! con Windows

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.

Scroll al inicio