- Thực hiện reverse engineering thiết bị nhà thông minh dựa trên ESP32 và tích hợp với Home Assistant
- Phân tích ứng dụng di động để xác nhận kết nối với máy chủ đám mây
- Chặn lưu lượng mạng để thử điều khiển thiết bị
- Dump và phân tích flash ESP32 để thử chỉnh sửa firmware
- Phân tích cấu trúc gói tin để hiểu mã hóa và checksum
Giới thiệu
- Gần đây đang cố gắng kết nối mọi thiết bị vào Home Assistant
- Một máy lọc không khí cụ thể chỉ kết nối được bằng ứng dụng riêng, nên muốn hack nó để tích hợp
- Chỉ ra các vấn đề của sản phẩm phụ thuộc vào kết nối Internet và tài khoản đám mây
Kế hoạch
- Xác nhận rằng ứng dụng di động kết nối với máy chủ đám mây và cho phép điều khiển từ xa
- Tìm cách chặn lưu lượng mạng để có thể điều khiển thiết bị
Phân tích ứng dụng di động
- Phân tích ứng dụng Android và xác nhận nó được phát triển bằng React Native
- Phát hiện ứng dụng kết nối với máy chủ đám mây qua WebSocket
Kiểm tra mạng
- Dùng Pi-hole để kiểm tra truy vấn DNS và dùng Wireshark để phân tích lưu lượng
- Xác nhận giao tiếp giữa thiết bị và máy chủ qua gói UDP
Phân tích gói tin
- Dùng UDP proxy để chuyển tiếp lưu lượng giữa thiết bị và máy chủ đám mây
- Phân tích cấu trúc gói tin bằng Wireshark và xác nhận khả năng có mã hóa
Tháo rời phần cứng
- Tháo rời thiết bị dựa trên ESP32 và dump firmware từ chip flash
- Dùng esptool để đọc dữ liệu qua kết nối serial
Phân tích flash
- Dùng esp32knife để phân tích dữ liệu flash và kiểm tra bảng phân vùng
- Phát hiện các tệp quan trọng trong hệ thống tệp FAT
Phân tích tĩnh ban đầu
- Dùng Ghidra để phân tích các chuỗi trong firmware và xác nhận việc sử dụng thư viện mã hóa
- Triển khai các thuật toán ECDH và HKDF bằng thư viện mbedtls
Chỉnh sửa firmware
- Dùng Ghidra để vô hiệu hóa tính năng CapSense và chỉnh sửa firmware để khởi động thiết bị
- Giải quyết vấn đề checksum để flash thành công firmware đã chỉnh sửa
Header gói tin
- Phân tích cấu trúc của header gói tin để xác định số serial và định danh thông điệp
- Nắm được mẫu của yêu cầu từ client và phản hồi từ server
Checksum gói tin
- Xác nhận checksum CRC để kiểm tra tính toàn vẹn của dữ liệu gói tin
1 bình luận
Ý kiến trên Hacker News
Giải pháp lâu dài là không mua các sản phẩm gia dụng phớt lờ khả năng điều khiển cục bộ
Việc máy lọc không khí tăng cường hoạt động khi chất lượng không khí trong nhà giảm xuống không cần thiết bị IoT, app, kết nối không dây hay hub
Gửi tới người bán thiết bị IoT dựa trên ESP32:
Gửi tới người sở hữu thiết bị IoT dựa trên ESP32:
Tò mò liệu có thể xác định chân nào được nối trên bo mạch của thiết bị, flash hoàn toàn bằng ESPHome và viết cấu hình yaml tùy chỉnh hay không
Mỗi khi tham gia nhóm thiết kế thiết bị IoT, kỹ sư tập trung vào bảo mật luôn phụ trách bảo vệ khởi động
Phản hồi về bài viết:
Tò mò vì sao họ không dùng một giải pháp tiêu chuẩn hóa
Hiếm khi thấy dùng mã hóa firmware trên các thiết bị IoT ESP32
Ý kiến về việc các kỹ sư dịch vụ quyết định không triển khai các giao thức tiêu chuẩn như DTLS
Những người dùng thiết bị thông minh nên dùng DD-WRT, OpenWrt, Tomato, Asuswrt-Merlin để cô lập thiết bị trong một VLAN tách biệt khỏi mạng riêng
Không nên phải hack mới dùng được sản phẩm mình đã mua