Giriş
Kendi hesabımla test ettiğim bir bankacılık uygulaması, sertifika pinning’i native katmanda (libssl) yapıyordu — Java-seviyesi bypass çalışmadı. Bu yazı native pinning’i nasıl atlattığımı anlatıyor.
Native pinning
Pinning kontrolü SSL_CTX_set_custom_verify üzerinden yapılıyordu. Frida ile bu fonksiyonu hook’layıp dönüş değerini SSL_VERIFY_NONE’a sabitlemek yeterli oldu.
Interceptor.attach(Module.findExportByName("libssl.so", "SSL_CTX_set_custom_verify"), {
onEnter(args) { args[2] = ptr(0); }
});
Tespit kaçınma
Uygulama Frida’nın varsayılan portunu ve frida-agent izlerini tarıyordu; frida-server’ı yeniden adlandırıp rastgele port kullanmak gerekti.
Sonuç
Tüm test kendi hesabımla, izole cihazda yapıldı. Pinning bypass’ı yalnızca trafiği görmek içindi; bulgular bankanın güvenlik ekibine iletildi.