萌えハッカーニュースリーダー

2025/06/15 20:39 Reverse Engineering Hanwha Security Camera Firmware File Decryption with Ida Pro

出典: https://brownfinesecurity.com/blog/hanwha-firmware-file-decryption/
hakase
博士

やあ、ロボ子。今日もITニュースについておしゃべりするのじゃ。

roboko
ロボ子

はい、博士。今日はどんな話題でしょうか?

hakase
博士

今日はHanwha製のIoTセキュリティカメラのセキュリティ監査についての記事を見つけたぞ。なかなか興味深い内容じゃ。

roboko
ロボ子

IoTデバイスのセキュリティ監査ですか。具体的にはどのようなことを行ったのでしょう?

hakase
博士

記事によると、まずデバイスを分解してUARTコンソールをトレースしたらしいのじゃ。そして、BGA NANDフラッシュチップからファームウェアをダンプしたそうじゃ。

roboko
ロボ子

ファームウェアのダンプですか。そこからどのように分析を進めたのでしょうか?

hakase
博士

なんと、Hanwhaのウェブサイトからダウンロードしたファームウェアファイルは、OpenSSLで暗号化されていたらしいのじゃ!ファイルヘッダーに "Salted__" という文字列があったから、すぐに気づいたそうじゃ。

roboko
ロボ子

なるほど、暗号化されていたのですね。どのようにして暗号化を解除したのでしょうか?

hakase
博士

そこが面白いところじゃ!ファームウェア内に暗号化パスワードが含まれていると仮定して、ファームウェアダンプを分析したらしいのじゃ。そして、"openssl enc -aes-256-cbc -d -k" という文字列と、fwupgraderの言及を発見したそうじゃ。

roboko
ロボ子

ファームウェアの中に暗号化に関する情報が残されていたのですね。

hakase
博士

"decryption" という文字列の分析から、"MODELINFO_MODEL_DECRYPTIONKEY" が参照されていることも発見したそうじゃ。ここからが腕の見せ所じゃな。

roboko
ロボ子

MODELINFO_MODEL_DECRYPTIONKEYですか。それが暗号化キーに関連しているのですね。

hakase
博士

その通り!UARTログから得られたパーティションテーブルのアドレスを使って、ddコマンドでファームウェアファイルを分割し、Binwalkを使ってパーティション8からELFバイナリを抽出したそうじゃ。

roboko
ロボ子

ELFバイナリを抽出して、さらに解析を進めたのですね。

hakase
博士

IDA Proを使ってバイナリを解析したところ、decrypt_imageFile 関数内で get_modelStr 関数が呼び出されていることを確認したそうじゃ。そして、get_modelStr 関数は MODELINFO_MODEL_DECRYPTIONKEY を参照していることも分かったのじゃ。

roboko
ロボ子

MODELINFO_MODEL_DECRYPTIONKEYの値が暗号化されている可能性に気づいたのですね。

hakase
博士

さすがロボ子、飲み込みが早い!さらに、get_featureData 関数がグローバル変数 unk_B6B250 を参照していることを発見し、replace_featureData 関数が decrypt_modelfeature 関数を呼び出していることも突き止めたそうじゃ。

roboko
ロボ子

decrypt_modelfeature関数の中で、何かわかりやすい文字列は見つかりましたか?

hakase
博士

なんと、"zeppelin" という文字列がハッシュ化されていることを特定したそうじゃ!ハッシュ関数はSHA256で、暗号化方式はAES-256-CFB8だったのじゃ。

roboko
ロボ子

zeppelinのSHA256ハッシュをAESキーとして使用して、暗号化されたパスフレーズを復号したのですね。

hakase
博士

その通り!そして、復号されたパスフレーズを使ってファームウェアファイルを復号したところ、パスフレーズ "HTWXNF-8010R" が正しいことを確認できたそうじゃ。

roboko
ロボ子

お見事です!

hakase
博士

さらに驚くべきことに、ファームウェアの暗号化パスフレーズがデバイスのモデル番号に基づいていることを発見したそうじゃ!別のデバイス (WiseNet TNO-L4040TR) のファームウェアファイルで仮説を検証したところ、パスフレーズ "HTWTNO-L4040TR" が正しいことを確認できたそうじゃ。

roboko
ロボ子

モデル名から推測できるパスワードを使っていたとは、セキュリティ的には問題ですね。

hakase
博士

まさにその通り!ハードコードされたパスワードや暗号化スキームは、リバースエンジニアリングによって解読される可能性があるということを改めて示した事例じゃな。

roboko
ロボ子

今回の件から、IoTデバイスのセキュリティ対策について、どのような教訓が得られますか?

hakase
博士

まず、暗号化は必須だが、鍵の管理方法が非常に重要だということじゃ。モデル名から推測できるようなパスワードは絶対に避けるべきじゃな。そして、ファームウェアのアップデート機構も、セキュリティを考慮して設計する必要があるぞ。

roboko
ロボ子

はい、承知いたしました。私も今後の開発で活かしていきたいと思います。

hakase
博士

ところでロボ子、今日の晩御飯は何が良いかのじゃ?

roboko
ロボ子

そうですね、たまには趣向を変えて、セキュリティが強固なレストランの料理はいかがでしょうか?

hakase
博士

セキュリティが強固なレストラン?それは一体どんなレストランなのじゃ?

roboko
ロボ子

ハッカーが侵入できない、鉄壁のセキュリティで守られたレストランです!…って、そんなものありませんね。冗談です。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search