Frida Tutorial 1

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Suggerimento per il bug bounty: iscriviti a Intigriti, una piattaforma premium per il bug bounty creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi e inizia a guadagnare taglie fino a $100,000!

Questo è un riassunto del post: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1 APK: https://github.com/t0thkr1s/frida-demo/releases Codice sorgente: https://github.com/t0thkr1s/frida-demo

Python

Frida ti permette di inserire codice JavaScript all'interno delle funzioni di un'applicazione in esecuzione. Ma puoi usare python per chiamare gli hook e persino per interagire con gli hook.

Questo è uno script python semplice che puoi utilizzare con tutti gli esempi proposti in questo tutorial:

#hooking.py
import frida, sys

with open(sys.argv[1], 'r') as f:
jscode = f.read()
process = frida.get_usb_device().attach('infosecadventures.fridademo')
script = process.create_script(jscode)
print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()

Chiamare lo script:

python hooking.py <hookN.js>

È utile sapere come utilizzare Python con Frida, ma per questi esempi è possibile chiamare direttamente Frida utilizzando gli strumenti da riga di comando di frida:

frida -U --no-pause -l hookN.js -f infosecadventures.fridademo

Hook 1 - Bypass Booleano

Qui puoi vedere come hookare un metodo booleano (checkPin) dalla classe: infosecadventures.fridademo.utils.PinUtil

//hook1.js
Java.perform(function() {
console.log("[ * ] Starting implementation override...")
var MainActivity = Java.use("infosecadventures.fridademo.utils.PinUtil");
MainActivity.checkPin.implementation = function(pin){
console.log("[ + ] PIN check successfully bypassed!")
return true;
}
});
python hooking.py hook1.js

Hook 2 - Funzione Bruteforce

Funzione Non Statica

Se vuoi chiamare una funzione non statica di una classe, prima hai bisogno di un'istanza di quella classe. Quindi, puoi usare quell'istanza per chiamare la funzione. Per farlo, potresti trovare un'istanza esistente e usarla:

Java.perform(function() {
console.log("[ * ] Starting PIN Brute-force, please wait...");
Java.choose("infosecadventures.fridademo.utils.PinUtil", {
onMatch: function(instance) {
console.log("[ * ] Instance found in memory: " + instance);
for(var i = 1000; i < 9999; i++){
if(instance.checkPin(i + "") == true){
console.log("[ + ] Found correct PIN: " + i);
break;
}
}
},
onComplete: function() { }
});
});

Funzione Statica

Se la funzione è statica, puoi semplicemente chiamarla:

//hook2.js
Java.perform(function () {
console.log("[ * ] Starting PIN Brute-force, please wait...")
var PinUtil = Java.use("infosecadventures.fridademo.utils.PinUtil");

for(var i=1000; i < 9999; i++)
{
if(PinUtil.checkPin(i+"") == true){
console.log("[ + ] Found correct PIN: " + i);
}
}
});

Hook 3 - Recupero degli argomenti e del valore di ritorno

Potresti agganciare una funzione e far sì che stampi il valore degli argomenti passati e il valore del valore di ritorno:

//hook3.js
Java.perform(function() {
console.log("[ * ] Starting implementation override...")

var EncryptionUtil = Java.use("infosecadventures.fridademo.utils.EncryptionUtil");
EncryptionUtil.encrypt.implementation = function(key, value){
console.log("Key: " + key);
console.log("Value: " + value);
var encrypted_ret = this.encrypt(key, value); //Call the original function
console.log("Encrypted value: " + encrypted_ret);
return encrypted_ret;
}
});

Importante

In questo tutorial hai agganciato metodi utilizzando il nome del metodo e .implementation. Ma se ci fossero più di un metodo con lo stesso nome, dovrai specificare il metodo che desideri agganciare individuando il tipo degli argomenti.

Puoi vedere ciò nel prossimo tutorial.

Suggerimento per bug bounty: iscriviti a Intigriti, una piattaforma premium per bug bounty creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi e inizia a guadagnare taglie fino a $100,000!

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated