Pages

3/19/2013

Use Tunneling To Bypass Wifi Authentication

(ภาพจาก http://wallpaperwise.com/Blue_Binary_Matrix_Tunnel-3361.html)

เมื่อหลายวันก่อน  มีคนพูดถึงวิธีการใช้ UDP Tunneling ในการ bypass Wireless Authentication ที่เปิดให้เข้าแบบไม่มีรหัสผ่านตอน connect (Open System) แต่พอเข้าไปได้แล้วจะเข้าเว็บ จะเด้งเข้าหน้าให้ล็อคอิน

ถ้าพูดเป็นภาษาง่ายๆ ก็คือ เวลาเราไปต่อ wifi ที่ไหน แล้วมันให้เข้าไปได้แต่จะมีหน้าให้กรอก username และ password

โดยปกติ ถ้าไปถึงหน้านี้แล้ว แต่ไม่มี username และ password ก็จะไม่สามารถใช้อินเตอร์เน็ตได้

แต่ว่า  สำหรับ Wifi บางระบบ ที่ไม่ได้ตั้งค่ามาดีๆ เราจะสามารถออกเน็ตได้ โดยไม่จำเป็นต้องรู้ username และ password เลย

คือโดยส่วนมาก ทางผู้ติดตั้งระบบ จะป้องกันไม่ให้เราเข้าเว็บอะไรอย่างอื่นได้  ถ้าอยากเข้าเว็บจะต้องมาทำการล็อคอินก่อน

ซึ่งวิธีตรวจสอบว่าเรากำลังจะเข้าเว็บอะไรหรือเปล่า  ระบบจะตรวจสอบโดยการเช็คว่า เรากำลังจะติดต่อ server บน internet ที่ port 80 หรือเปล่า?

* port 80 คือ ช่องทางมาตรฐานที่ใช้ในการติดต่อแบบ HTTP
** การที่เราเข้าเว็บด้วยการใช้ http:// นำหน้า โดยทั่วไปจะหมายถึง การติดต่อด้วย HTTP protocol โดยใช้ port มาตรฐานคือ port หมายเลข 80

ดังนั้น ถ้าเราติดต่อ server ที่ port อื่นล่ะ ??

1. HTTPS


จริงๆ แล้ว เราสามารถเข้าเว็บด้วยอีกช่องทางนึงคือ การเปลี่ยนไปติดต่อกับ server ด้วยมาตรฐาน HTTPS ซึ่งทำงานบน TCP port 443  ผลลัพธ์ที่ได้คือ นอกจากจะเปิดเว็บได้ตามปกติอย่างที่ HTTP ทำแล้ว เรายังไม่ต้องติดตั้งอะไรเพิ่มไปจากเดิมด้วยเพราะ web browser แทบทุกตัว (Internet Explorer, Chrome, Firefox, Safari, ...) รองรับการเปิดเว็บแบบ HTTPS อยู่แล้ว  แถมการใช้ HTTPS ยังเพิ่มระบบความปลอดภัยเข้าไปอีกด้วย (HTTPS มาจากคำว่า HTTP Secure)

และอีกเหตุผลที่สำคัญคือ การย้ายไปใช้ HTTPS ที่ port 443 เป็นการใช้ port หมายเลขอื่นที่ไม่ใช่หมายเลข 80 ซึ่งส่วนใหญ่ถูกบล็อคเอาไว้ ก็จะทำให้เราติดต่อไปหา server ได้  โดยไม่ต้องกรอก username และ password เลย

การใช้ HTTPS ดูเหมือนจะมีข้อจำกัดอย่างนึงว่า เครื่อง server ที่รอรับปลายทางจะต้องเปิดรองรับการติดต่อด้วย HTTPS (ผ่าน port 443) ด้วย  ยกตัวอย่างระบบที่ใช้ได้ เช่น https://www.facebook.com , https://www.google.com , https://www.twitter.com เป็นต้น

ส่วนเครื่อง server ไหนไม่รองรับ  ถ้าเราติดต่อเข้าไป ก็จะพบว่า หน้าตาจะเป็นเช่นนี้


จะเห็นว่า ถ้าต่อด้วย http:// ปกติ (ติดต่อ server ที่ port 80)  server มีการตอบสนองได้ปกติ แต่ว่า ถ้าใช้ https:// (ติดต่อ server ที่ port 443) จะไม่สามารถเปิดได้  แสดงว่า  เว็บนี้รองรับแค่ HTTP อย่างเดียวเท่านั้น

(ป.ล. อาจจะแก้ได้ด้วยการใช้ "HTTPS Everywhere" อันนี้ไม่แน่ใจ เพราะยังไม่ได้ลอง)

2. UDP


Wifi บางระบบ อาจจะตั้งให้บล็อคการติดต่อออกไปหา server ข้างนอกที่ใช้ TCP ทั้งหมด  ซึ่งมันเป็นวิธีที่ค่อนข้างมีเหตุผล เนื่องจากการติดต่อส่วนใหญ่ระหว่าง client กับ server มักจะเลือกใช้ TCP protocol เกือบทั้งหมด เช่น การเปิดหน้าเว็บ (HTTP, HTTPS) , การเช็ค email (POP3, SMTP, IMAP), การแช็ต(MSN, Line, Whatsapp) และอีก ฯลฯ  ล้วนแต่ใช้ TCP ทั้งสิ้น

แต่ว่า  ก็อย่าลืมว่า เรายังมีอีกหลายระบบที่ใช้ UDP เช่น ระบบตั้งเวลา(NTP,SNTP), การดูข้อมูลสถานะของอุปกรณ์ต่างๆในระบบ(SNMP), การส่งไฟล์ (TFTP), การแปลงชื่อโดเมนเป็นหมายเลขไอพี (DNS), และอีก ฯลฯ เช่นกัน

ดังนั้น ถ้าเกิดระบบมีการป้องกันเฉพาะการใช้งาน TCP ทั้งหมด ซึ่งจะทำให้เข้าเว็บแบบปกติ (HTTP) และเข้าแบบ HTTPS ไม่ได้แล้ว  ก็หันมาใช้เข้าเว็บแบบ UDP ก็จะได้อยู่นะ ^_^

แต่ปัญหาหลักก็คือ... เว็บหรือบริการส่วนใหญ่ เขาจะเปิด server ที่รองรับไว้แต่ TCP นี่สิ  ให้เรายิงข้อมูล UDP ไปเท่าไหร่ ต่อให้มันทะลุผ่านการป้องกันไปหา server ได้โดยตรง แต่ server ไม่ได้รอรับข้อมูลที่ port นั้น ก็จะไม่ได้หยิบข้อมูลนั้นเอาไปประมวลผล มันก็ไร้ประโยชน์

ด้วยการนี้  เลยทำให้เราจำเป็นจะต้องมี proxy server ตัวกลางของเรา (อาจจะตั้งไว้ที่บ้าน หรือที่ทำงาน หรือที่อื่นๆ ที่สามารถต่อเน็ตได้ และได้ IP จริง) เพื่อทำการรอรับข้อมูลแบบ UDP จากเรา (ที่กำลังอยู่ใน wifi ที่ไม่มีล็อคอิน) แปลงข้อมูล แล้วนำไปทำการติดต่อกับ server ปลายทางด้วย TCP แบบที่ต้องการ  และเมื่อได้ข้อมูลจาก server ปลายทางแล้ว ตัวกลางตัวนี้ จะต้องทำหน้าที่แปลงข้อมูลนั้น ให้อยู่ในรูปแบบ UDP แล้วส่งกลับมาหาเราได้ด้วย

 .... ซึ่ง .... เริ่มยุ่งยากละ


จากรูป เวลาส่งข้อมูลไปหา server ปลายทางตามแนวคิดนี้จะส่งข้อมูลแบบนี้ ซึ่งจำเป็นอย่างมากที่เราจะต้องมี proxy server เป็นตัวกลางที่จะทำการแปลง UDP ไปเป็น TCP เพื่อติดต่อกับ server ปลายทาง และจะขากลับ ก็จะต้องแปลง TCP ไปเป็น UDP และส่งกลับไปเส้นทางเดิม

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

ถ้าเราเลือกแล้วว่าเราจะอยากจะใช้ระบบแบบนี้  จะต้องทำยังไงบ้าง?

...ขอแนะนำ ให้ใช้การส่งข้อมูลแบบ DNS (UDP port 53)

เพราะว่า DNS ซึ่งเป็นระบบที่ใช้ในการแปลงชื่อโดเมน(เช่น google.com) ให้กลายเป็นหมายเลขไอพี(เช่น 113.21.241.24) เรียกได้ว่า เป็นระบบพื้นฐานสำหรับเน็ตเวิร์คที่ติดต่อไปหาอินเตอร์เน็ตได้จำเป็นต้องมี

ไม่เช่นนั้น คนที่เข้าเล่นอินเตอร์เน็ตจาก Wifi วงนั้นจะไม่สามารถเปิดเว็บต่างๆด้วยชื่อได้เลย  จำเป็นจะต้องกรอกด้วยไอพีอย่างเดียว ยกตัวอย่าง เช่น ถ้าต้องการเข้า Google.com แต่ว่าเราไม่มีระบบแปลง IP ให้ เลยจำเป็นต้องจำว่า google.com มี IP (ค่านึงจากหลายๆค่า) เป็น 113.21.241.24  และเวลาที่จะเข้า Google ก็จะต้องกรอก http://113.21.241.24 แต่ละครั้ง มันจะทรมาณแค่ไหน

ความน่าจะเป็นไปได้อีกอย่างคือ ในระบบการล็อคอินเข้าใช้เน็ตของ Wifi นั้น  บางทีหน้าที่ใช้ในการล็อคอิน  ก็ยังใช้ชื่อโดเมนที่จะต้องเอาไปแปลงเป็นไอพีก่อนถึงจะเปิดหน้านั้นได้

สรุปแล้ว จึงมีโอกาสสูง ที่ระบบ Wifi  จะ ไม่มีการบล็อคการใช้งาน DNS ในระบบ

ส่วนจะมีเครื่องมืออะไรบ้าง ขออ้างอิงจาก https://groups.google.com/forum/?fromgroups=#!topic/wimax-hacking/JYCdbsz7X0U ละกัน

โดยหลักๆ จะมี

ไม่ลงรายละเอียดละกันเดี๋ยวจะยาว  (จริงๆแค่นี้ก็ยาวมากละ)

3. ICMP


ICMP ย่อมาจาก Internet Control Message Protocol ซึ่งเป็น Protocol ที่แตกต่างกับ TCP และ UDP โดยที่มันอยู่คนละชั้นกันเลยกับ TCP และ UDP เมื่อเทียบกับ OSI model  โดยหน้าที่หลักของ ICMP คือเอาไว้ใช้ตรวจสอบการติดต่อกันของระบบเน็ตเวิร์ค  โดย ตัวอย่างที่เห็นกันบ่อยก็คือ การใช้คำสั่ง ping ที่เอาไว้เช็คว่าเครื่องปลายทางตอบสนองกลับมาช้าเร็วเท่าไหร่  ซึ่ง ping ก็ใช้ ICMP ในการทำงานด้วย

ดังนั้น ถ้าเราจะทำแบบเดิมที่ทำบน UDP แต่มาใช้ ICMP แทน ก็ทำได้เหมือนกัน  อาจจะดีกว่าด้วยตรงที่ว่า ICMP มีโอกาสที่ผู้ดูแลระบบจะไม่ได้บล็อคมากกว่า DNS (เนื่องจากผู้ดูแลระบบก็อาจจะใช้ ICMP เองด้วย เลยบล็อคไม่ได้)


ส่วนลิสต์ของโปรแกรมที่ใช้ทำ ICMP Tunnel (นำมาจาก http://en.wikipedia.org/wiki/ICMP_tunnel) ก็จะมี

สรุป

ในระบบอินเตอร์เน็ตไร้สาย ที่มีการตั้งค่าไว้ไม่ดีพอ อาจจะสามารถทำการ by-pass ออกไปสู่อินเตอร์เน็ตได้ในหลายช่องทาง  โดยสรุปคือ

  1. ติดต่อออกทาง TCP port เช่น ใช้ HTTPS ในการเปิดเข้าเว็บต่างๆ ที่ให้บริการแบบ HTTPS อยู่แล้ว
    • ข้อดี: ใช้งานง่าย, ไม่ต้องติดตั้งโปรแกรมเพิ่มเติม, เว็บไซต์ดังๆมักจะรองรับการใช้งานแบบ HTTPS อยู่แล้ว
    • ข้อเสีย: ไม่ใช่ทุกเว็บไซต์จะรองรับการเข้าแบบ HTTPS, ระบบ wifi มักจะป้องกันไ่ม่ให้เข้าถึงอินเตอร์เน็ตทาง TCP ทุก port
  2. ติดต่อออกทาง UDP port เช่น การใช้ DNS Tunneling เพื่อไปออกที่ proxy server ก่อน แล้วจึงให้ proxy server ทำการติดต่อแบบ TCP ไปหาเว็บปลายทางให้แทน
    • ข้อดี: ทะลุการป้องกันในระบบที่ห้ามใช้ TCP ทั้งหมดได้, DNS ค่อนข้างที่จะเป็นช่องทางที่มักเปิดไว้อยู่แล้วในระบบที่ออกเน็ตได้
    • ข้อเสีย: จำเป็นจะต้องมี proxy server ที่จะทำการแปลงไปกลับระหว่าง UDP และ TCP ให้ (ซึ่งส่วนใหญ่ proxy server ทั่วไปไม่เป็นแบบนี้), จะต้องมี public IP และ domain name ของ proxy server เครื่องนั้น, จะต้องทำการตั้งค่าหลายอย่างซึ่งทำให้ยุ่งยาก, ไม่สามารถใช้บนเครื่องผู้ใช้ได้ทันที จะต้องทำการติดตั้งโปรแกรมเพิ่มเติมก่อน
  3. ติดต่อออกทาง ICMP port
    • ข้อดี: ต่อให้ป้องกันทั้ง TCP และ UDP แต่มักจะไม่ป้องกันการใช้ ICMP เนื่องจากว่าผู้ดูแลระบบยังจำเป็นที่จะต้องใช้ ICMP ในเครื่องมือที่ใช้ดูแลระบบอยู่
    • ข้อเสีย: (เหมือนข้อเสียของ UDP ทุกอย่าง)


2 comments:

  1. Both flash drives and wifi detectors are commonly used computer accessories. It's especially handy to keep these things together, since the customer might use them both at the same time.
    downloadshareitapp.com

    ReplyDelete