ข้ามการปักหมุด SSL สำหรับแอพ Flutter โดยใช้ reFlutter Framework
แอพ Flutter นั้นไม่ยากที่จะข้ามการปักหมุด SSL อันที่จริง เช่นเดียวกับแอปอื่น ๆ คุณสามารถข้ามการปักหมุด SSL ในแอป Flutter ได้หากใช้เทคนิคที่เหมาะสม
การปักหมุด SSL เป็นกลไกการรักษาความปลอดภัยที่ใช้เพื่อป้องกันการโจมตีจากคนกลางโดยตรวจสอบให้แน่ใจว่าแอปสื่อสารกับเซิร์ฟเวอร์ที่ต้องการเท่านั้น ในแอพ Flutter การปักหมุด SSL สามารถนำไปใช้ได้โดยใช้แพ็คเกจของบุคคลที่สามต่างๆ เช่น 'flutter_secure_storage' และ 'flutter_ssl_pinning'
เหตุผลหนึ่งที่การข้ามการปักหมุด SSL ในแอพ Flutter อาจเป็นเรื่องท้าทายก็คือ Flutter รวบรวมโค้ดเป็นโค้ดเนทีฟสำหรับหลายแพลตฟอร์ม รวมถึง Android และ iOS ทำให้ยากต่อการใช้เทคนิคแบบดั้งเดิม เช่น การเชื่อมเมธอดหรือการแทรกโค้ด ซึ่งต้องอาศัยการจัดการกับไบต์โค้ดของแอป
อีกเหตุผลหนึ่งที่ทำให้เลี่ยงการปักหมุด SSL ในแอพ Flutter ได้ยากก็คือเครื่องมือยอดนิยมมากมายที่ใช้เพื่อจุดประสงค์นี้ เช่น Frida ไม่รองรับ Flutter ในขณะนี้ ซึ่งหมายความว่านักพัฒนาซอฟต์แวร์ต้องใช้เทคนิคขั้นสูง เช่น เครื่องมือไดนามิกไบนารี (DBI) หรือการวิเคราะห์หน่วยความจำ เพื่อข้ามการปักหมุด SSL ในแอพ Flutter
ใน บทความนี้ ฉันจะแสดงวิธีหนึ่งในการเลี่ยงการปักหมุด ssl โดยใช้reFlutter Framework
เฟรมเวิร์กนี้ช่วยในการทำวิศวกรรมย้อนกลับของแอพ Flutter โดยใช้ไลบรารี Flutter เวอร์ชันแพตช์ซึ่งคอมไพล์แล้วและพร้อมสำหรับการบรรจุแอปใหม่ ไลบรารีนี้มีกระบวนการดีซีเรียลไลเซชันของสแน็ปช็อตที่แก้ไขเพื่อให้คุณทำการวิเคราะห์แบบไดนามิกได้
ความต้องการ
ในระหว่างการทดสอบนี้ ฉันใช้:
- Nox Emulator หรืออื่นๆ เช่น genymotion..
- คำวิเศษณ์
- Burpsuite pro (คุณสามารถใช้รุ่นชุมชนได้)
- วินโดวส์หรือลินุกซ์
#windows #linux
pip3 install reflutter
Installing reFlutter
การวิเคราะห์
แอพนี้มีปุ่มHTTP RequestและHTTPS Request สองปุ่ม
ตรวจสอบคำขอ HTTP กันเถอะ
เราจะเห็นว่า burpsuite สกัดกั้นคำขอได้สำเร็จ
ตอนนี้หากเราพยายามตรวจสอบคำขอ HTTPS เราจะได้รับข้อผิดพลาดดังนี้:
บายพาสการปักหมุด SSL
เราเรียกใช้คำสั่งต่อไปนี้:
reflutter apk_name.apk
Reflutting our app
หลังจากนั้น twe จะได้รับ app release.RE.apkแต่โปรดระวังเพราะ apk นี้ยังไม่ได้ลงนาม เราต้องเซ็นเองแล้ว..
ฉันใช้ Uber_apk_signer เพื่อจุดประสงค์นี้:https://github.com/patrickfav/uber-apk-signer.
java -jar uber-apk-signer-1.3.0.jar --apk release.RE.apk
Signing apk
adb connect 127.0.0.1:PORT_EMULATOR
adb install release.RE-aligned-debugSigned.apk
การกำหนดค่า Burpsuite
ต่อไปเราจะกำหนดค่า burpsuite proxy (ตรวจสอบให้แน่ใจว่าคุณใช้ 8083 เป็นพอร์ต ซึ่งจะใช้โดยพร็อกซีภายในของแอปใหม่ของเรา)
จากนั้นใน แท็บ การจัดการคำขอ เปิดใช้งานการสนับสนุนพร็อกซีที่มองไม่เห็น และคลิกตกลง
ตอนนี้เรามาเปิด apk ใหม่แล้วคลิกที่คำขอ HTTPS
ตอนนี้เราสามารถสกัดกั้นคำขอ https ด้วย burpsuite ได้แล้ว!!
เราเห็นการสาธิตสำหรับการบายพาส SSL Pinning สำหรับ Flutter Apps
แบ่งปันความรู้ ช่วยเหลือผู้อื่น และมีความสุขในการแฮ็ก!!
ขอบคุณ จนกว่าจะถึงตอนต่อไป!!
อ้างอิง
- https://github.com/patrickfav/uber-apk-signer
- https://blog.nviso.eu/2019/08/13/intercepting-traffic-from-android-flutter-applications/
- https://github.com/leowilbur/reFlutter
- https://raw.githubusercontent.com/jjogal/Android/master/flutter-test-apps





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)