How to bypass certificate pining using SSL Kill switch

บทนำ (Overview)

เดี๋ยวนี้โปรแกรมบนมือถือมีความนิยมมากขึ้น โปรแกรมที่เคยอยู่บนเว็บก็ย้ายมาอยู่บนมือถือซะอย่างนั้น มันช่างสะดวกสบายเสียจริง คนทำโปรแกรมบนมือถือก็บอกว่า “บ่ เป็นหยั่งสู โปรแกรมข้อยช่างปลอดภัยยิ่ง” เพราะมันถูกเข้ารหัสระหว่างมือถือจนไปถืงเครื่องให้บริการ (Web server) โดยใช้โปรโตคอล “TLS/SSL” อย่างเช่น “HTTPS” ปลอดภัยหายห่วง ป้องกันดักจับข้อมูลอย่างเด็ดขาด (man-in-the-middle attacks)

แต่แล้วความจริงเริ่มเปิดเผย “Hacker” บอกว่าเราไม่ดักระหว่าง “network” ก็ได้ เราดักโปรโตคอล “https” ตั้งแต่ต้นทางนี้แหละโดยใช้ “certificates” ของโปรแกรมจำพวก “proxy” ก็ได้ติดตั้งบนเครื่องเหยื่อแล้วค่อยดักเอา…

โปรแกรมเมอร์ บอกเอาว่ะถ้างั้นเราต้องตรวจสอบให้อนุญาตเฉพาะ “certificate” ที่ใช้งานเฉพาะเท่านั้น สามารถใช้งานโปรแกรมนี้ได้ละกัน

ปักหมุดสักหน่อย (Certificate Pining)

วิธีการตรวจสอบให้อนุญาต “certificate” ที่เราระบุใช้งานเท่านั้น เค้าเรียกกันว่า “Certificate Pining” ซึ่งมันหน้าที่ของโปรแกรมเมอร์จะต้องเขียนฝั่งลงใน “source-code” บนโปรแกรมบนมือถือนั้นแหละ โดยมีการฝั่งของ certificate 2 แบบ คือ

  1. ใช้ self-signed certificate (แบบนี้ไม่ต้องเสียตังค์)
  2. ใช้ CA certificate (โดยมีการจำกัดเฉพาะ certificate ที่ใช้งาน)

ผลจากการใช้งาน “certificate pinning” นั้น ส่งผลให้โปรแกรมจำพวก proxy ไม่สามารถดักเจ้าข้อมูลได้ดังภาพ (วิธีการเขียนโปรแกรมเพื่อทำ Certificate Pining สามารถติดตามได้ที่ http://blog.itselectlab.com/?p=254)

Screen Shot 2558-02-19 at 9.03.09 PM
proxy เมื่อโปรแกรมใช้งาน certificate pinning

แต่อย่างไรก็ตามเราสามารถยกเลิกการเรียกใช้งาน “certificate” ได้ในช่วงเวลา “Runtime” (ช่วงที่เรากำลังใช้งานโปรแกรมนั้น ๆ อยู่) โดยการปิดการตรวจสอบ “certificate” ของ “application” นั้น

ฆ่ามันเลย (iOS SSL Kill Switch)

เครื่องมือที่เรากำลังกล่าวถึงคือ “iOS SSL Kill Switch” ซึ่งมีขั้นตอนติดตั้งดังนี้

  1. ดาวน์โหลดโปรแกรมจาก https://github.com/iSECPartners/ios-ssl-kill-switch/releases
  2. ติดตั้งโปรแกรม .deb โดยใช้คำสั่ง (dpkg -i <ชื่อโปรแกรม> ) วิธีการติดตั้งไฟล์ “.deb” สามารถดูเพิ่มเติมได้จาก http://blog.itselectlab.com/?p=705
  3. Restart เครื่อง หรือ “respring” โดยใช้คำสั่ง (killall -HUP SpringBoard)
  4. ไปที่ “Setting” และทำการเปิด “SSL KILL Switch” ดังรูป

    enable ssl kil switch
    เปิดการใช้งาน SSL Kill Switch
  5. ทดสอบการดักจับข้อมูลโดยใช้ “proxy” อีกครั้ง พบว่าสามารถใช้งานได้

    Screen Shot 2558-02-19 at 9.06.04 PM
    ภายหลังปิด “Implements” ของ “Certificate Pinning”

 

 

 

 

ใส่ความเห็น