- ESP32ベースのスマートホーム機器をリバースエンジニアリングして Home Assistant と統合
- モバイルアプリを分析し、クラウドサーバーとの接続を確認
- ネットワークトラフィックを傍受して 機器制御 を試行
- ESP32フラッシュをダンプして分析し、ファームウェア改変を試行
- パケット構造を分析して 暗号化とチェックサム を理解
紹介
- 最近、すべての機器を Home Assistant に接続しようとしている
- 特定の 空気清浄機 が独自アプリ以外では接続できないため、これをハックして統合しようとしている
- インターネット接続 と クラウドアカウント に依存する製品の問題点を指摘
計画
- モバイルアプリ がクラウドサーバーに接続されており、リモート制御が可能であることを確認
- ネットワークトラフィックを傍受して機器を制御できる方法を模索
モバイルアプリ分析
- Androidアプリを分析し、React Native で開発されていることを確認
- WebSocket を通じてクラウドサーバーに接続されていることを発見
ネットワーク検査
- Pi-hole を使って DNSクエリ を確認し、Wireshark でトラフィックを分析
- UDPパケット を通じて機器とサーバー間の通信を確認
パケット分析
- UDPプロキシ を使って機器とクラウドサーバー間のトラフィックを中継
- Wireshark を通じてパケット構造を分析し、暗号化 の可能性を確認
物理的分解
- ESP32 ベースの機器を分解し、フラッシュチップ からファームウェアをダンプ
- esptool を使って シリアル接続 でデータを読み出し
フラッシュ分析
- esp32knife を使ってフラッシュデータを分析し、パーティションテーブル を確認
- FATファイルシステム で重要なファイルを発見
初期静的解析
- Ghidra を使ってファームウェアの文字列を分析し、暗号化ライブラリ の使用を確認
- mbedtls ライブラリを使って ECDH および HKDF アルゴリズムを実装
ファームウェア改変
- Ghidra を通じて CapSense 機能を無効化し、ファームウェアを改変 して機器を起動
- チェックサム の問題を解決し、改変したファームウェアのフラッシュに成功
パケットヘッダー
- パケットヘッダー の構造を分析し、シリアル番号 と メッセージ識別子 を確認
- クライアント要求 と サーバー応答 のパターンを把握
パケットチェックサム
- CRCチェックサム を確認し、パケットデータの完全性を検証
1件のコメント
Hacker Newsの意見
長期的な解決策は、ローカル制御を無視する家庭向け製品を買わないこと
空気清浄機が室内の空気質が悪化したときに動作を強めるのに、IoT機器、アプリ、無線通信、ハブは必要ない
ESP32ベースのIoT機器の販売者へ:
ESP32ベースのIoT機器の所有者へ:
機器のボードでどのピンが接続されているかを把握し、ESPHomeで完全にフラッシュしてカスタムyaml構成を書けるのか気になる
IoT機器の設計チームにいるたびに、セキュリティ重視のエンジニアがブート保護を担当していた
記事へのフィードバック:
標準化されたソリューションを使わなかった理由が気になる
ESP32 IoT機器でファームウェア暗号化が使われている例はほとんど見たことがない
サービスエンジニアがDTLSのような標準プロトコルを実装しないと決めたことについての意見
スマート機器を使う人は、DD-WRT、OpenWrt、Tomato、Asuswrt-Merlinを使って、機器を個人ネットワークから分離したVLANに隔離すべき
購入した製品を使うためにハッキングが必要であってはならない