ม่ะจะเล่าให้ฟัง เรื่อง "การแฮ็ก wireless เมาส์และคีย์บอร์ดระยะไกลด้วยอุปกรณ์ราคา 35 บาท"
***เริ่มด้วยเรื่องที่ว่าไปเห็นคลิปในเรื่องการแกล้งคนอื่นด้วยการแอบไปเสียบ wireless คีย์บอร์ดไว้ในเครื่องคนอื่นแล้วแอบกวนโดยการ กด จากระยะไกลโดยที่เจ้าของไม่รู้ (ลองค้นดู wireless keyboard prank) เลยคิดว่าเฮ้ย จริงๆ มันน่าจะมีวิธีในการดักจับสัญญาณจากอุปกรณ์พวกนี้ได้และถอดรหัสออกมา เป็นการดักการกดคีย์บอร์ดหรือเมาส์ หรือหากล้ำไปกว่านั้น ถ้าเราสามารถรู้การเข้ารหัสของมันก็สามารถส่งข้อมูลไปยังเครื่องเป้าหมายสั่งคลิก สั่งพิมพ์คีย์บอร์ดเพื่อรันคำสั่งอันตรายจากระยะไกลได้ พอเอาเรื่องนี้ไปค้นก็พบว่ามันก็มีจริง ๆ
*** โปรเจคนี้ชื่อ mousejack [ref 1] เป็นการใช้ชิป NRF24L01+/NRF24LU1+ ดักและถอดคีย์การส่งข้อมูล ซึ่งชิปตัวนี้ส่งข้อมูล 2.4GHz ถูกใช้กันอย่างแพร่หลายในหลาย ๆ อุปกรณ์รวมไปถึงเมาส์/คีบอร์ดจาก Microsoft และ Logitech (ในบางรุ่น) และที่สำคัญราคาถูกหาซื้อได้ทั่วไปในราคา 35 บาทไทย
*** หลักการก็ง่าย ๆ เลย แค่เราเปิดโหมด Listening (จะเรียก promiscuous ก็ตามแต่)ในชิปนี้ แล้วสแกนหา channel ที่ตัวส่งกับตัวรับคุยกัน จากนั้นก็ตั้งอุปกรณ์เราให้ตรงกันก็สามารถดัก raw packet ได้แล้ว ต่อมาเราจะทำการถอดรหัส จากนั้นก็เอามาปลอมคำสั่งในการกดของเรา แล้วเปลี่ยนเป็นโหมดส่ง ยิงคำสั่งไปยังเป้าหมายแทน เป็นอันเสร็จพิธี
*** จากที่ผมทดลองทำดูโดยงัดเมาส์ Logitech MT570 ดูก็พบว่าข้างในใช้ชิป NRF24L01 นี้จริง ๆ ด้วย (ภาพ 2-3) ต่อมาก็ทดลองโหลดโค้ดจาก github (ไปหาโค้ดเอาเองนะคงไม่ยากเกินไปมี keywords แล้ว) แล้วเอา Arduino ต่อเข้ากับ NRF24L01 [ภาพ 4] เพื่อลองสแกนและดักก็พบมี packet ของเมาส์วิ่งไปมาขณะที่ขยับเมาส์ [ภาพ 5] และสามารถถอดรหัสและ "ส่งคำสั่งการคลิกซ้ายขวาสกรอได้หมดด้วย Arduino" ความแสบของโค้ดนี้คือมันมีคำสั่งคอมไพล์ ducky script ฝังไปใน โค้ด arduino firmware ด้วย ซึ่งเมื่อประมาณ 4-5 ปีก่อนมั้ง เคยเขียน ducky script ไปฝังใส่ใน BadUsb แค่คำสั่งกดคีย์บอร์ดเนี่ยสามารถเปิด Powershell โหลดโปรแกรมแกะรหัสที่บันที่ไว้ใน Chrome, IE, Firefox แล้วส่งรหัสมาทางเมล์+สั่งเปิด Remote desktop สร้าง admin user ฝังไว้ ยังทำมาแล้ว มาคราวนี้ไม่ต้องเดินไปเสียบ BadUsb แต่สามารถสั่งการจากระยะไกลได้ ...!!! (แต่ต้องให้เจ้าของคอมเผลอก่อนนะ ค่อยทำ ไม่งั้น...) และที่เจ๋งกว่านั้นก็มีคือถ้าไม่อยากซื้อ NRF24L01 เราสามารถใส่ firmware ใหม่ใส่ USB dongle ของ Logitech ให้มันเปลี่ยนเป็นตัวดักข้อมูลและส่งสัญญาณได้ (ข้างในเป็น NRF24LU1+ รุ่นนี้ต่อ usb ได้ ส่วนรุ่นอื่นต้องต่อ SPI เข้ากับ uC) พูดง่ายๆคือ จากตัวรับสัญญาณ ถ้าจะ hack ใคร เราก็เปลี่ยนให้เป็นตัวส่งซะ แฮกเสร็จก็ปรับให้เป็นตัวรับสัญญาณเมาส์เหมือนเดิม เนียนม่ะ 555++
***สุดท้ายแล้วก็ยังมีความโชคดีอยู่บ้าง ที่เราสามารถอัพ firmware Logitech ใหม่เพื่อป้องกันช่องโหว่นี้ได้ และส่วนใหญ่น่าจะใช้เมาส์คีย์บอร์ดแบบสาย หรือไม่ก็ใช้ oker, nubwo จากจีนกัน ซึ่งอย่าว่าแต่แกะโปรโตคอลสื่อสารเลย ขนาดชิปมันใช้เบอร์อะไรยังไม่รู้ 55++ ...แต่อนาคตก็ไม่แน่จริงม่ะ ... ถ้าเห็นว่ามีประโยชน์ก็แชร์กันได้นะครับ ^^ บทความนี้ส่งท้ายปีใหม่ละกันเพราะจะกลับบ้านแล้ว
สวัสดีปีใหม่ ขอให้คุณพระศรีคุ้มครองพระรัตนตรัย กลับบ้านเดินทางโดยถนนมิตรภาพครับ
[ref 1] slide จากงาน defcon https://media.defcon.org/…/DEFCON-24-Marc-Newlin-MouseJack-…
[ref 2] อุปกรณ์ที่โดนผลกระทบ https://www.bastille.net/…/vulne…/mousejack/affected-devices
[ref 3] โปรแกรมอัพ firmware จาก logitech https://support.logitech.com/en_us/software/unifying
「arduino nrf24l01」的推薦目錄:
- 關於arduino nrf24l01 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的精選貼文
- 關於arduino nrf24l01 在 網路上nRF24L01的教學不少,這篇是傑... - 傑森創工 - Facebook 的評價
- 關於arduino nrf24l01 在 【DIY無限實驗室】強!Nrf24l01 無線電測試(Arduino 的評價
- 關於arduino nrf24l01 在 nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino 的評價
- 關於arduino nrf24l01 在 Not receiving data from NRF24L01 - Arduino Stack Exchange 的評價
- 關於arduino nrf24l01 在 Arduino NRF24l01 RC sends nothing - Stack Overflow 的評價
- 關於arduino nrf24l01 在 Optimized high speed nRF24L01+ driver class documentation 的評價
- 關於arduino nrf24l01 在 12 ideas de NRF24L01 | arduino, electrónica, proyectos de ... 的評價
arduino nrf24l01 在 nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino 的推薦與評價
OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry Pi/Linux Devices - GitHub - nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry ... ... <看更多>
arduino nrf24l01 在 網路上nRF24L01的教學不少,這篇是傑... - 傑森創工 - Facebook 的推薦與評價
In this Arduino tutorial we will learn how to make a wireless communication between two Arduino boards using the NRF24L01 transceiver module. ... <看更多>