Sunday, September 30, 2012

ระวัง!! โทรศัพท์แอนดรอยด์อาจถูกฟอร์แมตโดยไม่รู้ตัว

USSD หรือ Unstructured Supplementary Service Data เป็นโพรโตคอลที่โทรศัพท์มือถือใช้ในการส่งข้อมูลเพื่อติดต่อกับผู้ให้บริการเครือข่ายโทรศัพท์มือถือ เพื่อขอใช้บริการบางอย่างอัตโนมัติ เช่น สมัครใช้บริการเสริม ขอรับส่วนลดการซื้อสินค้า ตรวจสอบยอดเงินคงเหลือ หรือแม้กระทั่งดาวน์โหลดเพลง เป็นต้น ลักษณะรูปแบบของ USSD โดยทั่วไปจะประกอบด้วยเครื่องหมาย * # และตัวเลขผสมกัน เช่น *545# เป็นต้น ในโทรศัพท์มือถือบางรุ่นสามารถใช้ USSD เพื่อเรียกฟังก์ชันพิเศษของโทรศัพท์ เช่น กด *#06# เพื่อตรวจสอบหมายเลข IMEI ของเครื่อง หรือแม้กระทั่งสั่งให้ฟอร์แมตเครืองได้ เป็นต้น ซึ่งในบางคำสั่งจะมีผลทันทีหลังจากกดตัวอักษรสุดท้ายของคำสั่ง โดยไม่จำเป็นต้องกดโทรออก


ผลกระทบที่เกิดขึ้นนั้น สามารถทำให้ผู้โจมตีสามารถส่งคำสั่งให้ทำงานในโทรศัพท์ของเหยื่อได้ด้วยวิธีการที่หลากหลาย เช่น การสร้าง QRCode การส่งผ่าน NFC (Near Field Communication) เป็นต้น ซึ่งที่จริงแล้วเทคนิคนี้ผมเคยเขียนไว้ในบทความเรื่อง แนวโน้มภัยร้ายเกี่ยวกับบาร์โค้ด 2 มิติ เมื่อปี 2549 (เก่าเหมือนกันนะ)ถ้าหากมีผู้ไม่หวังดีสร้าง QRCode ด้วยชุดคำสั่งให้ฟอร์แมตเครื่อง จากนั้นก็ส่งมาเชื้อเชิญให้เหยื่อหลงเชื่อและสแกน จากนั้นโทรศัพท์มือถือของเหยื่อก็จะเรียกใช้งานคำสั่งนั้นทันที ทำให้เครื่องโทรศัพท์มือถือถูกฟอร์แมตด้วย


วิธีการทดสอบ
รูปที่ 1 แสดง QRCode จะทำให้โทรศัพท์แอนดรอยด์ที่มีช่องโหว่จะแสดงเลข IMEI
*** หมายเหตุ รูปบาร์โค้ดนี้เพียงแค่ให้แสดงค่า IMEI เท่านั้น (ไม่มีอันตราย) และจะต้องเป็นรูปที่อยู่ในเว็บนี้เท่านั้น เพื่อป้องกันการแอบอ้างและหลอกให้รันคำสั่งได้ ***
  1. เปิดโปรแกรมสำหรับอ่าน QRCode แล้วอ่าน QRCode ดังรูปที่ 1
  2. ถ้าหากว่าโปรแกรมอ่านได้ค่า IMEI แสดงว่าโทรศัพท์แอนดรอยด์ของท่านมีช่องโหว่

วิธีการแก้ไข สำหรับโทรศัพท์แอนดรอยด์ที่มีช่องโหว่ มี 3 วิธีคือ
รูปที่ 2 แสดงผลการอ่านบาร์โค้ดหลังจากติดตั้งโปรแกรม Dialer One
  1. อัพเดตเฟิร์มแวร์ของโทรศัพท์มือถือ
  2. ติดตั้งแอพสำหรับช่วยในการโทรศัพท์เพิ่มเติม เช่น Dialer One โดยค้นหาโปรแกรมดังกล่าวนี้จาก Play Store เพื่อป้องกันการหมุนอัตโนมัติ ซึ่งส่งผลให้คำสั่ง USSD ไม่สามารถรันได้ทันที ดังรูปที่ 2
  3. ปรับแต่งที่โปรแกรมสำหรับอ่าน QRCode เพื่อไม่ให้เปิดเว็บหรือหมุนโทรศัพท์ออกอัตโนมัติ

