Intercepta i manipula els missatges de Telegram: Frida! amb Windows

Frida és una de les eines que més m’ha sorprès, no només per ser multiplataforma, sinó per la facilitat amb la que podem introduir codi dins les crides de funcions en una aplicació.

En aquest post executarem FRIDA amb Windows.

En el següent mostrarem un exemple curt de com provar-ho en entorns Android i com som capaços de manipular i interceptar els missatges enviats a través de Telegram.

Preparem l’entorn

Per començar caldrà instal·lar i configurar::

  • Instal·lar Python3 a Windows.
  • Instal·lar Android SDK Platform Tools a Windows.
  • Afegir el directori de python3 i platform-tools en el PATH de Windows.
  • Instal·lar Android Studio a Windows.
  • Emular un dispositiu amb Android 11.
  • Instal·lar Telegram en el dispositiu Android 11.

Podem comprovar el funcionament executant una PowerShell i escrivint:

$env:Path
adb --version
pip --version

Instal·lació FRIDA!

Per instal·lar les eines de Frida utilitzarem el sistema pip:

pip install -U frida-tools

Execució FRIDA!

Per executar Frida dins l’emulador cal que ens descarreguem el binari de servidor tenint en compte la plataforma a on ho volem instal·lar, en el nostre cas, android x86_64.

Una vegada descarregat, li canviem el nom per frida-server. I ara caldrà executar el servidor dins d’Android amb permisos d’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 vegada s’hagi iniciat frida en el nostre dispositiu, podem observar tots els serveis i aplicacions en el dispositiu a través de la següent comanda:

frida-ps -Uai

En el nostre cas, observarem que ens apareix Telegram.

Captura i edició dels missatges a Telegram

Una vegada tinguem tot preparat, anem a preparar l’script que ens permetrà capturar els missatges, per això crearem el següent javascript amb el nom 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 vegada fet, ja només ens falta executar l’script:

frida -U -n Telegram -l hook.js

I podreu observar com es capturen i es modifiquen els missatges.

Desplaça cap amunt