Cara Bypass SSL Pinning Dengan Frida Nox Player + Burp Suite - halo kali ini saya akan membagikan cara bypass SSL Pinning dengan Frida.js
Apa Itu SSL/Cert Pinning ?
Apa Itu Frida?
Tools Yang Harus Disediakan
- Python 2.7
- Pip for Python
- ADB Tools ( Android Debug Bridge Tools)
- Burp Suite
- Nox Player
Disini saya asumsikan teman teman sudah mendownload semua tools diatas.
diatas.
1. Buka Burp Suite klik table Intercept > Options isi seperti gambar di bawah
2. Jalankan Nox Player yang sudah di download tadi buka settings > wifi > modify network
- isi Proxy Hostname dengan IP sesuai pc kalian (kalo window buka cmd ketik ipconfig pilih ipv4)
- Proxy Port isi 8082
- Bypass Proxy biarkan kosong
- IP Settings ubah ke DHCP
3. jalankan burp suite > buka browser nox player > akses http://burp > download cert >install cert yang di download tadi (pastikan format nya .crt bila bukan .crt teman teman bisa ganti extensi nya)
4. buka cmd > buka dir adb tools yang telah di download tadi > ketikan di cmd seperti ini
adb connect 127.0.0.1:62001
tujuan nya untuk menghubungkan burp suite dengan nox player, dan pastikan device nya sudah terhubung cek dengan command
adb devices
pastikan ip 127.0.0.1:62001 sudah terhubung.
5. install frida server bisa teman teman download disini https://github.com/frida/frida/releases , namun kita cek dulu versi berapa frida server yang kita butuhkan dengan ketik command
adb shell getprop ro.product.cpu.abi
kebetulan di saya menggunakan x64
6. bila semua sudah di download selanjutnya kita extrak file nya dan langsung kita push dengan command :
adb push C:/[dir frida-server]/frida-server-12.11.9-android-x86 /data/local/tmp
dan sekarang kita rubah permission nya dan jalan kan frida server nya dengan command
adb shell chmod 777 /data/local/tmp/frida-server-12.11.9-android-x86
adb shell
cd /data/local/tmp/
./frida-server-12.11.9-android-x86 &
7. bila frida-server nya sudah berjalan buka new cmd ingat cmd yang 1 nya jangan di close
lalu kita ketikan command untuk cek aplikasi apasaja yang berjalan di android kita dengan command
frida-ps -U
nantinya akan keluar tuh aplikasi apasaja yang sedang berjalan, disini misalkan kita lagi buka aplikasi gojek dengan nama com.gojek.app
8. selanjutnya kita coba mulai bypass ssl pinning nya dengan frida.js dibawah ini
setTimeout(function(){
Java.perform(function (){
console.log(“”);
console.log(“[.] Cert Pinning Bypass/Re-Pinning”);var CertificateFactory = Java.use(“java.security.cert.CertificateFactory”);
var FileInputStream = Java.use(“java.io.FileInputStream”);
var BufferedInputStream = Java.use(“java.io.BufferedInputStream”);
var X509Certificate = Java.use(“java.security.cert.X509Certificate”);
var KeyStore = Java.use(“java.security.KeyStore”);
var TrustManagerFactory = Java.use(“javax.net.ssl.TrustManagerFactory”);
var SSLContext = Java.use(“javax.net.ssl.SSLContext”);// Load CAs from an InputStream
console.log(“[+] Loading our CA…”)
var cf = CertificateFactory.getInstance(“X.509”);
try {
var fileInputStream = FileInputStream.$new(“/data/local/tmp/cert-der.crt”);
}
catch(err) {
console.log(“[o] “ + err);
}
var bufferedInputStream = BufferedInputStream.$new(fileInputStream);
var ca = cf.generateCertificate(bufferedInputStream);
bufferedInputStream.close();var certInfo = Java.cast(ca, X509Certificate);
console.log(“[o] Our CA Info: “ + certInfo.getSubjectDN());// Create a KeyStore containing our trusted CAs
console.log(“[+] Creating a KeyStore for our CA…”);
var keyStoreType = KeyStore.getDefaultType();
var keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry(“ca”, ca);
// Create a TrustManager that trusts the CAs in our KeyStore
console.log(“[+] Creating a TrustManager that trusts the CA in our KeyStore…”);
var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
console.log(“[+] Our TrustManager is ready…”);console.log(“[+] Hijacking SSLContext methods now…”)
console.log(“[-] Waiting for the app to invoke SSLContext.init()…”)SSLContext.init.overload(“[Ljavax.net.ssl.KeyManager;”, “[Ljavax.net.ssl.TrustManager;”, “java.security.SecureRandom”).implementation = function(a,b,c) {
console.log(“[o] App invoked javax.net.ssl.SSLContext.init…”);
SSLContext.init.overload(“[Ljavax.net.ssl.KeyManager;”, “[Ljavax.net.ssl.TrustManager;”, “java.security.SecureRandom”).call(this, a, tmf.getTrustManagers(), c);
console.log(“[+] SSLContext initialized with our custom TrustManager!”);
}
});
},0);
save dulu dan simpan dengan ext bypass.js, lalu kita jalankan dengan command
frida -U -f org.gojek.app -l C:\[lokasi file bypass.js]/bypass.js — no-pause
tunggu sampai proses bypass selesai
9. bila proses bypass ssl pinning nya selesai kita tinggal langsung intercept data nya menggunakan burp suite yang sudah di konekan tadi,
diatas.
1. Buka Burp Suite klik table Intercept > Options isi seperti gambar di bawah
2. Jalankan Nox Player yang sudah di download tadi buka settings > wifi > modify network
- isi Proxy Hostname dengan IP sesuai pc kalian (kalo window buka cmd ketik ipconfig pilih ipv4)
- Proxy Port isi 8082
- Bypass Proxy biarkan kosong
- IP Settings ubah ke DHCP
3. jalankan burp suite > buka browser nox player > akses http://burp > download cert >install cert yang di download tadi (pastikan format nya .crt bila bukan .crt teman teman bisa ganti extensi nya)
4. buka cmd > buka dir adb tools yang telah di download tadi > ketikan di cmd seperti ini
adb connect 127.0.0.1:62001
tujuan nya untuk menghubungkan burp suite dengan nox player, dan pastikan device nya sudah terhubung cek dengan command
adb devices
pastikan ip 127.0.0.1:62001 sudah terhubung.
5. install frida server bisa teman teman download disini https://github.com/frida/frida/releases , namun kita cek dulu versi berapa frida server yang kita butuhkan dengan ketik command
adb shell getprop ro.product.cpu.abi
kebetulan di saya menggunakan x64
6. bila semua sudah di download selanjutnya kita extrak file nya dan langsung kita push dengan command :
adb push C:/[dir frida-server]/frida-server-12.11.9-android-x86 /data/local/tmp
dan sekarang kita rubah permission nya dan jalan kan frida server nya dengan command
adb shell chmod 777 /data/local/tmp/frida-server-12.11.9-android-x86
adb shell
cd /data/local/tmp/
./frida-server-12.11.9-android-x86 &
7. bila frida-server nya sudah berjalan buka new cmd ingat cmd yang 1 nya jangan di close
lalu kita ketikan command untuk cek aplikasi apasaja yang berjalan di android kita dengan command
frida-ps -U
nantinya akan keluar tuh aplikasi apasaja yang sedang berjalan, disini misalkan kita lagi buka aplikasi gojek dengan nama com.gojek.app
8. selanjutnya kita coba mulai bypass ssl pinning nya dengan frida.js dibawah ini
setTimeout(function(){
Java.perform(function (){
console.log(“”);
console.log(“[.] Cert Pinning Bypass/Re-Pinning”);var CertificateFactory = Java.use(“java.security.cert.CertificateFactory”);
var FileInputStream = Java.use(“java.io.FileInputStream”);
var BufferedInputStream = Java.use(“java.io.BufferedInputStream”);
var X509Certificate = Java.use(“java.security.cert.X509Certificate”);
var KeyStore = Java.use(“java.security.KeyStore”);
var TrustManagerFactory = Java.use(“javax.net.ssl.TrustManagerFactory”);
var SSLContext = Java.use(“javax.net.ssl.SSLContext”);// Load CAs from an InputStream
console.log(“[+] Loading our CA…”)
var cf = CertificateFactory.getInstance(“X.509”);
try {
var fileInputStream = FileInputStream.$new(“/data/local/tmp/cert-der.crt”);
}
catch(err) {
console.log(“[o] “ + err);
}
var bufferedInputStream = BufferedInputStream.$new(fileInputStream);
var ca = cf.generateCertificate(bufferedInputStream);
bufferedInputStream.close();var certInfo = Java.cast(ca, X509Certificate);
console.log(“[o] Our CA Info: “ + certInfo.getSubjectDN());// Create a KeyStore containing our trusted CAs
console.log(“[+] Creating a KeyStore for our CA…”);
var keyStoreType = KeyStore.getDefaultType();
var keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry(“ca”, ca);
// Create a TrustManager that trusts the CAs in our KeyStore
console.log(“[+] Creating a TrustManager that trusts the CA in our KeyStore…”);
var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
console.log(“[+] Our TrustManager is ready…”);console.log(“[+] Hijacking SSLContext methods now…”)
console.log(“[-] Waiting for the app to invoke SSLContext.init()…”)SSLContext.init.overload(“[Ljavax.net.ssl.KeyManager;”, “[Ljavax.net.ssl.TrustManager;”, “java.security.SecureRandom”).implementation = function(a,b,c) {
console.log(“[o] App invoked javax.net.ssl.SSLContext.init…”);
SSLContext.init.overload(“[Ljavax.net.ssl.KeyManager;”, “[Ljavax.net.ssl.TrustManager;”, “java.security.SecureRandom”).call(this, a, tmf.getTrustManagers(), c);
console.log(“[+] SSLContext initialized with our custom TrustManager!”);
}
});
},0);
save dulu dan simpan dengan ext bypass.js, lalu kita jalankan dengan command
frida -U -f org.gojek.app -l C:\[lokasi file bypass.js]/bypass.js — no-pause
tunggu sampai proses bypass selesai
9. bila proses bypass ssl pinning nya selesai kita tinggal langsung intercept data nya menggunakan burp suite yang sudah di konekan tadi.
0 Comments
Jangan Lupa Untuk Terus Visit blog kami : https://tips-trickindonesia.blogspot.com/?m=1