เอกสารอ้างอิง
  1. https://www.hkcert.org/my_url/en/blog/12092801
  2. https://mobileforensics.wordpress.com/2008/07/17/phone-codes/
  3. https://dylanreeve.posterous.com/remote-ussd-attack

Monday, September 24, 2012

คำแนะนำในการใช้งานเครือข่ายไร้สายสาธารณะอย่างปลอดภัย

*** หมายเหตุ บทความนี้เขียนจากความเห็นส่วนตัว ***

จากข่าวแผนการเปิดให้บริการเครือข่ายไร้สายสาธารณะนั้น ทำให้ผมมานั่งคิดถึงจุดอ่อนที่จะทำให้ผู้ใช้อย่างเรานี้กลายเป็นเหยื่อของเหล่าร้ายแห่งโลกไซเบอร์ได้หลากหลายรูปแบบเลย ดังนั้นผมจึงเขียนบทความนี้ขึ้นเพื่อแนะนำวิธีการสังเกตและปฏิบัติตัวขณะใช้บริการเครือข่ายไร้สายสาธารณะ

ขึ้นชื่อว่าเป็นเครือข่ายไร้สาย ข้อมูลถูกส่งอยู่ในอากาศ ดังนั้นใครๆก็สามารถจะเข้าถึงข้อมูลที่เราส่งได้อย่างง่ายดาย ซึ่งวิธีการโจมตี ล่อลวง ขโมย ข้อมูลส่วนบุคคลของเรานั้น สามารถทำได้หลายวิธี ผมขอยกตัวอย่างการโจมตีของเหล่าร้ายเพียงส่วนหนึ่งเท่านั้นนะครับ

  1. การตั้งจุดเชื่อมต่อกระจายสัญญาณเครือข่ายไร้สายปลอม หรือการปลอม Access point หากเราลองเปิดค้นหาสัญญาณไวไฟในที่สาธารณะ เราจะพบรายชื่อของจุดเชื่อมต่อกระจายสัญญาณไวไฟเยอะแยะมากมาย อาจจะเป็นของผู้ให้บริการทางโทรคมนาคม ร้านค้า ร้านกาแฟ ห้างสรรพสินค้า หรือแม้กระทั่งสมาร์ทโฟนที่สามารถใช้กระจายสัญญาณไวไฟได้ เป็นต้น แต่รายชื่อที่เราค้นพบตอนเราค้นหาสัญญาณนั้นไม่ได้การันตีได้ว่าจุดเชื่อมต่อกระจายสัญญาณไวไฟนี้จะเป็นของจริง เพราะไม่ว่าใครก็สามารถตั้งชื่อเป็นอะไรก็ได้ และแน่นอนว่าถ้าผู้ร้ายอยากได้ข้อมูลของเรา ก็ต้องปลอมชื่อจุดกระจายสัญญาณไวไฟให้เหมือนกับผู้ให้บริการทั่วไป หลอกเหยื่อจนตายใจและเชื่อมต่ออีกด้วย ปัญหาต่อมาเมื่อเราอยู่ในระบบเครือข่ายเดียวกันกับเหล่าร้ายแล้ว คนเหล่านี้สามารถจะสแกนหาช่องโหว่และเจาะระบบที่เครื่องของเรา เพื่อขโมยข้อมูลความลับของเราก็ได้
  2. การดักจับข้อมูลที่ถูกส่ง อย่างที่ทราบกันอยู่แล้วว่าข้อมูลที่ถูกส่งในเครือข่ายไร้สายทั่วไปนั้น ทุกคนสามารถเข้าถึงได้ ทำให้คนร้ายสามารถรู้ได้ว่าเราหรือเหยื่อคนอื่นกำลังใช้งานอะไรบนระบบอินเทอร์เน็ตอยู่ บางคนอาจจะเล่นเฟซบุค ส่งอีเมล์ แช็ต(Chat) หรือแม้กระทั่งหากเราส่งข้อมูลที่เป็นความลับ ตัวอย่างเช่น เรากำลังทำธุรกรรมการเงินกับธนาคารผ่านระบบอินเทอร์เน็ต เป็นต้น คนร้ายก็อาจจะดักเพื่อจะดูว่ามีใครทำอะไรอยู่ แล้วมีใครที่ส่งข้อมูลโดยไม่เข้ารหัสหรือไม่ ถ้าไม่เข้ารหัสไว้ คนร้ายก็สามารถจะดูและอ่านข้อความลับของเราได้ด้วย
  3. การดักรหัสผ่าน รหัสผ่านเป็นสิ่งที่สำคัญที่นิยมใช้แสดงความเป็นตัวตน ดังนั้นการขโมยรหัสผ่านจึงการโจมตีที่เหล่าร้ายนิยมทำกันอย่างมาก วิธีการที่เหล่าร้ายจะขโมยรหัสผ่านของเราก็มีหลายวิธี แต่วิธีที่ทำให้เหยื่อรู้ตัวยากที่สุดคือการแอบมาอยู่ระหว่างกลางการส่งข้อมูล หรือที่เรียกว่า "Man in the Middle" และใช้วิธี SSLStip เพื่อถอดฟังก์ชั่นการเข้ารหัสของเว็บนั้นออก (เปลี่ยนจาก HTTPS เป็น HTTP นั่นเอง)    หรืออีกวิธีเหล่าร้ายจะส่ง certification ปลอมมาให้ เพื่อหลอกว่าเรากำลังเชื่อมต่อกับเว็บด้วย HTTPS แต่เราไม่ได้สังเกตเลยว่าคีย์ที่ใช้ในการเข้ารหัสข้อมูลนั้นได้มาจากเหล่าร้าย ซึ่งแน่นอนครับว่าเหล่าร้ายสามารถถอดรหัสและดูข้อมูลของเราได้

