Bypass SSL Pinning for Flutter apps using Frida

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ต.ค. 2023
  • Hello everyone,
    In this video we're diving deep into the world of SSL traffic interception in Flutter Android applications. Flutter handles SSL/TLS differently from your typical Android apps, and in this video, we're going to explore the inner workings. By the end of this tutorial, you'll not only be able to extract the functions responsible for SSL certificate verification, but you'll also gain the skills to bypass SSL Pinning and unlock the secrets of intercepting HTTPS traffic in plain text. Stay tuned, because we're about to uncover some serious Flutter app magic!"
    At the end of this video, you will be able to bypass SSL pinning and intercept network traffic from a flutter application using frida and burp suite.
    Link to the sample application used in this video: github.com/fatalSec/flutter_r...
    If you find this video helpful, please show your support by hitting the like button and sharing it with your friends. Don't forget to subscribe to the channel because we regularly release new videos, and your support keeps us motivated.
    Join us on:
    Twitter: @SecFatal
    Telegram: t.me/SecFatal
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 87

  • @rezarezaee1535
    @rezarezaee1535 8 หลายเดือนก่อน +1

    Thanks bro
    We enjoyed it ❤
    Keep it up and make more advanced tutorials ❤

  • @ashishf6
    @ashishf6 3 หลายเดือนก่อน

    Thanks for the detailed video. Usage of Ghidra to calculating the offset. Writing own frida script.

  • @tur_
    @tur_ 8 หลายเดือนก่อน +2

    You are the best keep going 💪❤️

  • @norbertseho
    @norbertseho 5 หลายเดือนก่อน

    Thank you very much for this content. I had some issues with the script but i found a way around and I was finally able to bypass ssl pinning.

    • @fatalsec
      @fatalsec  4 หลายเดือนก่อน

      Glad to know that

  • @farukarslan2000
    @farukarslan2000 8 หลายเดือนก่อน +1

    perfect! im looking forward for your next videos!

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน +1

      Thanks

  • @kuldeepsingh2983
    @kuldeepsingh2983 5 หลายเดือนก่อน

    thank, it is exactly what I needed. Great content.

  • @m.alfaqih4685
    @m.alfaqih4685 2 หลายเดือนก่อน +1

    very detail!!! thank you!
    If you don't mind, please make videos about intercepting xamarin apps

  • @user-vp7tw1pi8b
    @user-vp7tw1pi8b 8 หลายเดือนก่อน +1

    awesome video once again keep it up. There is also an easy way of doing all this through reflutter but understanding the internals is always better.

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน +2

      Yes, but with new dart snapshots sometimes reflutter fails to parse it properly. So the goal of this video is to show how to do it manually.

    • @user-vp7tw1pi8b
      @user-vp7tw1pi8b 8 หลายเดือนก่อน

      @@fatalsec it is pleasure to learn complex topics in such a simple way. Please also consider too create a crash course on Frida and JS.

  • @zerotohero2659
    @zerotohero2659 5 หลายเดือนก่อน +1

    Thank you for the video. I suggest to put the links and resources that you used to understand and put this together. Maybe there are those who want to go further...

  • @user-vl8eo4pr4w
    @user-vl8eo4pr4w 5 หลายเดือนก่อน

    superb video bro.. thanks alot.

  • @nairpaa
    @nairpaa 6 หลายเดือนก่อน +1

    Great video!

  • @NoorTrading
    @NoorTrading หลายเดือนก่อน

    Bro amazing job 👌

  • @HackingIsDope
    @HackingIsDope 8 หลายเดือนก่อน +1

    Really needed this

    • @piyushnigam4916
      @piyushnigam4916 4 หลายเดือนก่อน

      hey brother Can you please help me to intercept flutter app with burp in some easiest way ?

    • @HackingIsDope
      @HackingIsDope 4 หลายเดือนก่อน

      @@piyushnigam4916 the easiest way is to setup HTTP Toolkit

  • @sandaruashen5108
    @sandaruashen5108 7 หลายเดือนก่อน +1

    Thank you man

  • @Renan-yq2qv
    @Renan-yq2qv 8 หลายเดือนก่อน +2

    very good one! i wonder if you are planning to make more videos on reverse engineering approaches for flutter. i'm currently focused on this, but unfortunately there isn't much content or tools available to learn from, so i just keep struggling with the low level operations and reading source code of dart sdk

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน +4

      Thanks! Yes I am planning to make more videos on flutter so stay tuned.

  • @trickshindi100
    @trickshindi100 8 หลายเดือนก่อน

    Awesome content bro. , next video should on dart ♥️😃 and bro. explain about your setup also.

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน

      Thanks, Sure I will plan to create a dedicated video to explain about the setup.

  • @gaurishkauthankar5061
    @gaurishkauthankar5061 5 หลายเดือนก่อน

    What's the flutter sdk version used in the demo app?

  • @nodistractionsjustgoandstu1842
    @nodistractionsjustgoandstu1842 6 หลายเดือนก่อน +2

    Excellent video and gained valuable insights. Please continue making these videos. Could you create a video on how to initiate the analysis of a Flutter APK before testing? In the case of Java and Kotlin, we can easily decompile and examine the code, but for Flutter, it's not as straightforward. How should we conduct reconnaissance on Flutter apps?

    • @fatalsec
      @fatalsec  6 หลายเดือนก่อน +3

      Thanks. Sure I am already planning to make a video on this topic soon.

    • @nodistractionsjustgoandstu1842
      @nodistractionsjustgoandstu1842 6 หลายเดือนก่อน

      @@fatalsec Thanks a lot waiting for it.

  • @technoindian555
    @technoindian555 8 หลายเดือนก่อน

    Hello Sir, Can you help me with something?
    Can you create a script to hide mitm proxy (.p12/.pem) certificate so that the VPN is not detected during capture? If I open the app through another normal VPN, it opens, but if I capture data through httpcanary, the app kicks me out.

  • @lew9068
    @lew9068 6 หลายเดือนก่อน +1

    Very informative video. It would be great if you could speak a little slower as it was a little difficult to track. Frida gadget would also be a great topic to touch on

    • @fatalsec
      @fatalsec  6 หลายเดือนก่อน

      Thanks for the suggestion.

  • @piyushnigam4916
    @piyushnigam4916 4 หลายเดือนก่อน +1

    Brother can you please brief the main steps only, actually I was looking for the same content for 1 year.

  • @Ahmedzicas
    @Ahmedzicas 4 หลายเดือนก่อน

    Thanks for this video, as a newbie, I have some questions, is it essential to have a rooted device to use proxy apps ? if this is the case, what if I'm using a rooted device detection package in my app.
    would it be helpful to prevent app installation on those devices?
    Thanks a lot for sharing valuable information

    • @fatalsec
      @fatalsec  4 หลายเดือนก่อน

      Yes rooted device is required to run frida server or other such tools like a debugger. In case your app is detecting that the device is rooted then you have to first bypass root detections. There are various ways to detect root. I have made some videos about it as well you can check to get some idea.

  • @_Kishan_Ambaliya_
    @_Kishan_Ambaliya_ 8 หลายเดือนก่อน +4

    yes sir, i want know that how to read .so file , please make dedicated video on that topic.

  • @user-hy5gt9lq4b
    @user-hy5gt9lq4b 29 วันที่ผ่านมา

    Excellent video. There seems to have been some code changes with boringssl, are you able to bypass with the new library?
    Appreciate the response.
    Thanks

    • @fatalsec
      @fatalsec  27 วันที่ผ่านมา

      No haven’t looked into the new one. But I guess you can apply the same logic until unless they have modified the whole structure of the function.

    • @user-hy5gt9lq4b
      @user-hy5gt9lq4b 27 วันที่ผ่านมา

      @@fatalsec Thank you. I had to update the return value to 0 to make it work in my case.

  • @mustafaagbaria8922
    @mustafaagbaria8922 5 หลายเดือนก่อน

    well done and perfect explanation, but can you please the other way in which we can change the library and compiling again? also will this work for ios devices? thanks!

    • @fatalsec
      @fatalsec  5 หลายเดือนก่อน +1

      Sure, I will make a video on this

  • @testuser-jg4fi
    @testuser-jg4fi 8 หลายเดือนก่อน

    So, currently i have an flutter based apk which does not has the lib/amd64/libapp.so file in it, now what can i do. The apk uses the firebase as the storage of api, in this scenario what are the other techniques i can perform.

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน

      Is there libflutter.so present in the applications lib directory? If not then this is not a flutter based app.
      For second question I don’t understand. You want to intercept storage api from firebase library or you are trying to intercept HTTPS requests made by firebase apis?

  • @balramrexwal
    @balramrexwal 7 หลายเดือนก่อน

    Great video, keep it up, there are very less videos on pentesting flutter apps, So, we have to reverse each app binary files for ssl bypass, it that right?

    • @fatalsec
      @fatalsec  7 หลายเดือนก่อน

      Yes but the concept is more or less the same for every flutter app and if your app is using the same dart versions then same script can be used.

  • @asantoshkumarachary2692
    @asantoshkumarachary2692 หลายเดือนก่อน

    How to know which boringsll version is used for the app I am trying to reversing ?

    • @fatalsec
      @fatalsec  หลายเดือนก่อน

      Based on the dart version application is using you can figure out

  • @shortvideo2457
    @shortvideo2457 17 วันที่ผ่านมา

    Please bypass app ssl for me...will do for me...only one app ??

  • @user-rc7pk5wg1c
    @user-rc7pk5wg1c 7 หลายเดือนก่อน

    Bro can you bypass Play Integrity API

  • @user-vh6ui7hc3v
    @user-vh6ui7hc3v 3 หลายเดือนก่อน

    what version android do you use?

    • @fatalsec
      @fatalsec  3 หลายเดือนก่อน

      Currently using Android 13.

  • @user-jp2us8mf6z
    @user-jp2us8mf6z 5 หลายเดือนก่อน

    While running the script I got the below mentioned error:
    TypeError: cannot read property 'enumerateSymbols' of null
    # I am running frida 16.1.4

    • @fatalsec
      @fatalsec  5 หลายเดือนก่อน

      You are trying to enumerate linker64 symbols? It might be possible that your device is armv7 based and not armv8. Try changing linker64 to linker.

    • @user-jp2us8mf6z
      @user-jp2us8mf6z 5 หลายเดือนก่อน

      @@fatalsec thanks for replying, I changed that value to linker and it worked but now I'm having trouble in getting offset value as in ghidra the vulnerable function is undefined and if I use the value(value looks like the address) just after the word undefined, I didn't get success. Please help me or is there any other way to contact you to get this problem solved.
      And second thing, I'm running android 11 on my device and not able to install/run proxy droid on my phone, that application keeps closing when I run. So is there any other way to use proxy droid on android 11 or any other application which is an alternative to proxy droid.

  • @ashsharp1985
    @ashsharp1985 หลายเดือนก่อน

    Can you bypass and reroute to your own server with another certificate?
    With android app

    • @fatalsec
      @fatalsec  หลายเดือนก่อน

      Not sure about the certificate but redirecting the traffic to another server is possible.

    • @ashsharp1985
      @ashsharp1985 หลายเดือนก่อน

      @fatalsec redirecting to android chrome web app and setting up entire architecture behind it is possible.
      Methods of redirecting , css, webhook, restful apis. ,weblisteners and automated push requests?
      What method would be most common and allowed by chrome browsers?

  • @ramasyah397
    @ramasyah397 6 หลายเดือนก่อน

    how to bypass sign. no kill

  • @evannur2883
    @evannur2883 5 หลายเดือนก่อน

    TypeError: cannot read property 'readCString' of undefined help me out bro

    • @fatalsec
      @fatalsec  4 หลายเดือนก่อน

      This error means that the string that you are trying to read is not defined. Make sure that the address is valid.

  • @deepamsinha3933
    @deepamsinha3933 8 หลายเดือนก่อน

    Hello brother, when I'm trying to load the js script file I'm getting the following error " cannot read property enumerateSymbols of null" , please help with this

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน

      Are you using the same script I have used in the video?

    • @deepamsinha3933
      @deepamsinha3933 8 หลายเดือนก่อน

      @@fatalsec yes, I'm using the same script. Does it need any specific library to be included through import keyword?

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน

      @@deepamsinha3933 no, there are chances that you are using a device which is having ARMv7 architecture. Confirm this and if so then replace “linker64” with “linker”.

  • @bruno-devs
    @bruno-devs 3 หลายเดือนก่อน

    Make a video using reflutter

  • @danishazizkhan6099
    @danishazizkhan6099 7 หลายเดือนก่อน

    Make a dedicated video on .so dart library file.

    • @fatalsec
      @fatalsec  7 หลายเดือนก่อน

      Noted

  • @Mdimthiyaj.s
    @Mdimthiyaj.s 4 หลายเดือนก่อน

    Application is developed using flutter but while I'm extract apk the lib folder is not there and code is obfuscate what to do I'm stuck 🥺

    • @fatalsec
      @fatalsec  4 หลายเดือนก่อน

      This could happen if the application is obfuscated.Is there any other native library present?

    • @Mdimthiyaj.s
      @Mdimthiyaj.s 4 หลายเดือนก่อน

      @@fatalsec yes kotlin is there

    • @Mdimthiyaj.s
      @Mdimthiyaj.s 4 หลายเดือนก่อน

      @@fatalsec is there any way to read code ?

  • @mynamebvh
    @mynamebvh 8 หลายเดือนก่อน

    i found that function but it doesn't return 0x0 but 0xbde22301. I also have a hard time understanding :((

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน +1

      There are chances that the function you are hooking is not correct. If you are sure it’s the right function then it would be interesting to see. If you can share the apk with me I can have a look!

    • @erikhen1809
      @erikhen1809 7 หลายเดือนก่อน

      In my case also doesn't return 0x0 but some random number. I use you apk brother with x86_64 lib. It also just loading even though i don't pass it through proxy. Any Idea what's going on? please help with this. Thank you brother!

  • @GautamMS
    @GautamMS 7 หลายเดือนก่อน +1

    We want to know about those snapshots

    • @fatalsec
      @fatalsec  7 หลายเดือนก่อน

      Noted

  • @rioputrasuryana
    @rioputrasuryana 7 หลายเดือนก่อน

    request next tutorial how to bypass emulator detection in flutter

    • @fatalsec
      @fatalsec  7 หลายเดือนก่อน

      I can if you can share any sample app having emulator detection in flutter

    • @rioputrasuryana
      @rioputrasuryana 7 หลายเดือนก่อน

      ​@@fatalsechow can i contact you?

  • @ctfs09
    @ctfs09 12 วันที่ผ่านมา

    cfbr!!

  • @kriswall8350
    @kriswall8350 3 หลายเดือนก่อน

    I'd be willing to pay for more

    • @fatalsec
      @fatalsec  3 หลายเดือนก่อน

      Hi, thanks for showing the interest. You can contribute here: www.buymeacoffee.com/secfatalz

  • @tjtakegaming8264
    @tjtakegaming8264 6 หลายเดือนก่อน

    Useing only Android device

  • @anyy916
    @anyy916 8 หลายเดือนก่อน

    Hello bro how can I contact to you

    • @fatalsec
      @fatalsec  8 หลายเดือนก่อน

      You can join our telegram group: t.me/SecFatal

  • @mohso2001
    @mohso2001 5 หลายเดือนก่อน

    const pattern = "55 41 57 41 56 41 55 41 54 53 48 83 ec 38 c6 02 50 48 8b af a8 00 00 00"
    var module = Process.findModuleByName("libflutter.so");
    var results = Memory.scanSync(module.base, module.size, pattern);

    console.log(`[+] libflutter is loaded at ${module.base}`);
    session_verify_cert_chain(ptr(results[0].address).add(0x1));
    function session_verify_cert_chain(address){
    console.log("ssl add: "+address);
    Interceptor.attach(address, {

    onLeave: function(retval){
    retval.replace(0x0);
    console.log(`[+] session_verify_cert_chain retval: ${retval}`);
    }
    });
    }
    onleav not work