เราสามารถตรวจสอบ หรือข้อความของ Public Key ของ Certificate ที่ Export มาจากโปรแกรม Proxy อย่าง Burp Suite โดยใช้โปรแกรม OpenSSL ทั้ง Windows และ Kali Linux โดยไม่อยากนัก เพื่อนำไปสู่การเตรียมการโจมตีอย่างเช่นการ Bypass Certificate Pining ของ Mobile Application ได้เช่นกัน
การดึงไฟล์ .ipa จาก Firebase
เมื่อต้องไฟล์ .ipa มาทำการแก้ไข หรือแจกจ่ายให้ผู้ทดสอบในทีมงาน แต่ Dev ได้ส่ง App ผ่าน Firebase เราสามารถแก้ปัญหาเพื่อ Download และแจกจ่ายทีมงานได้เองโดยไม่ต้องลำบาก Dev ดังต่อไปนี้
การดัก HTTP traffic ของโปรแกรม Android และ iOS โดยใช้ reFlutter
เมื่อต้องการวิธีการดัก HTTP traffic ที่เขียนด้วย Flutter แล้วเกิดปัญหาดักไม่ได้ แล้วต้องรีบหาวิธีอย่างเร่งด่วน ทำให้เกิดอาการ กระสับกระสาย คล้ายจะเป็นร้อนใน วิธีการหนึ่งอาจช่วยให้การทดสอบของท่านราบรื่นขึ้นได้ และสามารถทำได้อย่างรวดเร็ว
Bypass Certificate Pinning on a Flutter-based iOS App
ไม่กี่ปีที่ผ่านมาผมกับทีมได้มีโอกาสทดสอบความปลอดภัยให้กับแอปที่ถูกพัฒนาด้วยเฟรมเวิร์ค Flutter เราติดปัญหาเรื่องการ bypass certificate pinning เพราะตอนนั้นยังแทบไม่มีบทความหรือ research เกี่ยวกับการ penetration test แอปที่เขียนด้วย Flutter เลย แต่ยังโชคดีที่ project lead ของผมเค้าไปหาวิธีมาจนได้จาก blog ของ NVSIO (https://blog.nviso.eu/2020/06/12/intercepting-flutter-traffic-on-ios/). แต่พอมาเร็ว ๆ นี้ผมเริ่มรู้สึกกลับมาติดปัญหาเรื่องนี้อีกครั้ง วันนี้จะพามาดูวิธีที่ผมใช้เพื่อ bypass certificate pinning ของ iOS app ที่เขียนด้วย Flutter กัน
Flutter – TLS Certificate Pinning Sample
TLS Certificate Pinning ช่วยทำให้แอปสามารถตรวจสอบได้ว่าบริการ TLS/SSL ที่กำลังจะเชื่อมต่อนั้นเป็นเป็นบริการที่รันอยู่บน server เดียวกันกับที่แอปรู้จักไหม เพื่อป้องกันการดัก traffic ด้วย proxy ในเบื้องต้นก่อน (ความเป็นจริงแล้วการ implement security control ฝั่ง client side มันย่อมมีแนวโน้มว่าจะถูก bypass ได้ แต่ทำไว้ยังดีกว่าไม่ทำเลย) หลายครั้งที่ต้องเรสประเด็นว่าแอปไม่มีการตรวจสอบ TLS certificate ของบริการ TLS/SSL ที่ตัวมันต้องเชื่อมต่อยิ่งเป็นแอปที่มีความสำคัญพวก financial app แล้วยิ่งต้องถูกกำกับด้วยข้อบังคับต่าง ๆ นานา ผู้พัฒนาแอปจึงจำเป็นที่ต้องพัฒนาแอปให้สอดคล้องกับข้อบังคับเหล่านั้น