Frida ile SSL Pinning Bypass

Yayınlayan
Editör
Yayınlanma tarihi
26-02-2022
Okuma süresi
10 DK

Frida ile SSL Pinning Bypass

Birçok güvenlik araştırmacısı mobil uygulamalarda SSL Pinning durumunu aşmakta zorlanabilir. Frida kullanarak JavaScript kodları, frida-server tarafından çalışan uygulamanın process’ine enjekte olur ve bypass işlemi gerçekleşir.

SSL Nedir?

Secure Socket Layer anlamına gelmektedir. Ek bir şifreleme katmanı olmayan ve saldırganlar tarafından ağ üzerinde açıkça okunabilecek paketler gönderen protokollere ek şifreleme katmanı hizmeti sunar. Bu şekilde ağ üzerinde herhangi bir illegal aktivite gerçekleştiren saldırgan olsa bile, giden paketler okunamaz.

SSL Pinning Nedir?

Mobil uygulama güvenliğinde saldırganlar ağ üzerinden uygulama ile internet arasında gidip gelen HTTP paketlerini proxy araçları ile okuyabilmektedir. Bunun için kullandıkları proxy araçlarının Trusted sertifikalarını mobil cihaz üzerine yüklerler. SSL pinning, bu tarz saldırıları ve durumları engellemeye yönelik geliştirilmiştir. Her ne olursa olsun HTTP trafiğini kimse dinlememelidir ve bu yüzden sertifikalar Trusted bile olsa doğrulama hatası ile problem çıkacaktır. Bu yazımız SSL pinning durumlarını bypass etmeye yönelik.

Gerekli Ekipmanlar.

Genymotion – https://www.genymotion.com/

Burp Suite – https://portswigger.net/burp

Frida – https://github.com/frida/frida/releases/

Android Debug Bridge – adb-

Android Debug Bridge bir cihazla etkileşime geçmemizi sağlayan bir komut satırı uygulamasıdır ve bizleri Unix kabuğuna eriştirir. Hata ayıklama ve yükleme gibi bir çok işlemi gerçekleştirir.

SSL Pinning Bypass.

SSL pinning bypass işlemini gerçekleştirmek için ilk olarak fridascript.js adında bir dosya oluşturuyoruz. Dosya içeriğine şu javascript kodlarını ekliyoruz.

Not: “Burada kodların copy/paste edilmesi sırasında karakterler bozulup herhangi bir sentaks hatasına sebebiyet verebilir. Kodları bir kod editöründe gözden geçirmenizi tavsiye ederim”

 

fridascript.js

/*

Android SSL Re-pinning frida script v0.2 030417-pier

$ adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt

$ frida -U -f it.app.mobile -l frida-android-repinning.js –no-pause

https://techblog.mediaservice.net/2017/07/universal-android-ssl-pinning-bypass-with-frida/

 

UPDATE 20191605: Fixed undeclared var. Thanks to @oleavr and @ehsanpc9999 !

*/

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

 

Burp suite aracına ait sertifikayı mobil cihaza yüklemek için Proxy -> Options sekmesi üzerinden Export edelim.

Github üzerinden mobil cihazın yapısına uygun olacak frida-server’ı indirelim.

 

Tüm bunların ardından Genymotion üzerindeki mobil cihazımızı aktif edip, cihazlar arası bağlantıyı “adb” ile kurmalıyız.

Genymotion üzerinde cihaz aktif olduğunda başlık kısmında cihaza ait ip adresi mevcuttur. Genymotion uygulamasının kurulu olduğu dizindeki “tools” klasörü altında “adb.exe” dosyası mevcuttur. Bu dosya yardımı ile uzak makinenin 5555 portuna bağlanmalıyız.

Ardından “adb shell :5555” komutuyla mobil cihazın kabuğuna erişiyoruz.

İndirdiğimiz frida-server uygulamasını “adb push /data/local/tmp/” dizini altına ilgili komutla yüklüyoruz.

Daha sonra frida-server uygulamasına 777 okuma,yazma,çalıştırma izini veriyoruz.

“adb shell chmod 777 /data/local/tmp/frida-server”

Burp Suite proxy aracımızdan export ettiğimiz sertifikamızı ve fridascript.js dosyasını “/data/local/tmp/” dizinine taşımamız gerekiyor ve mobil cihaz ile bulunduğumuz ağda ki ip adresimizi proxy listeners listesine ekliyoruz.

Mobil cihaz ağ ayarları üzerinde çıkış proxy adresini burp suite proxy listener üzerinde ayarladığımız ip ve port bilgisi olarak ayarlıyoruz.

Ardından mobil cihaz üzerinde ki frida-server’ımızı çalıştırıyoruz. Ana bilgisayarımız üzerine kurulu olan frida-tools araçlarından olan frida-ps uygulamasını kullanıp hedef cihazımızda var olan uygulamaları listeliyoruz.

Son olarak process listesinde ki hedef uygulamanızı seçerek aşağıdaki komutu çalıştırmamız gerekiyor.

frida -U -f com.ornek_uygulama.android -l “c:usersmehmetdesktopfridascript.js –no-paus

Bu şekilde önlemi aşmış olduk ve giden http paketlerini yakalayabilir hale geldik.

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Siber İstihbarat ve Siber Tehdit İstihbaratı
Siber İstihbarat ve Siber Tehdit İstihbaratı
JWT Saldırıları
JWT Saldırıları
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages