Frida Tutorial 1

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε αμοιβές έως και $100,000!

Αυτό είναι ένα σύνοψη της ανάρτησης: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1 APK: https://github.com/t0thkr1s/frida-demo/releases Πηγαίος κώδικας: https://github.com/t0thkr1s/frida-demo

Python

Το Frida σας επιτρέπει να εισάγετε κώδικα JavaScript μέσα σε λειτουργίες μιας τρέχουσας εφαρμογής. Αλλά μπορείτε να χρησιμοποιήσετε python για να καλέσετε τα hooks και ακόμη και να αλληλεπιδράσετε με τα hooks.

Αυτό είναι ένα εύκολο σενάριο python που μπορείτε να χρησιμοποιήσετε με όλα τα προτεινόμενα παραδείγματα σε αυτό τον οδηγό:

#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()

Καλέστε το σενάριο:

python hooking.py <hookN.js>

Είναι χρήσιμο να ξέρετε πώς να χρησιμοποιήσετε το python με το frida, αλλά για αυτά τα παραδείγματα μπορείτε επίσης να καλέσετε απευθείας το Frida χρησιμοποιώντας τα εργαλεία γραμμής εντολών του frida:

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

Hook 1 - Παράκαμψη Boolean

Εδώ μπορείτε να δείτε πως να συνδέσετε ένα μέθοδο boolean (checkPin) από την κλάση: 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 - Βίαιη Δύναμη Συνάρτησης

Μη-Στατική Συνάρτηση

Εάν θέλετε να καλέσετε μια μη-στατική συνάρτηση ενός τάξης, πρώτα χρειάζεστε μια παράδειγμα αυτής της κλάσης. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτό το παράδειγμα για να καλέσετε τη συνάρτηση. Για να το κάνετε αυτό, θα μπορούσατε να βρείτε ένα υπάρχον παράδειγμα και να το χρησιμοποιήσετε:

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() { }
});
});

Στατική Συνάρτηση

Εάν η συνάρτηση είναι στατική, μπορείτε απλά να την καλέσετε:

//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 - Ανάκτηση ορισμάτων και τιμή επιστροφής

Μπορείτε να κάνετε hook μια συνάρτηση και να την κάνετε εκτύπωση της τιμή των περασμένων ορισμάτων και της τιμής της τιμής επιστροφής:

//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;
}
});

Σημαντικό

Σε αυτό το εγχειρίδιο έχετε συνδέσει μεθόδους χρησιμοποιώντας το όνομα της μεθόδου και το _.implementation_. Αλλά αν υπήρχαν περισσότερες από μία μέθοδοι με το ίδιο όνομα, θα χρειαστεί να καθορίσετε τη μέθοδο που θέλετε να συνδέσετε δείχνοντας τον τύπο των ορισμάτων.

Μπορείτε να δείτε αυτό στο επόμενο εγχειρίδιο.

Συμβουλή για ανταμοιβή ευρημάτων: Εγγραφείτε στο Intigriti, μια πρεμιέρα πλατφόρμα ανταμοιβής ευρημάτων δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε ανταμοιβές μέχρι $100,000!

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated