Friday, January 17, 2014

ช่องโหว่แบบ "full disclosure" ของ router ZYXEL และ TP-Link

[แบบ สั้นๆ]

มีการเจอบัคใน firmware ของ ZynOS (ZyXEL Communications Corporation)
ซึ่ง Router ที่ใช้ firmware นี้อยู่ ส่วนใหญ่ก็คือของยี่ห้อ ZyXEL และ TP-Link (บางตัว)
(ส่วนมากแถมกับคนที่ขอติดเน็ตบ้าน TOT, 3BB, True)

ผลคือสามารถเข้าไปเอาไฟล์ rom-0 ซึ่งเป็น Config Router ได้
ซึ่งเมื่อทำการ Reverse Engineering ไฟล์ rom-0 ก็จะได้ข้อมูลมาทั้งดุ้น
เช่น user-pass wifi, user-pass net,user-pass login, NAT, dyndns, ฯลฯ

วิธีเช็ค
เข้าที่ http://<ip เร้าเตอร์>/rom-0 ( เช่น http://192.168.1.1/rom-0 )
ถ้าโหลดไฟล์ rom-0 มาได้โดยไม่ถาม User Password แสดงว่ามีช่องโหว่ครับ (ควรอ่านแบบยาวต่ออย่างยิ่ง)




[แบบยาวๆ]

*ศัพท์ด้านล่าง
ถ้าใครอ่านแล้วงง แนะนำให้อ่าน http://blog.stephack.com/2012/06/blog-post.html ก่อนนะครับ

