UNPKG

rms-runtime-mobile-security

Version:

Runtime Mobile Security (RMS), powered by FRIDA, is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime

57 lines (47 loc) 2.17 kB
/*************************************************************************** * Name: SSL Pinning Bypass for iOS 13 * OS: iOS * Author: Federico Dotta - Github @federicodotta / twitter @apps3c * Source: https://codeshare.frida.re/@federicodotta/ios13-pinning-bypass/ * Info: iOS 13 SSL Bypass script is based on: * https://codeshare.frida.re/@machoreverser/ios12-ssl-bypass/ * https://github.com/nabla-c0d3/ssl-kill-switch2 ****************************************************************************/ try { Process.getModuleByName("libboringssl.dylib").ensureInitialized(); } catch(err) { send("libboringssl.dylib module not loaded. Trying to manually load it.") Module.load("libboringssl.dylib"); } var SSL_VERIFY_NONE = 0; var ssl_set_custom_verify; var ssl_get_psk_identity; var libboringssl = Process.getModuleByName("libboringssl.dylib"); ssl_set_custom_verify = new NativeFunction( libboringssl.findExportByName("SSL_set_custom_verify"), 'void', ['pointer', 'int', 'pointer'] ); /* Create SSL_get_psk_identity NativeFunction * Function signature https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#SSL_get_psk_identity */ ssl_get_psk_identity = new NativeFunction( libboringssl.findExportByName("SSL_get_psk_identity"), 'pointer', ['pointer'] ); /** Custom callback passed to SSL_CTX_set_custom_verify */ function custom_verify_callback_that_does_not_validate(ssl, out_alert){ return SSL_VERIFY_NONE; } /** Wrap callback in NativeCallback for frida */ var ssl_verify_result_t = new NativeCallback(function (ssl, out_alert){ custom_verify_callback_that_does_not_validate(ssl, out_alert); },'int',['pointer','pointer']); Interceptor.replace(ssl_set_custom_verify, new NativeCallback(function(ssl, mode, callback) { // |callback| performs the certificate verification. Replace this with our custom callback ssl_set_custom_verify(ssl, mode, ssl_verify_result_t); }, 'void', ['pointer', 'int', 'pointer'])); Interceptor.replace(ssl_get_psk_identity, new NativeCallback(function(ssl) { return "notarealPSKidentity"; }, 'pointer', ['pointer'])); send("[+] iOS 13 SSL Pinning Bypass - successfully loaded");