1 điểm bởi GN⁺ 2025-04-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 Internettà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 ECDHHKDF bằng thư viện mbedtls

Chỉnh sửa firmware

  • Dùng Ghidra để vô hiệu hóa tính năng CapSensechỉ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định danh thông điệp
  • Nắm được mẫu của yêu cầu từ clientphả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

 
GN⁺ 2025-04-16
Ý 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ộ

    • Nếu bắt buộc phải nhập mật khẩu Wi‑Fi thì sẽ trả lại sản phẩm
    • Nếu muốn đánh đổi bảo mật và quyền riêng tư thì đó là lựa chọn cá nhân, nhưng nên có tùy chọn từ chối mà không bị mất tính năng
    • Sẽ không mua camera chuông cửa không hỗ trợ RTSP
  • 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

    • Chỉ cần gắn cảm biến chất lượng không khí và một màn hình LCD nhỏ lên máy lọc để điều chỉnh cài đặt là đủ
    • Đèn hành lang tự động bật lên hoạt động mà không cần cloud, HomeAssist, Wi‑Fi, Zigbee, app hay thay pin
    • Trong 10 năm qua, hệ thống vẫn hoạt động ổn định ngay cả khi mạng bị sập
  • Gửi tới người bán thiết bị IoT dựa trên ESP32:

    • Việc nâng cấp thiết bị thông minh để tích hợp với hệ thống nhà thông minh không ảnh hưởng đến các instance khác hay dịch vụ cloud
    • Dữ liệu sản phẩm nhạy cảm được làm mờ hoặc xóa bỏ
  • Gửi tới người sở hữu thiết bị IoT dựa trên ESP32:

    • Việc tạo các dự án mã nguồn mở để loại bỏ cloud và debug sản phẩm nhà thông minh giúp học được rất nhiều khía cạnh kỹ thuật
    • Đã bỏ nhiều công sức để viết bài đăng này và rất mong nhận được phản hồi về cách trình bày
  • 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

    • Thật ngạc nhiên khi gần như không có khả năng kháng lại việc dump firmware rồi flash lại
    • Tò mò vì sao họ không dùng mã hóa flash
  • Phản hồi về bài viết:

    • Ghi chú về việc dùng khóa thiết bị nên nói rõ nhất là mỗi thiết bị có một khóa riêng
    • Muốn chia sẻ phản hồi về độ phức tạp và rủi ro trong việc quản lý khóa riêng cho từng thiết bị
    • Mã hóa thiết bị có thể gây ra rất nhiều vấn đề tại nhà máy, và nếu sản phẩm chịu được thì tốt hơn là bỏ qua
  • Tò mò vì sao họ không dùng một giải pháp tiêu chuẩn hóa

    • Có vẻ sẽ hiệu quả chi phí hơn so với việc tự xây một giải pháp riêng
  • Hiếm khi thấy dùng mã hóa firmware trên các thiết bị IoT ESP32

    • Nếu không thể đọc firmware thì hẳn sẽ khó tạo chứng chỉ hơn
    • Nhưng đồng thời điều đó cũng rất ấn tượng
  • Ý 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

    • Không chắc mỗi thiết bị có khóa riêng tư duy nhất hay không
    • Nếu mọi thiết bị cùng chia sẻ một khóa riêng tư của firmware thì chỉ cần đảo ngược một thiết bị là có thể thực hiện tấn công MITM lên các thiết bị khác
  • 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

    • Nền kinh tế "rent-seeking" nên bị quản lý hoặc cấm