เนื่องจากมีข่าวช่องโหว่แบบ "full disclosure" ของ router ZYXEL
ออกมาใน the hackernews ทำให้ เข้าถึงไฟล์ rom-0 ได้เลย .. โดยไม่ต้อง login
(อ้างอิงข่าวนี้ http://thehackernews.com/2014/01/TP-LINK-Routers-password-hacking.html)

ซึ่งในข่าวก็เขียนประมาณว่า อีตา ABDELLI Nassereddine เนี้ย (ฉายาคือ MrNasro)
ได้ทำการค้นพบช่องโหว่ขึ้น และได้แจก script ลงไว้ใน GITHUB ซะด้วย
(เก่งอย่างเดียวไม่พอ ... มึงต้องว่างด้วย = ='')
และ ในตอนแรกที่เห็นข่าว ผมก็คิดว่าคงมีผลแค่กับเร้าเตอร์ ของ Algerie Telecom แหละมั้ง
แต่จากการทดสอบ คร่าวๆ ของ admin ใน กลุ่ม 2600thailand
ผลก็คือ ... นอกจากเร้าเตอร์ รุ่น TD-W8951ND ในข่าวจะมีช่องโหว่แล้ว
ไปๆมาๆ ZYXEL และ TP-Link ที่ใช้อยู่ในไทยหลายๆ รุ่นก็มีเช่นกัน

และจากที่ผมได้ทดสอบก็พบว่าช่องโหว่ของเร้าเตอร์ ในเร้าเตอร์หลายๆ รุ่น
ยังโชคดีอยู่บ้าง ที่ถึงแม้จะเอา rom-0 ออกมาและ crack ได้ก็ตาม
แต่ก็ยังไม่ได้ password ที่ใช้ในการ Login เข้าเร้าเตอร์ได้เสมอไป
แต่ก็ยังได้ pass wifi, pass net จากในนั้น

ขอแก้ไขเป็น โดนหมด นะครับ ... ดูเพิ่มใน VDO ที่ทำเพิ่มด้านล่างสุดนะครับ


ดูอธิบายเพิ่มได้จากคลิปนี้ วิธีแฮก เร้าเตอร์ TP-link, ZYXEL หลายๆ รุ่น และ วิธีป้องกัน ตอนที่ 1



ส่วนนี้ แถม แฮกเร้าเตอร์ เพื่อหา pass wifi



หมายเหตุ ...
ใน code python ที่ ABDELLI Nassereddine แจก
เขาเอา บรรทัดที่ 1 ไปใช้เป็น pass ในการ Login ทาง Telnet
สามารถอ่าน POC (proof of concept) ของช่องโหว่นี้เพิ่มเติมได้ที่
http://rootatnasro.wordpress.com/2014/01/11/how-i-saved-your-a-from-the-zynos-rom-0-attack-full-disclosure/
*มี edit หมายเหตุเพิ่มเติมด้านล่าง




==========
ทีนี้ เอาล่ะ ... ไหนๆ ก็ไหนๆ จะก็ขอ อธิบาย
1. วิธี ทดสอบว่า เร้าเตอร์ มีช่องโหว่หรือไม่
2. ผลกระทบ ที่น่าจะเกิดขึ้นถ้าไม่ป้องกันและ
3. วิธี แก้ไข และ ป้องกัน
ให้ฟังกันก่อนแล้วกัน




==========
== วิธีทดสอบ ==
เข้าลิ้ง  http://<ip เร้าเตอร์>/rom-0 ดู
ถ้า ไม่ถามพาส แต่กลับดาวโหลดไฟล์ rom-0 = "รั่ว"
ถ้า ถามพาส,ไม่เจออะไร,ไม่โหลดไฟล์ ฯลฯ = "ไม่รั่ว"
*ใครไม่รุ้ เร้าเตอร์ ip อะไร ลอง http://192.168.1.1/rom-0
หรือ เข้า cmd แล้วพิมพ์ ipconfig
หรือ กด windows + r แล้วพิมพ์ cmd /k ipconfig
แล้วดูค่าตรง Default Gateway
แล้วเอา ip ที่เห็น ... ไปเปิดดูครับ




==========
== ผลกระทบ ที่น่าจะเกิดขึ้น ==
สมมุติ คุณไป นั่งดูสาวๆ ใน camfrog
หรือ ไปทะเลาะกับคนในพันทิพย์
หรือ อยุ่ๆ มีคน scan ip class ทั้งประเทศไทย
เพื่อสะสมพาสไว้ทำ dic, หรือ ฯลฯ
(อะไรก็ตามแต่ ... ที่ทำให้มีคนได้ IP Address ของคุณไป)

คนๆ นั้น ก็จะได้ พาสเข้าเร้าเตอร์คุณ
จากนั้นเขาก็อาจจะได้ข้อมูลทั้งหมดใน เร้าเตอร์คุณ ...
(user-pass wifi, user-pass net,
user-pass login, NAT, dyndns, ฯลฯ)

ซึ่งเขาสามารถที่จะ
- ตัดเน็ตคุณเล่นๆ <ไร้สาระ แต่ เกรียนๆ ก็คงอาจจะทำ>

- ตั้ง dyndns ไว้ให้คุณเพื่อจะเก็บไว้เกรียนในภายหลังได้ <เริ่มหายนะแระ>

- เก็บ infomation ต่างๆ เช่น pass wifi, เบอร์โทร
ไปต่อยอดในการตามแฮก facebook, email,
ไปจนถึง ธุรกรรมทางการเงินคุณ (ได้อีกเยอะแยะเลย)
<หายนะ ไส้แตก เลยมั้งเนี้ย>

- หรือ แค่เบาะๆ คือ ยืมใช้ wifi คุณ(กรณีคนข้างบ้านแล้วได้ Ip คุณไป)
ไปใช้ hack web ICT, DSI, ฯลฯ
<หายนะ สัดๆ ขี้ไหล เลยนะเนี้ย>

- หรือ upload firmware เน่าๆใส่ เร้าเตอร์ของคุณ เพื่อให้เร้าเตอร์ของคุณพัง

- หรือ ตั้ง dns ให้ใหม่ เป็นเครื่องของเขา
เพื่อขโมยข้อมูลทั้งหมด ที่วิ่งเข้า-ออก ระหว่างเครื่องคุณกับเว็บที่คุณเข้า


ตัวอย่างแค่นี้พอจะมองเห็นภาพ ความหายนะ รึยังครับ ?




==========
== วิธี แก้ไข, ป้องกัน ==
วิธีแก้ไขจริงๆ คือ ต้องรอให้ ทาง ZYXEL, TP-Link
ออก patch มาอัพเดท firmware
แล้วเราค่อยอัพเดทน่ะครับ (ซึ่ง คงอีกนาน)

ดั้งนั้น ก็จะมีแค่วิธีป้องกัน (แบบบ้านๆ) เท่าที่ผมคิดได้ คือ
- เปลี่ยน port ที่จะใช้เข้า http config ของเร้าเตอร์
ไป port อื่น ที่ชอบที่ชอบ และ ไม่ได้ใช้ครับ
- ตั้งพาส ให้มั่วๆ ไม่เชื่อมโยงกับพาสที่ใช้
(ปกติผมจะใช้ keepass gen มาครับ)
[แต่ต้องทำใจนะ ว่า ถ้าไม่แพท ก็ยังโดนได้อยู่ดี]
- ตั้ง block WAN (ให้เข้าถึงได้เฉพาะจากในวง LAN)
*อ่านวิธีทำได้จากที่นี่ http://www.tp-link.us/article/?faqid=476

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






==========
== เพิ่มเติม สำหรับคนที่ พอจะมีความรู้เรื่องคอม ==
- rom-0 analyze
rom-0 คือไฟล์ที่เก็บ config ของ เร้าเตอร์ทั้งหมด
ถูก compressed ไว้โดย LZS (เหมือนเรา zip ไฟล์ไว้)
เมื่อทำการ decompress เสร็จ ก็จะเจอ string ต่างๆ ข้างในคับ
อ่านบทความเพิ่มได้ที่ http://www.hakim.ws/huawei/rom-0/kender.html
(ผมไม่แน่ใจว่าจะ ยุให้ admin ในกลุ่ม 2600 thailand มาเขียน POC หรือ how to เป็นภาษาไทยให้อ่านได้ป่าว ^^")

- LZS compressed (อันนี้ ไม่เจอ ภาษาไทยแล้วก็ไม่รุ้จะอธิบายยังไงแฮะ .. ขอก๊อบแปะเลยแล้วกัน)
You can find LZS documented in this ANSI document.
(http://masters.donntu.edu.ua/2003/fvti/boykov/library/lzs.pdf)
The format is quite simple.
A 0 bit indicates that the next eight bits are just a literal byte.
A 1 bit indicates either a string to copy from the previous data
or the end of the compressed data depending on the subsequent bits.
ะhe 1 bit is followed by an offset field of either 8 or 12 bits,
and that is followed by a length field of variable length of 2, 4, 8, 12, etc.
bits depending on the length.
Or the 1 is followed by a specific 9-bit end marker.




==========
== ทิ้งท้าย ==
- เรื่องแฮก บางครั้งมันขึ้นอยุ่กับ จินตนากาม เอ้ย จินตนาการ ล้วนๆ น่ะ
- คิดจะแฮก คิดถึง ตาเล็ก ( http://www.stephack.com/course ) [โปรโมทแป๊ป]




==========
== แก้ไขเพิ่มเติม (20/01/2014) ==
พาสจริงๆ อยู่ที่ offset 0x14 นะครับ (max password length = 0x1d)
นั่นหมายความว่า ที่มีคนมาบอกว่า
"ตั้งพาสเป็นอักษรไทยแล้วจะรอด" ... นั่นผิดนะครับ ( ตั้งภาษาไหนๆ ก็ยังโดนครับ )
dd bs=1 skip=20 count=29 if=rom-0.decomp 2>/dev/null | strings -1 | head -1

ขอบคุณ ตาเอ ที่ทักเรื่อง password ครับ
(คนนี้มหาเมพของแท้ //ส่วนผมแค่เศษครับ T_T)

ดังนั้น ถ้าโหลด ไฟล์ rom-0 ได้ ... นั่นแปลว่า มีโอกาศโดนแฮกหมดใส้หมดพุงครับผม T^T


คลิป อธิบายเพิ่มเติม
วิธีแฮก เร้าเตอร์ TP-link, ZYXEL หลายๆ รุ่น และ วิธีป้องกัน ตอนที่ 2 (แก้ไขข้อมูลที่อธิบายผิดไว้ในตอนที่ 1)



//สงสัยตรงไหน ถามเพิ่มได้ที่ fanpage นะครับ

No comments:

Why You Don't LIKE My FaceBook Fanpage ?
×
blogger