- ทำรีเวิร์สเอนจิเนียริง อุปกรณ์สมาร์ตโฮมที่ใช้ ESP32 และผสานเข้ากับ Home Assistant
- วิเคราะห์ แอปมือถือ และยืนยันการเชื่อมต่อกับ เซิร์ฟเวอร์คลาวด์
- ดักจับ ทราฟฟิกเครือข่าย เพื่อพยายาม ควบคุมอุปกรณ์
- ดัมพ์และวิเคราะห์ แฟลช ESP32 เพื่อพยายาม แก้ไขเฟิร์มแวร์
- วิเคราะห์ โครงสร้างแพ็กเก็ต เพื่อทำความเข้าใจ การเข้ารหัสและเช็กซัม
บทนำ
- ช่วงนี้กำลังพยายามเชื่อมต่ออุปกรณ์ทั้งหมดเข้ากับ Home Assistant
- มี เครื่องฟอกอากาศ รุ่นหนึ่งที่เชื่อมต่อได้เฉพาะผ่านแอปของตัวเอง จึงพยายามแฮ็กเพื่อผสานรวมเข้าไป
- ชี้ให้เห็นปัญหาของผลิตภัณฑ์ที่พึ่งพา การเชื่อมต่ออินเทอร์เน็ต และ บัญชีคลาวด์
แผนการ
- ยืนยันว่า แอปมือถือ เชื่อมต่อกับเซิร์ฟเวอร์คลาวด์และสามารถควบคุมจากระยะไกลได้
- มองหาวิธีดักจับ ทราฟฟิกเครือข่าย เพื่อควบคุมอุปกรณ์
การวิเคราะห์แอปมือถือ
- วิเคราะห์ แอป Android และยืนยันว่าพัฒนาด้วย React Native
- พบว่ามีการเชื่อมต่อกับเซิร์ฟเวอร์คลาวด์ผ่าน WebSocket
การตรวจสอบเครือข่าย
- ใช้ Pi-hole เพื่อตรวจสอบ DNS query และวิเคราะห์ทราฟฟิกด้วย Wireshark
- ยืนยันการสื่อสารระหว่างอุปกรณ์กับเซิร์ฟเวอร์ผ่าน แพ็กเก็ต UDP
การวิเคราะห์แพ็กเก็ต
- ใช้ UDP proxy เพื่อรีเลย์ทราฟฟิกระหว่างอุปกรณ์กับเซิร์ฟเวอร์คลาวด์
- วิเคราะห์โครงสร้างแพ็กเก็ตผ่าน Wireshark และยืนยันความเป็นไปได้ของ การเข้ารหัส
การถอดแยกทางกายภาพ
- ถอดแยกอุปกรณ์ที่ใช้ ESP32 และดัมพ์เฟิร์มแวร์จาก ชิปแฟลช
- ใช้ esptool อ่านข้อมูลผ่าน การเชื่อมต่อแบบซีเรียล
การวิเคราะห์แฟลช
- ใช้ esp32knife วิเคราะห์ข้อมูลแฟลชและตรวจสอบ ตารางพาร์ทิชัน
- พบไฟล์สำคัญใน ระบบไฟล์ FAT
การวิเคราะห์สถิติเบื้องต้น
- ใช้ Ghidra วิเคราะห์สตริงในเฟิร์มแวร์และยืนยันการใช้ ไลบรารีเข้ารหัส
- ใช้ไลบรารี mbedtls เพื่อทำงานตามอัลกอริทึม ECDH และ HKDF
การแก้ไขเฟิร์มแวร์
- ใช้ Ghidra ปิดใช้งานฟังก์ชัน CapSense และ แก้ไขเฟิร์มแวร์ จนบูตอุปกรณ์ได้
- แก้ปัญหา เช็กซัม และแฟลชเฟิร์มแวร์ที่แก้ไขแล้วได้สำเร็จ
เฮดเดอร์ของแพ็กเก็ต
- วิเคราะห์โครงสร้างของ เฮดเดอร์แพ็กเก็ต และยืนยัน หมายเลขซีเรียล กับ ตัวระบุข้อความ
- ทำความเข้าใจรูปแบบของ คำขอจากไคลเอนต์ และ การตอบกลับจากเซิร์ฟเวอร์
เช็กซัมของแพ็กเก็ต
- ตรวจสอบ CRC checksum เพื่อยืนยันความถูกต้องครบถ้วนของข้อมูลแพ็กเก็ต
1 ความคิดเห็น
ความเห็นจาก Hacker News
ทางออกระยะยาวคือไม่ซื้อผลิตภัณฑ์ใช้ในบ้านที่เพิกเฉยต่อการควบคุมภายในเครือข่ายท้องถิ่น
เครื่องฟอกอากาศที่เพิ่มการทำงานเมื่อคุณภาพอากาศภายในแย่ลง ไม่จำเป็นต้องมีอุปกรณ์ IoT, แอป, การสื่อสารไร้สาย หรือฮับ
ถึงผู้ขายอุปกรณ์ IoT ที่ใช้ ESP32:
ถึงเจ้าของอุปกรณ์ IoT ที่ใช้ ESP32:
สงสัยว่าจะสามารถไล่ดูได้หรือไม่ว่าพินใดบนบอร์ดของอุปกรณ์ถูกเชื่อมต่ออยู่บ้าง แล้วแฟลชใหม่ทั้งหมดด้วย ESPHome พร้อมเขียนการตั้งค่า yaml แบบกำหนดเองได้หรือไม่
ทุกครั้งที่อยู่ในทีมออกแบบอุปกรณ์ IoT จะมีวิศวกรที่เน้นด้านความปลอดภัยดูแลการป้องกันบูต
ข้อเสนอแนะต่อบทความ:
สงสัยว่าทำไมถึงไม่ใช้โซลูชันที่เป็นมาตรฐาน
ไม่ค่อยพบการใช้การเข้ารหัสเฟิร์มแวร์ในอุปกรณ์ IoT ที่ใช้ ESP32
ความเห็นเกี่ยวกับการที่วิศวกรฝ่ายบริการตัดสินใจไม่ใช้โปรโตคอลมาตรฐานอย่าง DTLS
คนที่ใช้อุปกรณ์อัจฉริยะควรใช้ DD-WRT, OpenWrt, Tomato, Asuswrt-Merlin เพื่อแยกอุปกรณ์ไปไว้ใน VLAN ที่ถูกกักจากเครือข่ายส่วนตัว
ไม่ควรต้องแฮ็กผลิตภัณฑ์ที่ซื้อมาเพื่อจะใช้งานมันได้