こんにちは、技術部の手島です。
弊社では、脆弱性診断サービスの1つとして組み込み機器診断を行っていますが、その作業の一つとして記憶媒体からファームウェアを読み出す作業があります。この目的で弊社ではデータ復旧装置を保有しており、技能維持トレーニングを行っている様子を紹介します。
今回はなにするの?
データ復旧の技能維持トレーニングとして、NANDフラッシュメモリを使用した記憶媒体を破棄する際に、データ消去が不適切な場合には残ったデータがどう見えるのか、実際にUSBメモリを用いて検証してみます。

このようにNANDコントローラが破損・破壊されたという前提で、USBメモリをデータ復旧させます。この状態で生存しているのは裏側のNANDフラッシュメモリのみです。

準備
実験台として、秋葉原で8GBの容量のUSBメモリをいくつか購入しました。今回は、予め内容が分かっているファイルをUSBメモリに保存し、Windows OSのフォーマット機能である「クイックフォーマット」と「(通常の)フォーマット」を行い、
- ファイルシステム上のファイル有無
- フラッシュメモリ上の残存
- データ復旧の可否
を検証していきます。
なお、今回は私のデータ復旧トレーニングを兼ねているため、あえてddコマンド等ではなく、NANDコントローラが破損しているという前提で読み出しとデータ復旧をしています。

こちらが書き込んだファイル類と書き込み先のフォルダです。USBメモリには、MP3形式の音楽ファイル、PDFファイル、Microsoft Office系のWord、Excel用のファイル、JPG形式の画像ファイルを各5つ程度保存しました。フォルダ名もあえて分かりやすく番号を振って命名しています。
各ファイルは、音楽ファイルは甘茶の音楽工房様、PDF、Excelファイルは経済産業省の資源・エネルギー統計、Wordファイルは警視庁の車庫証明申請書等を利用させていただきました。お礼を申し上げます。
甘茶の音楽工房
https://amachamusic.chagasi.com/
資源・エネルギー統計等 経済産業省
https://www.enecho.meti.go.jp/statistics/petroleum_and_lpgas/oil_general/
保管場所証明申請手続 警視庁
https://www.keishicho.metro.tokyo.lg.jp/tetsuzuki/kotsu/hokan/syako_tetsuzuki/jidousha_syomei.html

ファイルを保存したので、1つ目のUSBメモリをクイックフォーマットします。クイックフォーマットは2秒足らずで終わります。これでひとまず準備は終わりました。
1: クイックフォーマットしたUSBメモリのデータ復旧


早速USBメモリを解体して基板のみを取り出し、搭載されているICの役割を写真に記載しました。この基板は、NANDフラッシュメモリを2個搭載することができるようです。これは私の憶測ですが、NANDフラッシュメモリ1枚のみ搭載した低価格品から大容量のハイエンド品まで対応できることを狙った設計でしょうか。
NANDコントローラはPHISON社のPS2251-07、NANDフラッシュメモリは刻印からはメーカーと型番が分かりませんでした。NANDフラッシュメモリには固有のIDを返答する仕組みが備わっているため、データ復旧装置から「お前誰やねん」と聞くと、「ワシは ○○社製の ▲▲やで」と教えてくれますので、NANDフラッシュメモリはメーカーが分からなくても問題ありません。

試しに読み取り装置にかけてみると、このNANDフラッシュメモリは東芝製の TC58TEG6DDJTA00 とのことです。パッケージに刻印が無いため、NANDフラッシュメモリが返答してきた型番(デバイスID)が本当に正しいのかは不明です。型番と合致しているか判定するためには、パッケージをレーザーなどで開封し、ダイを露出させ、信頼できる仕入元から入手した正規品と比較しなければ分かりません。パッケージ表面に東芝メモリの刻印が無い理由も不明です。このNANDフラッシュメモリはどのような流通経路を辿ってきたのでしょうね。
不思議なNANDフラッシュメモリは今回の本質ではないので、気にせずデータ復旧に取り掛かりましょう。

NANDフラッシュメモリ内のデータをイメージとして俯瞰して見ると、一部に何かが残っているように見えますが、ファイルヘッダ等には見えません。調査をしてみると、このNANDコントローラはデータを特定のパターンでXORしながら、複数のブロックの、複数のページへ、並列に書き込むことが分かり、段々とファイルの一部が復元できるようになってきました。

