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.