.. | ||
frida-tutorial-1.md | ||
frida-tutorial-2.md | ||
objection-tutorial.md | ||
owaspuncrackable-1.md | ||
README.md |
Frida Tutorijal
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Bug bounty savet: registrujte se za Intigriti, premium platformu za bug bounty kreiranu od strane hakera, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas i počnite da zarađujete nagrade do $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Instalacija
Instalirajte frida alate:
pip install frida-tools
pip install frida
Preuzmite i instalirajte na Android uređaju Frida server (Preuzmite najnovije izdanje).
Jednolinijska komanda za ponovno pokretanje adb u root režimu, povezivanje s njim, otpremanje frida-servera, davanje izvršnih dozvola i pokretanje u pozadini:
{% code overflow="wrap" %}
adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &"
{% endcode %}
Proverite da li radi:
frida-ps -U #List packages and processes
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
Tutorijali
Tutorijal 1
Od: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1
APK: https://github.com/t0thkr1s/frida-demo/releases
Izvorni kod: https://github.com/t0thkr1s/frida-demo
Pratite link za čitanje.
Tutorijal 2
Od: https://11x256.github.io/Frida-hooking-android-part-2/ (Delovi 2, 3 i 4)
APK-ovi i Izvorni kod: https://github.com/11x256/frida-android-examples
Pratite link za čitanje.
Tutorijal 3
Od: https://joshspicer.com/android-frida-1
APK: https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level_01/UnCrackable-Level1.apk
Pratite link za čitanje.
Više impresivnih Frida skripti možete pronaći ovde: https://codeshare.frida.re/
Brzi primeri
Pozivanje Frida iz komandne linije
frida-ps -U
#Basic frida hooking
frida -l disableRoot.js -f owasp.mstg.uncrackable1
#Hooking before starting the app
frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1
#The --no-pause and -f options allow the app to be spawned automatically,
#frozen so that the instrumentation can occur, and the automatically
#continue execution with our modified code.
Osnovni Python skript
import frida
# Connect to the USB device
device = frida.get_usb_device()
# Attach to the target process
pid = device.spawn(["com.example.app"])
session = device.attach(pid)
# Load the JavaScript code
with open("script.js", "r") as file:
script_code = file.read()
# Create the script
script = session.create_script(script_code)
# Load the script into the target process
script.load()
# Resume the target process
device.resume(pid)
# Keep the script running
input()
Osnovni Python skript
import frida
# Povezivanje sa USB uređajem
device = frida.get_usb_device()
# Povezivanje sa ciljnim procesom
pid = device.spawn(["com.example.app"])
session = device.attach(pid)
# Učitavanje JavaScript koda
with open("script.js", "r") as file:
script_code = file.read()
# Kreiranje skripte
script = session.create_script(script_code)
# Učitavanje skripte u ciljni proces
script.load()
# Nastavak rada ciljnog procesa
device.resume(pid)
# Održavanje rada skripte
input()
import frida, sys
jscode = open(sys.argv[0]).read()
process = frida.get_usb_device().attach('infosecadventures.fridademo')
script = process.create_script(jscode)
print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
Hakovanje funkcija bez parametara
Hakujte funkciju a()
klase sg.vantagepoint.a.c
Java.perform(function () {
; rootcheck1.a.overload().implementation = function() {
rootcheck1.a.overload().implementation = function() {
send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()");
return false;
};
});
Frida Tutorial: Hook java exit()
U ovom tutorijalu ćemo naučiti kako da hakujemo exit()
funkciju u Java jeziku koristeći Frida alat.
Šta je Frida?
Frida je open-source alat koji omogućava dinamičko hakovanje mobilnih aplikacija, desktop aplikacija i operativnih sistema. On pruža mogućnost da se izvršava custom JavaScript kod unutar ciljane aplikacije, omogućavajući tako manipulaciju njenim ponašanjem.
Instalacija Frida
Da biste instalirali Frida, pratite sledeće korake:
-
Instalirajte Frida CLI (Command Line Interface) koristeći sledeću komandu:
$ pip install frida-tools
-
Instalirajte Frida server na uređaju na kojem želite da hakujete aplikaciju. Možete preuzeti Frida server sa zvanične Frida GitHub stranice.
Hakovanje exit()
funkcije
Da biste hakovali exit()
funkciju u Java jeziku, pratite sledeće korake:
-
Pokrenite Frida server na uređaju na kojem se nalazi ciljana aplikacija.
-
Napravite novi fajl sa nazivom
hook.js
i unesite sledeći kod:Java.perform(function() { var System = Java.use('java.lang.System'); var Runtime = Java.use('java.lang.Runtime'); // Hookujemo exit() funkciju System.exit.implementation = function() { console.log('exit() funkcija je pozvana'); // Dodajte svoj custom kod ovde // Pozivamo originalnu implementaciju exit() funkcije this.exit(); }; });
-
Pokrenite Frida CLI koristeći sledeću komandu:
$ frida -U -l hook.js --no-pause -f <ime_aplikacije>
Gde
<ime_aplikacije>
predstavlja ime ciljane aplikacije. -
Frida će se povezati sa ciljanom aplikacijom i izvršiti kod iz
hook.js
fajla. Kada seexit()
funkcija pozove, Frida će ispisati poruku u konzoli. -
Dodajte svoj custom kod unutar
exit()
funkcije kako biste manipulisali ponašanjem aplikacije.
Zaključak
Korišćenjem Frida alata, možete lako hakovati exit()
funkciju u Java jeziku i manipulisati ponašanjem ciljane aplikacije. Ovaj tutorijal je samo uvod u Frida i njegove mogućnosti.
var sysexit = Java.use("java.lang.System");
sysexit.exit.overload("int").implementation = function(var_0) {
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
};
Frida Tutorial: Hookovanje .onStart()
i .onCreate()
metoda u MainActivity
U ovom tutorijalu ćemo naučiti kako da koristimo Frida alat za hookovanje .onStart()
i .onCreate()
metoda u MainActivity klasi Android aplikacije.
Šta je Frida?
Frida je open-source alat koji omogućava dinamičko hookovanje funkcija u realnom vremenu. To znači da možemo promeniti ponašanje aplikacije tokom izvršavanja, bez potrebe za rekomplajliranjem ili ponovnim pokretanjem aplikacije.
Priprema
Da bismo mogli da hookujemo metode u Android aplikaciji, prvo moramo instalirati Frida na našem uređaju. Možemo to uraditi pomoću sledeće komande:
$ pip install frida-tools
Takođe, potrebno je da imamo Android uređaj sa root pristupom ili emulator sa x86 arhitekturom.
Hookovanje .onStart()
metoda
Da bismo hookovali .onStart()
metod u MainActivity klasi, prvo moramo pronaći tačnu putanju do klase i metoda koje želimo da hookujemo. Možemo koristiti sledeći Frida skript:
Java.perform(function() {
var MainActivity = Java.use('com.example.app.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('Metod onStart() je hookovan!');
this.onStart();
};
});
Hookovanje .onCreate()
metoda
Da bismo hookovali .onCreate()
metod u MainActivity klasi, možemo koristiti sličan Frida skript kao i za .onStart()
metod:
Java.perform(function() {
var MainActivity = Java.use('com.example.app.MainActivity');
MainActivity.onCreate.implementation = function() {
console.log('Metod onCreate() je hookovan!');
this.onCreate();
};
});
Pokretanje Frida skripta
Da bismo pokrenuli Frida skript, prvo moramo povezati Frida server sa našim uređajem. To možemo uraditi pomoću sledeće komande:
$ adb forward tcp:27042 tcp:27042
Zatim, možemo pokrenuti Frida skript koristeći sledeću komandu:
$ frida -U -f com.example.app -l script.js --no-pause
Gde com.example.app
predstavlja ime paketa naše Android aplikacije, a script.js
predstavlja ime Frida skripta koji smo napravili.
Zaključak
Korišćenje Frida alata za hookovanje .onStart()
i .onCreate()
metoda u MainActivity klasi Android aplikacije može biti veoma korisno za analizu i testiranje aplikacija. Frida nam omogućava da promenimo ponašanje aplikacije tokom izvršavanja, što nam daje veću kontrolu i mogućnost da otkrijemo potencijalne ranjivosti ili propuste u bezbednosti aplikacije.
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
mainactivity.onStart.overload().implementation = function() {
send("MainActivity.onStart() HIT!!!");
var ret = this.onStart.overload().call(this);
};
mainactivity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
send("MainActivity.onCreate() HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
Frida Tutorial: Hook android .onCreate()
U ovom tutorijalu ćemo naučiti kako da koristimo Frida framework za hakovanje metode .onCreate()
u Android aplikacijama.
Šta je Frida?
Frida je open-source framework koji omogućava dinamičko hakovanje mobilnih aplikacija, desktop aplikacija i cloud/SaaS platformi. Koristi se za analizu, testiranje bezbednosti i reverse engineering.
Priprema
Da biste pratili ovaj tutorijal, potrebno je da imate instaliranu Frida biblioteku na svom uređaju. Možete je instalirati pomoću pip
komande:
pip install frida-tools
Takođe, potrebno je da imate Android uređaj ili emulator na kojem ćete testirati hakovanje.
Korak 1: Pokretanje aplikacije
Prvo, pokrenite ciljanu Android aplikaciju na svom uređaju ili emulatoru.
Korak 2: Povezivanje sa aplikacijom
Koristite frida-ps
komandu da biste pronašli ID procesa aplikacije koju želite da hakujete:
frida-ps -U
Zatim, povežite se sa aplikacijom koristeći frida -U -l <script.js> <package_name>
komandu:
frida -U -l script.js com.example.app
Korak 3: Hakovanje .onCreate()
metode
U script.js
fajlu, dodajte sledeći kod:
Java.perform(function() {
var targetClass = Java.use('com.example.app.MainActivity');
targetClass.onCreate.implementation = function() {
console.log('Metoda .onCreate() je hakovana!');
this.onCreate();
};
});
Ovaj kod koristi Frida API da bi pronašao klasu MainActivity
u ciljanoj aplikaciji i zamenio implementaciju metode .onCreate()
. Kada se metoda pozove, ispisuje se poruka u konzoli i zatim se poziva originalna implementacija metode.
Korak 4: Pokretanje hakovanja
Pokrenite hakovanje koristeći frida -U -l script.js com.example.app
komandu:
frida -U -l script.js com.example.app
Sada, kada pokrenete ciljanu aplikaciju, videćete poruku "Metoda .onCreate() je hakovana!" u konzoli.
Zaključak
U ovom tutorijalu smo naučili kako da koristimo Frida framework za hakovanje metode .onCreate()
u Android aplikacijama. Frida pruža moćne mogućnosti za dinamičko hakovanje i analizu aplikacija, što je od velike koristi pri testiranju bezbednosti i reverse engineeringu.
var activity = Java.use("android.app.Activity");
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
send("Activity HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
Hakovanje funkcija sa parametrima i dobijanje vrednosti
Hakovanje funkcije za dešifrovanje. Ispisivanje ulaza, pozivanje originalne funkcije za dešifrovanje ulaza i na kraju, ispisivanje čistih podataka:
function getString(data){
var ret = "";
for (var i=0; i < data.length; i++){
ret += data[i].toString();
}
return ret
}
var aes_decrypt = Java.use("sg.vantagepoint.a.a");
aes_decrypt.a.overload("[B","[B").implementation = function(var_0,var_1) {
send("sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding");
send("Key : " + getString(var_0));
send("Encrypted : " + getString(var_1));
var ret = this.a.overload("[B","[B").call(this,var_0,var_1);
send("Decrypted : " + ret);
var flag = "";
for (var i=0; i < ret.length; i++){
flag += String.fromCharCode(ret[i]);
}
send("Decrypted flag: " + flag);
return ret; //[B
};
Hakovanje funkcija i pozivanje istih sa našim unosom
Hakujte funkciju koja prima string i pozovite je sa drugim stringom (sa ovde).
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
my_class.fun.overload("java.lang.String").implementation = function(x){ //hooking the new function
var my_string = string_class.$new("My TeSt String#####"); //creating a new String by using `new` operator
console.log("Original arg: " +x );
var ret = this.fun(my_string); // calling the original function with the new String, and putting its return value in ret variable
console.log("Return value: "+ret);
return ret;
};
Dobijanje već kreiranog objekta klase
Ako želite da izvučete neki atribut već kreiranog objekta, možete koristiti ovo.
U ovom primeru ćete videti kako da dobijete objekat klase my_activity i kako da pozovete funkciju .secret() koja će ispisati privatni atribut objekta:
Java.choose("com.example.a11x256.frida_test.my_activity" , {
onMatch : function(instance){ //This function will be called for every instance found by frida
console.log("Found instance: "+instance);
console.log("Result of secret func: " + instance.secret());
},
onComplete:function(){}
});
Ostali Frida tutorijali
- https://github.com/DERE-ad2001/Frida-Labs
- Deo 1 napredne upotrebe Frida blog serije: IOS enkripcijske biblioteke
Savet za bug bounty: prijavite se za Intigriti, premium platformu za bug bounty kreiranu od strane hakera, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas i počnite da zarađujete nagrade do $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini da podržite HackTricks:
- Ako želite da vidite vašu kompaniju oglašenu u HackTricks-u ili preuzmete HackTricks u PDF formatu Pogledajte SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.