途中のデータ内から「Microsoft Office Word」の文字が見えました。データ復旧装置での作業は省略しますが、このように少しずつ手順を踏んでファイルを復元していきます。この後、NANDコントローラがNANDフラッシュメモリにどう書き込むのか判明したため、復旧が完了しました。ファイルシステムを復元します。

ファイルシステム上ではファイルが残っていないように見え、これはクイックフォーマットによるものです。本当にデータは消えているのでしょうか。ファイルシステムのFATに頼らず、フラッシュメモリ全体を調査したのが以下の画面です。


ファイルが残存していることが分かります。クイックフォーマットでは、FATテーブルが削除されただけです。NANDフラッシュメモリ全体からデータが残っていないか探すと、先ほど保存したデータが全て復元できました。
厚い本に例えると、本文であるファイルをどこに書いたのか記録した「目次」がFATテーブルであり、クイックフォーマットは目次を白紙にしただけです。ファイルが消えているように見えるのは目次が白紙になっているためで、本をめくり続けると本文が読める、というような感覚です。記憶媒体を廃棄する際、クイックフォーマットだけだとデータ消去としては不適切なのが分かりますね。
1:クイックフォーマットしたUSBメモリのまとめ
- ファイルシステム上のファイル有無:無し
- フラッシュメモリ上の残存:あり
- データ復旧の可否:可能
FATテーブルが削除されただけであり、フラッシュメモリ上にデータは残っている。
2: 通常のフォーマットをしたUSBメモリ データ復旧
では、クイックフォーマットではない通常のフォーマットではどうでしょうか。Windowsが行う通常のフォーマットは、全て 0 を書き込むそうです。

先ほどと同様にファイルをUSBメモリに保存し、「クイックフォーマット」のチェックを外してフォーマットします。完了するまで約4分半かかりました。先ほどと同様にNANDフラッシュメモリを取り外し、中身を確認していきます。

同じようにデータ復旧しますが、何のファイルも見つかりません。あるのはマスターブートレコードのみです。

イメージにして俯瞰しても先ほどと違って真っ白です。データは何も残っておらず、ずっと 0 が書き込まれています。クイックではない通常のフォーマットでは、目次のFATテーブルも本文も全て白紙にしていることが分かりました。
2:通常のフォーマットをしたUSBメモリのまとめ
- ファイルシステム上のファイル有無:無し
- フラッシュメモリ上の残存:無し
- データ復旧の可否:不可能
FATテーブル、MBR、バッドブロックを除いたフラッシュメモリ全体に渡って0が書き込まれており、データは残っていない。
まとめ
今回の検証で、読んでいただいた方に「クイックフォーマットではデータは残る」ということが伝わればうれしいです。記憶媒体を廃棄する際は、データの消去方式にはいくつか方法がありますが、少なくともクイックフォーマットではない「通常のフォーマット」はある程度の効果がありそうです。(本表現は効果の保証をするものではありません。適切な処理が求められる場合にはデータ消去の専門業者さんへご依頼下さい。)また、USBメモリ内のNANDフラッシュメモリを物理破壊することも効果的です。弊社の社内規定では、記憶媒体を廃棄する際にはデータの論理削除後に物理破壊することが必須と規定されています。
ICの物理破壊時も、どのICを破壊してもよいわけではなく、適切なICを確実に破壊しなければいけません。今回は下の写真のようにNANDコントローラが破壊された前提で行いましたが、これではデータ復旧が可能でしたね。

データはこちらのNANDフラッシュメモリに保存されているので、NANDコントローラではなくこちらを確実に破壊しなければいけません。

今回搭載されていたNANDフラッシュメモリはTSOP48という形状のものですが、他にもNANDフラッシュメモリには、ICのピンが出ていない表面実装品のBGA63等、いくつか形状違いのものがあります。

BGA63パッケージの例、写真はDigikey.comより
https://www.digikey.com/en/products/detail/kioxia-america-inc/TH58NYG2S3HBAI4/8638959
また、クイックフォーマットは使用するべきではないかというとそうではありません。NANDフラッシュメモリには書き込みできる回数の寿命があるため、不必要な書き込みを行わないクイックフォーマットには大きな利点があります。(私も普段使用しているUSBメモリ等はクイックフォーマットです。)
最後まで読んでいただきありがとうございました。