จากที่ยกตัวอย่างมานั้นเป็นเพียงตัวอย่างการโจมตีต่อข้อมูลของเราผ่านเครือข่ายไร้สายสาธารณะ ในส่วนต่อไป ผมอยากแนะนำวิธีการใช้งานระบบเครือข่ายไร้สายอย่างปลอดภัยดังต่อไปนี้
  1. พึงระลึกไว้เสมอว่าไม่มีที่ไหนปลอดภัย ถ้าหากต้องการทำใช้งานอินเทอร์เน็ตที่มีความสำคัญมาก เช่นทำธุรกรรมบนอินเทอร์เน็ต ส่งเอกสารลับ ฯลฯ ให้หลีกเลี่ยงการใช้งานในเครือข่ายไร้สายสาธารณะ ให้กลับมาใช้งานอินเทอร์เน็ตจากที่บ้าน หรืออย่างน้อยให้ต่ออินเทอร์เน็ตจากโทรศัพท์มือถือของตนเอง
  2. พิจารณาชื่อจุดเชื่อมต่อกระจายสัญญาณที่พบ เมื่อต้องการใช้งานระบบเครือข่ายไร้สายสาธารณะแล้วก็จำเป็นจะต้องรู้จักชื่อจุดเชื่อมต่อกระจายสัญญาณที่พบ และสังเกตชื่อดีๆ อาจจะถามจากผู้ให้บริการก็ได้ อย่างไรก็ตามเหล่าร้ายก็อาจจะปลอมชื่อจุดเชื่อมต่อกระจายสัญญาณก็ได้
  3. เมื่อเลิกใช้งานให้ลบรายชื่อจุดเชื่อมต่อกระจายสัญญาณทิ้ง หลังจากหยุดเชื่อมต่อเครือข่ายไร้สาย ให้ลบรายชื่อจุดเชื่อมต่อกระจายสัญญาณออกจากเครื่อง เพื่อป้องกันไม่ให้เครื่องคอมพิวเตอร์ของเรานั้นเชื่อมต่อโดยอัตโนมัติ เนื่องจากถ้าหากเราอยู่ในบริเวณที่มีจุดเชื่อมต่อกระจายสัญญาณปลอม (ใช้ชื่อเดียวกับจุดเชื่อมต่อที่เราบันทึกไว้ก่อนหน้านี้แล้ว) เครื่องจะเชื่อมต่อทันที และมีความเสี่ยงที่เราจะถูกแอบดักขโมยข้อมูลด้วย
  4. เลือกใหม่ทุกครั้งเมื่อต้องการเชื่อมต่อกับจุดเชื่อมต่อกระจายสัญญาณเดิม ทุกครั้งที่ต้องการเชื่อมต่อเครือข่ายไร้สาย ให้สังเกตดูว่าเป็นสิ่งผิดปกติหรือไม่ เช่นการเข้ารหัสเหมือนเดิมหรือไม่ (WEP หรือ WPA) เป็นต้น ถ้าหากไม่มีความผิดปกติ ก็ให้เลือกเชื่อมต่อด้วยตัวเองทุกครั้ง
  5. ไม่บันทึกรหัสผ่านหรือเปิดให้เข้าสู่ระบบในเว็บไซต์อย่างอัตโนมัติ เนื่องจากหากเราบันทึกรหัสผ่านสำหรับการเข้าสู่ระบบไว้ เมื่อเราเปิดหน้าเว็บนั้นขึ้นมา ข้อมูลการเข้าสู่ระบบของเราจะถูกส่งออกจากเครื่องโดยทันที หากเราหลงเชื่อมต่อเครือข่ายไร้สายของผู้ไม่หวังดี จะทำให้เขาสามารถได้ข้อมูลการเข้าสู่ระบบของเราได้อย่างง่ายดาย
  6. เลือกเข้าเว็บไซต์ที่มีการเข้ารหัส (สังเกตจากชื่อเว็บไซต์ว่าต้องมี "HTTPS" หรือมีรูปแม่กุญแจล็อก) หรือติดตั้งโปรแกรมเสริมชื่อ "HTTPS Everywhere" บน Firefox และ Chrome (ดาวน์โหลดได้จาก https://www.eff.org/https-everywhere
  7. ติดตั้งโปรแกรมป้องกันไวรัสและอัพเดตสม่ำเสมอ
  8. อัพเดตระบบปฏิบัติการและซอฟต์แวร์ที่ใช้อย่างสม่ำเสมอ
  9. ปิดการแชร์ไฟล์ เนื่องจากเมื่อเชื่อมต่อเครือข่ายไร้สายแล้ว ก็ทำให้เครื่องคอมพิวเตอร์ที่เชื่อมต่อกับเครือข่ายไร้สายเดียวกันกับเรานั้นสามารถมองเห็นเครื่องของเราได้ ถ้าหากเปิดแชร์ไฟล์ไว้ ก็อาจทำให้ผู้ไม่หวังดี ได้ข้อมูลของเราไปโดยง่าย
  10. เปิดไฟร์วอลล์ของเครื่อง โดยการเข้าไปใน Control Panel เลือก System and Security จากนั้นเลือก Windows Firewall ตามรูป
ส่วนเสริม
สำหรับคนที่เปิดใช้เครือข่ายไร้สายที่บ้าน ควรตั้งระดับความปลอดภัยของการเข้ารหัสข้อมูลที่จุดเชื่อมต่อกระจายสัญญาณให้เป็น WPA2 เท่านั้น (ห้ามใช้ OPEN หรือ WEP) เพื่อป้องกันการแอบถอดรหัสเพื่อดักฟังข้อมูล